networking - 如何在多人游戏关卡中处理多个玩家?

原文 标签 networking network-programming

我想编写一个游戏,其中许多玩家处于同一级别。假设它只是 2D,最多有 65,535 名玩家。将以下数据发送到客户端以获取有关关卡中一名玩家的信息:

8 Bytes - Player ID
8 Bytes - Player X Position
8 Bytes - Player Y Position
8 Bytes - Player Rotation

65,535 名玩家的 32 字节意味着关卡中每个玩家的一次更新需要 2,097,120 字节(约 2 MB)。如果以 30fps 发生这种情况,则需要 60MB/秒。那么我如何才能以较低的带宽使用率在一个级别处理这么多玩家呢?

谢谢

最佳答案

几件事:

1) 一般来说,并不是每个玩家都会同时看到其他玩家。您可以通过仅向一定距离内的玩家发送数据来优化这一点(可能比他们看到的要宽一些,以平滑视野边缘的移动。

2) 仅仅因为您的游戏以 30fps 运行并不意味着它需要从服务器接收 30 次更新/秒。您可以发送频率较低的更新并在其间插入帧。延迟将是可变的,因此您需要已经做一些事情。

3) 你只需要发送改变的信息,所以如果有更新,假设没有变化。也许偶尔(每 5 秒或其他时间)发送完整的可见数据集,无论是否发生更改以解决丢失的数据包,但只有在您开始看到问题时才这样做。

关于networking - 如何在多人游戏关卡中处理多个玩家?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12229702/

相关文章:

c# - 使用 C# 进行 Actionscript 3.0 网络编程

sockets - Winsock 阻塞套接字,多线程死锁

python - 如何在每个可能的数据包中测试网络丢失情况下的服务器行为

c++ - 在 C/Unix 中监听 IP 子网的套接字

java - 有没有办法以编程方式检查android上的端口是否打开?

python - 序列化 ctype union

Ubuntu:无法使用 NAT 连接到主机的互联网连接

java - 如何将所有域托管在同一服务器上

java - 如何使用Java获取远程主机的IP地址

python - 在机器人框架中记录 HTML 请求