【发布时间】:2018-09-08 20:26:46
【问题描述】:
我想知道在我的游戏中我应该如何处理 RPC 数据包的丢包。 例如,如果客户端正在向前移动,但一段时间后开始向左扫射,但扫射 RPC(MovingLeft) 由于丢包而被丢弃。 服务器仍然会认为玩家在前进,但是客户端预测会让玩家在按下'A'键后立即向左扫射。
您是否应该让客户端在过去一段时间内覆盖服务器权限?如果客户端正在修改服务器上的过去状态,这将如何影响服务器模拟?
【问题讨论】:
标签: networking rpc
我想知道在我的游戏中我应该如何处理 RPC 数据包的丢包。 例如,如果客户端正在向前移动,但一段时间后开始向左扫射,但扫射 RPC(MovingLeft) 由于丢包而被丢弃。 服务器仍然会认为玩家在前进,但是客户端预测会让玩家在按下'A'键后立即向左扫射。
您是否应该让客户端在过去一段时间内覆盖服务器权限?如果客户端正在修改服务器上的过去状态,这将如何影响服务器模拟?
【问题讨论】:
标签: networking rpc
大多数游戏都是这样做的,它们会在本地接受命令并像服务器接收到命令一样呈现它们,然后由开发者决定如何解决任何差异。
这是客户端渲染用户向左移动的游戏中“橡皮筋”的主要原因,但随后角色模型会跳回到根据服务“应该”在的位置。
您可以考虑的其他事情不是一次简单地使用单个操作调用您的服务器,而是使用带有时间戳的最近 3-5 个操作调用您的服务器。
您应该做的其他事情是不断更新您的服务器,无论是否执行了“新”操作:
【讨论】: