我正在通过 UDP 实现联网小行星。我打算将客户端发送的用户输入消息限制为状态更改。因此,仅当箭头或空格键上有向下或向上键时才发送消息。这将大大减少从客户端发送的数据包数量。
然而,现在我重新阅读了 Gaffers 关于网络物理的文章以及他关于使 UDP 消息可靠的更复杂的文章,我正在重新考虑。他说:
The key to making this input stream tolerant of packet loss and out of order delivery is the inclusion of a floating point time in seconds value with every input rpc sent. The server keeps track of the current time on the server and ignores any input received with a time value less than the current time. This effectively drops any input that is received out of order. Lost packets are ignored.
因此,它不关心数据包是否丢失。现在我认为指示按下键以将船向前推进的重要数据包可能会丢失,并且永远不会怨恨,从而破坏游戏。
因此,我是否正确地说客户端被迫发送更多常规(最多每次物理更新,每秒 50 次)实际键盘状态的转储,而不是状态更改以适应这种容忍数据包丢失的方案?或者有没有更高尚的方法?