jma*_*erx 4 c++ network-programming
我希望我的游戏完全是服务器端.意思是,客户端只发送他们的击键.然后,他们从服务器获得更改对象位置的更新.然后客户端每帧渲染一切.
这是一款2D游戏
我在考虑这样的事情:使用Box2D计算中间帧,并且不要试图预测服务器实际上将在哪里.
ServerPos - > ClientPos - > ServerPos - > ...
如果在某个时间我们没有得到一个数据包(丢弃或什么),那么我们只是模拟客户端上的下一帧.我们的想法是避免服务器总是纠正我们的立场.我们希望客户端填充中间内容,但不要尝试预测服务器的位置.
我们希望不惜一切代价避免将玩家向相反方向移动,因为客户端过度模拟,因此我们可以将结果向量乘以0.98这样的标量,这意味着客户端会比服务器略慢,并有助于确保平滑转换到服务器位置.
谢谢
只是一个想法,但我认为你可能会忘记网络延迟.
假设您真的每秒发送数据60次以响应客户端发送的内容.比你的最大延迟可以1 second / 60 = 17ms.这对于任何互联网连接都是一个问题,因为您的应用程序必然会引入一些延迟.所以...如果你想要这样的东西工作,你必须有一个缓冲窗口来捕捉这个延迟.这将使它感觉不那么敏感.
大多数在线游戏都有一些预测算法,以防万一连接丢失/停止.
我认为这个想法很好,但在实践中它可能效果不好.