游戏网络?

jma*_*erx 4 c++ network-programming

我希望我的游戏完全是服务器端.意思是,客户端只发送他们的击键.然后,他们从服务器获得更改对象位置的更新.然后客户端每帧渲染一切.

这是一款2D游戏

我在考虑这样的事情:使用Box2D计算中间帧,并且不要试图预测服务器实际上将在哪里.

ServerPos - > ClientPos - > ServerPos - > ...

如果在某个时间我们没有得到一个数据包(丢弃或什么),那么我们只是模拟客户端上的下一帧.我们的想法是避免服务器总是纠正我们的立场.我们希望客户端填充中间内容,但不要尝试预测服务器的位置.

我们希望不惜一切代价避免将玩家向相反方向移动,因为客户端过度模拟,因此我们可以将结果向量乘以0.98这样的标量,这意味着客户端会比服务器略慢,并有助于确保平滑转换到服务器位置.

谢谢

Wol*_*lph 6

只是一个想法,但我认为你可能会忘记网络延迟.

假设您真的每秒发送数据60次以响应客户端发送的内容.比你的最大延迟可以1 second / 60 = 17ms.这对于任何互联网连接都是一个问题,因为您的应用程序必然会引入一些延迟.所以...如果你想要这样的东西工作,你必须有一个缓冲窗口来捕捉这个延迟.这将使它感觉不那么敏感.

大多数在线游戏都有一些预测算法,以防万一连接丢失/停止.

我认为这个想法很好,但在实践中它可能效果不好.

  • @Milo - 请记住:如果我们假设数据以光速传播,那么你在地球上从A到B的_longest_通信线路可以实现的_best_延迟是66ms,这是非常有限的! (2认同)