Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js+;websocket-低带宽游戏实体ID_Javascript_Node.js_Websocket_Multiplayer_Uid - Fatal编程技术网

Javascript Node.js+;websocket-低带宽游戏实体ID

Javascript Node.js+;websocket-低带宽游戏实体ID,javascript,node.js,websocket,multiplayer,uid,Javascript,Node.js,Websocket,Multiplayer,Uid,在过去的几天里,我一直在制作一款游戏,目前正在优化websocket框架数据。我已经将数据类型从简单JSON更改为arraybuffer,这部分工作正常。位置和旋转等实体数据的发送和接收没有问题 问题在于实体ID。目前,客户机通过其ID跟踪每个实体,以存储平滑移动的最后位置,因此将继续。 服务器上的每个实体当前都有一个UUID(例如f2e9f5e2-a810-416e-a1ce-a300a0b7a088)。即16个字节。我不发送那个 现在是我的问题。他们如何在大型比赛中做到这一点?有没有办法绕过

在过去的几天里,我一直在制作一款游戏,目前正在优化websocket框架数据。我已经将数据类型从简单JSON更改为arraybuffer,这部分工作正常。位置和旋转等实体数据的发送和接收没有问题

问题在于实体
ID
。目前,客户机通过其
ID
跟踪每个实体,以存储平滑移动的最后位置,因此将继续。

服务器上的每个实体当前都有一个
UUID
(例如
f2e9f5e2-a810-416e-a1ce-a300a0b7a088
)。即16个字节。我不发送那个

现在是我的问题。他们如何在大型比赛中做到这一点?有没有办法绕过这个问题,或者用
UID
生成一个唯一的2字节或其他一些低频段

更新


我需要超过256个
ID
s,这意味着1个字节显然无法工作。2个字节给我65535
ID
s,这可能足够了。我还知道,迭代循环直到找到下一个可用ID是一种选择,但这可能太“昂贵”。

UUID只有16字节,而不是36字节。当然,只要不需要超过256个ID,就可以生成1字节的ID。您可以使用协议缓冲区,使用整数/长度而不是字符串,当然这取决于您需要多少ID。我需要超过256个ID,这显然不包括1字节。可能是2个字节,但我必须循环查看下一个可用id是哪个?@RobbyCornelissen,以及如何将存储在服务器上的UUID字符串转换为二进制16字节?您使用的是什么库?允许您直接在缓冲区中生成UUID。允许您在字符串和缓冲区之间进行转换。