如何“漂亮”地解决dota类游戏网络延迟同步?
生活随笔
收集整理的這篇文章主要介紹了
如何“漂亮”地解决dota类游戏网络延迟同步?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
主流的同步方案有兩種:幀同步和CS同步。
補充一個觀點:CS和幀同步其實各有有優缺點,并不是某一項方案一定能夠取代另一項方案,當游戲類型對實時性要求很高時(比如,實時格斗、體育競技類游戲(NBA2K)),幀同步可能就是唯一的方案了。
以下是解決方案
概念定義:
1、ArenaServer
?
- 戰斗核心邏輯及數據所在
- 不關心表現
- 由客戶端的輸入驅動運行
- CS同步架構里,這個部分是在服務器的
- 幀同步架構里,這個部分是在客戶端的
2、ArenaServer[預表現層]
?
- 戰斗的預表現層,一定在客戶端
- 對于一些需要本地預表現的邏輯,如行走。需要先在這里模擬實現。
- ArenaServer的真實數據反饋到預表現層后,會修改本地數據。
- ArenaClient只知道預表現層,并不知道真正的ArenaServer的存在。
- 所以,當游戲要改變同步方案時,Client層并不需要修改。
3、ArenaClient:ArenaInput+ArenaRender
?
- 負責客戶端輸入和渲染
- 只與預表現層交互
4、FrameServer
?
- 以每秒30次(假設)的頻率,手機靚號出售平臺收集各個客戶端上報上來的ClientInput。
- 組裝為FrameInput,廣播給各個客戶端。
- 即為幀同步的服務器所有邏輯
總結
以上是生活随笔為你收集整理的如何“漂亮”地解决dota类游戏网络延迟同步?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么我要用C写游戏 适合自己的才是最好
- 下一篇: Unity自定义角色控制器(一):碰撞检