如何“漂亮”地解决dota类游戏网络延迟同步?

本文探讨了游戏开发中两种主要的同步方案——帧同步和CS同步。帧同步适合实时性要求高的游戏,如格斗、体育竞技类,因为它确保所有客户端在同一帧进行操作。而CS同步则将战斗核心逻辑放在服务器,适用于不同实时性需求的游戏。预表现层在客户端,允许本地逻辑预处理。当切换同步方案时,客户端层无需改动。FrameServer负责收集客户端输入并广播帧数据,实现帧同步的服务器逻辑。
摘要由CSDN通过智能技术生成


主流的同步方案有两种:帧同步和CS同步。

补充一个观点:CS和帧同步其实各有有优缺点,并不是某一项方案一定能够取代另一项方案,当游戏类型对实时性要求很高时(比如,实时格斗、体育竞技类游戏(NBA2K)),帧同步可能就是唯一的方案了。

以下是解决方案

概念定义:

1、ArenaServer
 

  • 战斗核心逻辑及数据所在
  • 不关心表现
  • 由客户端的输入驱动运行
  • CS同步架构里,这个部分是在服务器的
  • 帧同步架构里,这个部分是在客户端的


2、ArenaServer[预表现层]
 

  • 战斗的预表现层,一定在客户端
  • 对于一些需要本地预表现的逻辑,如行走。需要先在这里模拟实现。
  • ArenaServer的真实数据反馈到预表现层后,会修改本地数据。
  • ArenaClient只知道预表现层,并不知道真正的ArenaServer的存在。
  • 所以,当游戏要改变同步方案时,Client层并不需要修改。


3、ArenaClient:ArenaInput+ArenaRender
 

  • 负责客户端输入和渲染
  • 只与预表现层交互


4、FrameServer
 

  • 以每秒30次(假设)的频率,手机靓号出售平台收集各个客户端上报上来的ClientInput。
  • 组装为FrameInput,广播给各个客户端。
  • 即为帧同步的服务器所有逻辑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值