最近很是頭痛,怎么處理高效的時間同步,只有時間同步即時類游戲的決策才能正常使用。
最近找了NTP,PTP相關協議,但是怎么運用卻一點頭緒都沒有。
網上都是相關服務器等模塊的出售(廣告太多)
而且在游戲不能聯網的情況下,如何進行時間同步呢(聯網有公共事件同步服務器)。
uj5u.com熱心網友回復:
請各位大神不吝賜教
uj5u.com熱心網友回復:
在游戲開發程序中,會發現很多時候需要兩臺設備間時間同步進行的情況。一般情況下,兩臺設備間時間同步使用round trip latency (RTT)方式
假設有A,B兩臺設備。
A->B:發送A的系統時間 [1]
B->A:直接發送 [1]
在A中,A的系統時間減去[1]的時間就可以獲得RTT.
A->B:發送RTT[2]和A的現在時間[3]。
以上操作即可。
假設在B中想得到A的現在時間,計算方法是->A的現在時間=[3]-[2]/2.
NTP也與以上方式類似。
通過網路特征來看,因為RTT測定一次無法確定準確性,所以RTT的每次測定都會稍有偏差。
無線網路環境下,會發生更大的變化只有反復測定后取平均值才會更加準確。
想了解更多平詳情可參考 ProudNet www.Proudnet.com.cn 網站中提供了多種時間同步函式。
```
CNetClient.GetIndirectServerTimeMs
CNetClient.GetP2PServerTimeMs
CNetClient.GetServerTimeMs
```
ProudNet不僅僅是對服務器,還有P2P連接的其他客戶端獲取RTT的功能。
只需要運用CNetClient和CNetServer中的GetLastPing和GetRecentPing。
uj5u.com熱心網友回復:
已某臺服務器作為所有所有服務器的同步時間,其它的客戶端與他同步,而且,需要同步要求高的游戲,更多的是做幀同步而不是時間同步。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/71085.html
標籤:游戲策劃與運營
