【求助】FPS游戏帧同步和状态同步混杂的情况下

发表于2019-08-22
评论3 6.2k浏览

目前用Unitiy开发一款FPS竞技游戏,所有的移动和操作都是谁发送,谁告知最新状态,并不是服务器计算状态,(不考虑作弊问题),按照测试出来的效果还算不错,打击感也挺强,比如A丢手雷,手雷被命名为M,这个消息由服务器转发给B,B也命名为M,A的主机中M身上绑定脚本不断发送M的最新状态,B收到后更新M的状态,形成轨迹,这样的状态同步,请问有什么问题吗,这么做比帧同步主要差在哪里,我知道这类游戏最好是帧同步,可是,要制作确定性的系统,非常困难,特别是物理引擎,不能使用UNITY自己携带的,而且项目也做了一大半了,各位有什么好的建议改进吗?

 

PS:

1.目前测试出来的效果还能算不错的,没有不适感,当然,局限于网速尚可情况下

2.完全改帧同步很麻烦,很难

3.所有的状态更新主要是由客户端计算完成并非服务器,服务器只做转发,针对Vector3等浮点数进行定点数操作后转发

 

 

 

 

这款游戏只是本人兴趣使然,并不是想商用类的,不过还是希望能按正确的路子去做一个能保证体验的游戏,游戏完成版,需要参与校内比赛,如果体验不好就GG了,麻烦大家给点建议,解答下小弟的困惑!

 

  • 允许他人重新传播作品,但他人重新传播时必须在所使用作品的正文开头的显著位置,注明用户的姓名、来源及其采用的知识共享协议,并与该作品在磨坊上的原发地址建立链接
  • 可对作品重新编排、修改、节选或者以作品为基础进行创作和发布
  • 不可将作品进行商业性使用
  • 需在以作品基础上创作的演绎作品上适用相同类型的知识共享许可条款

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

3个评论

  • 今天中午我吃土 2019-08-26 1楼
    我是策划,不是太懂,但是我记得状态同步在网络阻塞的情况下是有可能导致画面和结果不统一的吧,而且状态同步需要不断同步M的各种情况,耗流量大
  • lostsky 2019-09-12 2楼
    你这是属于自己算自己单位的结果。1,如果有非人类AI,谁负责算。 2,你的描述现在单位少,需要同步的状态数据很少,直接发送状态没问题。可单位多了都发送状态就不合适。 这两个问题恰是帧同步能解决的
  • 小虫子 2019-10-20 3楼
    状态同步的话,在100ms以内表现基本还行,但是你这样完全由客户端告知最大的问题主要有三点:1是作弊问题,这个很容易理解;2是速度问题,完全状态同步,在联机的时候,你同步到别人的客户端上,子弹速度特别快的情况下,你在看别人开枪的时候,枪口火光,子弹轨迹特效,受击位置和特效等都可能在不同客户端表现不一致;第三是流量压力问题,当客户端一多,FPS要设计比较宽远的地图,AOI设计范围必然很大,那么这么大范围敌人的各种信息你全部都要同步到客户端确认才行,客户端和服务端设计不合理的话流量会压爆。