囊括了前面所提到的全部概念並且再延伸應用的就是腳色裡面的移動物件(Character Movement Component,之後就簡稱為CMC),對於UE的腳色移動來說這是非常非常非常重要的一個物件,它裡面的設計都是以網路連線為基礎來設計,所以能夠簡單的就加進網路連線框架下。
今天最主要的主題是要利用移動物件來分析網路連線的更多細節並且思考怎麼設計一些概念類似於移動物件的東西。
首先我們打開腳色的基礎設定然後把網路更新頻率設定成1編譯儲存後實際執行看看,讀者會發現當我們在控制伺服端的角色時,客戶端會看到我們的腳色有時會跑得很遠突然瞬移回來,這裡面包含了Role與Prediction的概念,可以說CMC使用的概念就類似Rollback。
示範影片
在分析移動物件時就需要筆者在第18天稍微提到的Role來幫助理解Day18,首先是整體的執行流程
在本地(Autonomous proxy)接收玩家的輸入,計算並執行移動,最後將結果記錄下來同步到伺服端→伺服端接收到資訊再重新執行一次並檢查其正確性,若正確只回傳該移動正確,反之會回傳位置修正的資訊→本地(Autonomous proxy)若接收到修正資訊則會用修正資訊來調整在畫面上的最終位置,其餘本地(Simulated proxy)則直接同步伺服端傳來的位置資訊。
在其餘本地(Simulated proxy)裡面會有調整Smooth update的參數,這是為了預測功能所設置的變數,目的是為了讓最終結果能夠執行的較為乾淨,加上這點事實上UE所設計的移動物件真的非常像是Rollback,本地會直接執行結果之後再去跟伺服端要求正確答案,並且利用預測來輔助讓遊戲執行起來能夠順暢。
因此在專案中的發射子彈並不是個很好的設計方式,因為它會依賴到網路連線品質,好的方法要類似移動物件在本地要能夠瞬間執行再去與伺服端確認是否有正確的執行,這在需要即時做出反應的射擊遊戲中是非常重要的概念。