Ank*_*rVj 6 c++ network-programming
我正在用c ++制作一个多人游戏:
客户只需从用户那里获取命令,计算其玩家的新位置并将其传达给服务器.服务器接受来自所有客户端的这种位置更新,并且每个客户端都广播相同的位置更新.在这种情况下,哪些参数应该确定连续更新之间的时间间隔(我不想要太多更新,因此阻塞了n/w).我在想,客户端中的最大ping应该是贡献参数之一.
其次,我如何确定客户端的ping /延迟?此论坛上的其他主题建议使用"原始套接字"或使用系统的ping命令并从文件中收集输出.这是否意味着使用类似的东西system('ping "client ip add" > file')或分叉和执行ping命令.
这个答案将取决于您所谈论的多人游戏类型。听起来你在谈论一款 MMO 类型的游戏。如果是这种情况,那么使用“临时通道”就有意义了,这基本上意味着客户端每秒可以生成多个移动数据包,但只有最近的移动数据包会发送到服务器。如果您使用这样的技术,那么您应该根据玩家在游戏中移动的速率来确定更新速率。通过这样做,您可以确保玩家不会穿过墙壁或过快地跑过触发器。
你的第二个问题我会使用 boost::asio 来设置一个服务,你的客户端可以通过发送一个简单的数据包来“ping”,然后该服务将一条消息发送回客户端,你可以确定获取该消息所需的时间数据包返回。
| 归档时间: |
|
| 查看次数: |
1969 次 |
| 最近记录: |