iT邦幫忙

2022 iThome 鐵人賽

DAY 28
0
自我挑戰組

遊戲中的冰山一角-網路連線系列 第 28

Day28-Unreal連線初學(13)-Character Movement Component(2)

  • 分享至 

  • xImage
  •  

接續昨天的內容,今天會深入探討CMC的幾個重點。

最重要的部分莫過於Server與Autonomous proxy這兩個是如何去溝通與執行邏輯,首先是Autonomous proxy在本地端要做的事

  • 創造PredictionData(預測資訊)
  • 接收伺服端的資訊
  • 紀錄與執行移動
  • 上傳資訊到伺服端

在預測資訊裡面會包含許多為了處理伺服端的資訊以及本地資訊如何執行的條件,當然最重要的移動資訊也包含其中,這些移動資訊會在記錄與執行的階段產生,同時也會包含從伺服端接收到的資訊,最後再將所有資訊上傳到伺服端。

在記錄與執行移動中有個重點是在執行移動的呼叫是ReplicateMoveToServer而不是直接呼叫PerformMovement,ReplicateMoveToServer有額外的邏輯會在執行移動的同時記錄下來並將資訊同步到伺服器。


當資訊上傳到伺服端後就要開始執行下列事項

  • 創造PredictionData(預測資訊)
  • 確認時間
  • 處理錯誤
  • 回傳修正資訊或是確認資訊

伺服端上面也會創造自己的預測資訊,但與本地不同的是伺服端上最重要的資訊是時間,幾乎所有的條件都是圍繞在時間上,先前也說過時間對於遊戲而言是極為重要的一環,將時間條件設定在伺服端上面就是為了確保在同樣的時間裡面大家能夠看到相同的畫面,所以伺服端會用時間再去模擬客戶端的資訊來對比其正確性,這樣也能有效的避免玩家在本地加速遊戲時間的作弊手段。

伺服端另一個重要的任務就是決定錯誤要如何處理,這邊指的錯誤是本地與伺服器不同步的問題,這裡可以設定例如在一定延遲下伺服器所做的修正檔案是否要回傳給本地端修正,也就是去過濾真正有用的修正資訊給本地端,這樣能夠去節省頻寬也能讓本地端的執行能順暢些。

過濾錯誤資訊的基本設定都寫在Basegame.ini檔案裡面,我們也能夠在DefaultGame.ini裡面去改變設定。

// Basegame.ini

[/Script/Engine.GameNetworkManager]
TotalNetBandwidth=32000
MaxDynamicBandwidth=7000
MinDynamicBandwidth=4000
MoveRepSize=42.0f
MAXPOSITIONERRORSQUARED=3.0f
MAXNEARZEROVELOCITYSQUARED=9.0f
CLIENTADJUSTUPDATECOST=180.0f
MAXCLIENTUPDATEINTERVAL=0.25f
MaxClientForcedUpdateDuration=1.0f
ServerForcedUpdateHitchThreshold=0.150f
ServerForcedUpdateHitchCooldown=0.100f
MaxMoveDeltaTime=0.125f
MaxClientSmoothingDeltaTime=0.50f
ClientNetSendMoveDeltaTime=0.0166
ClientNetSendMoveDeltaTimeThrottled=0.0222
ClientNetSendMoveDeltaTimeStationary=0.0166
ClientNetSendMoveThrottleAtNetSpeed=10000
ClientNetSendMoveThrottleOverPlayerCount=10
ClientAuthorativePosition=false
ClientErrorUpdateRateLimit=0.0f
bMovementTimeDiscrepancyDetection=false
bMovementTimeDiscrepancyResolution=false
MovementTimeDiscrepancyMaxTimeMargin=0.25f
MovementTimeDiscrepancyMinTimeMargin=-0.25f
MovementTimeDiscrepancyResolutionRate=1.0f
MovementTimeDiscrepancyDriftAllowance=0.0f
bMovementTimeDiscrepancyForceCorrectionsDuringResolution=false
bUseDistanceBasedRelevancy=true

上一篇
Day27-Unreal連線初學(12)-Character Movement Component
下一篇
Day29-Unreal連線初學(14)-相關工具與插件
系列文
遊戲中的冰山一角-網路連線30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言