2018年4月20日 星期五

【Unity官方教學分享】測試多人連線的移動

網頁連結

為了測試多人連線的移動,我們必須再一次同時啟動兩個實例,從Unity編譯環境下執行的實例,會隨著接下來的教學內容做更新,但已經輸出成遊戲的那一方記得要重新建置一次。
  • 點擊File->Build Settings,選擇PC, Mac....,按下Build And Run輸出檔案並執行
  • 點擊LAN Host按鈕,以主機端身分開始遊戲

接著回到Unity編譯環境:
  • 執行Unity
  • 點擊LAN Client按鈕,以用戶端身分開始遊戲

這時在Hierchy視窗應該會看到兩個玩家物件,一個是主機端的玩家,定一個則是用戶端的玩家,它們都是由同一個物件複製後生成,所以名稱都為Player(clone)。
這時可以使用WASD移動用戶端和主機端的玩家物件,並查看兩邊的移動結果,應該可以發現,現在玩家物件的移動已經是同步狀態。

在測試移動的結果時,可能會發現非本地端的玩家物件,在移動時會有延遲的感覺,值得一提的是,所有連線的應用程式在一定程度上都會受到延遲的影響,而且經常受限於伺服器與用戶端之間的資料傳遞速度。

這裡我們有很多方法來優化資料傳輸造成的延遲,例如,NetworkTransform可以設定發送數值的頻率,藉由此調整可以讓結果較為同步,伺服器和用戶端之間的更新頻率會影響讓多人遊戲的體驗。
還有許多的方法可以彌補這些同步的差異,無論這些插示是來自更新頻率或延遲,這些解決方法包含內插、預測等,但這些在本教學並不會提到。

另外值得注意的是,同步和效能之間需要取得平衡,如果一個遊戲透過頻繁更新來保持同步,那麼遊戲的效能就會受到影響,但若更新的頻率太低,遊戲體驗就會變差。

多人連線遊戲在物理上不可能完美的同步,因為不管怎樣資料傳輸都需要時間,但即使在各個用戶端上結果略有不同,遊戲只要能達到一定程度的同步,還是可以給玩家最佳的遊戲體驗,這點將在其他教學中作介紹。

沒有留言:

張貼留言

【自製小遊戲】水平思考猜謎(海龜湯)

遊戲連結 海龜湯的玩法是由出題者提出一個難以理解的事件,參與猜題者可以提出任何問題以試圖縮小範圍並找出事件背後真正的原因。但出題者僅能以「是」、「不是」或「沒有關係」來回答問題。 本遊戲蒐集各種論壇、平台的42個題目,提供給想玩海龜湯卻愁找不到題目的你們。 ...