在 java 中发送玩家数据的正确方法
Correct way of sending data of a player in java
我对使用 nitro-net 开发游戏有一些了解。
截至目前,我正在像这样发送播放器的数据:
- 玩家攻击
- 客户端向玩家攻击的服务器发送数据
- 服务器将此数据发送给所有其他连接的客户端
- 接收数据的客户端检查发送了什么动作 ex ("attack_left")
- if 语句检查发送了什么动作,然后客户端让播放器执行该动作的代码
这是处理将数据发送到服务器然后再发送到多个客户端的最佳方式吗?我应该只发送一个完整的玩家对象吗?
谢谢!
总的来说,是的。最好只发送您需要的数据。如果有很多其他玩家连接到服务器,发送整个角色的信息很快就会成为一个问题。
例如,如果你有10个玩家同时攻击,那么服务器从每个客户端接收到10个攻击命令。然后,服务器必须将这些攻击命令中的每一个发送到每个连接的 other 客户端。所以你最终得到服务器发出的 90 [10 x 9 = 90] 个命令。如果这些命令中的每一个都发送整个角色的信息,那很容易失控。
如果一次只有有限数量的玩家连接,您可以发送整个角色的信息,但您应该决定您的游戏要支持多少玩家。
我对使用 nitro-net 开发游戏有一些了解。 截至目前,我正在像这样发送播放器的数据:
- 玩家攻击
- 客户端向玩家攻击的服务器发送数据
- 服务器将此数据发送给所有其他连接的客户端
- 接收数据的客户端检查发送了什么动作 ex ("attack_left")
- if 语句检查发送了什么动作,然后客户端让播放器执行该动作的代码
这是处理将数据发送到服务器然后再发送到多个客户端的最佳方式吗?我应该只发送一个完整的玩家对象吗?
谢谢!
总的来说,是的。最好只发送您需要的数据。如果有很多其他玩家连接到服务器,发送整个角色的信息很快就会成为一个问题。
例如,如果你有10个玩家同时攻击,那么服务器从每个客户端接收到10个攻击命令。然后,服务器必须将这些攻击命令中的每一个发送到每个连接的 other 客户端。所以你最终得到服务器发出的 90 [10 x 9 = 90] 个命令。如果这些命令中的每一个都发送整个角色的信息,那很容易失控。
如果一次只有有限数量的玩家连接,您可以发送整个角色的信息,但您应该决定您的游戏要支持多少玩家。