今天試了很多用Mirror進行後續製作上不確定性的確認,多數是都沒有被確認到的。不過最重要的多個場景的架構的Client端和單一場景的Server端,藉由NetworkManager協助下,是可以連線的。反正其它不確定性的問題,也還在摸索中,就不急著在這裡記錄。接下來是從目前多場景的規劃上來思索如何有效的進行開發上的建置。
先從專案結構上來說,在Game Flow上,登入是自行一個場景,而準備時是另一個場景。實際進行連線遊玩的又是另一場景(Gameplay Scene)。在多數的時候,是可以只建置Gameplay Scene出來,並在Unity Editor也只從Gameplay Scene切入,不論哪一方要擔任Server或是Client都無所謂。這樣的開發是比較單純的,但要連接登入和改變玩家狀態的流程就比較複雜。
要建置執行檔時,撇開是Windows或是Linux平台。光是場景進入點就不同。Server端只有一個場景Gameplay Scene做為進入點,但Client端則有三個場景
也就是在建置時必需要大方法知道目前是Server Build還是Client Build,並在不同的Build改變不同的場景。今天用手動的方式自行改變場景的順序,但這是很沒有效率方法。最好是有個流程可以有效的進行不同的建置。目前了解有二個方向可以進行,一個是IPreprocessBuildWithReport
的使用,而另一個則是Unity新的Build Piepline。
看到Unity新的Build,就想直接來試試看Linux build是否可行,反正之後也一定是建置成Linux,就來試試看。在package.json裡先後放入
{
"com.unity.platforms.windows": "0.8.0-preview.7",
"com.unity.platforms.linux": "0.8.0-preview.7"
}
拿取到pcakge後利用Create產生Build asset,但沒有看到linux config,只有windows config,不知是bug還是要自行增加。就先產生windows config,再自行增加一個個build的子選項。
中間試著加了headless的選項,不果隨及想到Gameplay Scene要用UI操作才能進入到Server模式,headless跑起來後也一樣是會被卡住。
最後弄了二個Windows Config,一個只放Gamplay Scene用來做Game Server build而另一個則是全部的場景都放進來,當做是Game Client build。僅僅從改變場景這部份來說沒得挑剔,無痛的完成一鍵就可以建置。
解決了Windows build但一直找不到Linux Config,有可能是在Windows Unity Editor裡不能Build Linux,但可以build android的情況下說不過去。雖然還沒有到一定要建置出linux版本的階段,但可以早些確認也是不錯的。考量到到時GraphQL Server建置後,可能會一起用Docker Compose進行本地端正常流程的測試。這些天就再來找找看有沒有什麼相關的資料。
今天試了NetworkTransformChild,本來是想要依照不同的狀態換模型的樣貌,但不管放在什麼階段都不能成功的抽換,這部份也是之後要花時間解決的,要不然每個角色都看起來一樣,很無趣的。