為了測試多人連線的移動,我們必須再一次同時啟動兩個實例,從Unity編譯環境下執行的實例,會隨著接下來的教學內容做更新,但已經輸出成遊戲的那一方記得要重新建置一次。
- 點擊File->Build Settings,選擇PC, Mac....,按下Build And Run輸出檔案並執行
- 點擊LAN Host按鈕,以主機端身分開始遊戲
接著回到Unity編譯環境:
- 執行Unity
- 點擊LAN Client按鈕,以用戶端身分開始遊戲
這時在Hierchy視窗應該會看到兩個玩家物件,一個是主機端的玩家,定一個則是用戶端的玩家,它們都是由同一個物件複製後生成,所以名稱都為Player(clone)。
這時可以使用WASD移動用戶端和主機端的玩家物件,並查看兩邊的移動結果,應該可以發現,現在玩家物件的移動已經是同步狀態。
在測試移動的結果時,可能會發現非本地端的玩家物件,在移動時會有延遲的感覺,值得一提的是,所有連線的應用程式在一定程度上都會受到延遲的影響,而且經常受限於伺服器與用戶端之間的資料傳遞速度。
這裡我們有很多方法來優化資料傳輸造成的延遲,例如,NetworkTransform可以設定發送數值的頻率,藉由此調整可以讓結果較為同步,伺服器和用戶端之間的更新頻率會影響讓多人遊戲的體驗。
還有許多的方法可以彌補這些同步的差異,無論這些插示是來自更新頻率或延遲,這些解決方法包含內插、預測等,但這些在本教學並不會提到。
另外值得注意的是,同步和效能之間需要取得平衡,如果一個遊戲透過頻繁更新來保持同步,那麼遊戲的效能就會受到影響,但若更新的頻率太低,遊戲體驗就會變差。
多人連線遊戲在物理上不可能完美的同步,因為不管怎樣資料傳輸都需要時間,但即使在各個用戶端上結果略有不同,遊戲只要能達到一定程度的同步,還是可以給玩家最佳的遊戲體驗,這點將在其他教學中作介紹。
上一篇:連線時玩家物件的移動腳本
下一篇:識別本地玩家物件
沒有留言:
張貼留言