我正在创建一个多人游戏,我在javascript中有一个对象,有许多键和值。
此对象称为播放器,用于保存有关连接到游戏服务器的每个播放器的信息。
name
是对象的键,然后对象的值是Player
对象,其中包含x
,y
,{{1}等信息等等。
我不断向服务器发送请求以获取有关玩家的最新信息。
因为这种情况经常发生,所以我不希望每次都重置level
对象(players
),所以相反,我用任何来更新对象新的信息。
目前我正在检查players = {}
,如果是,我会像这样更新对象:
if name in players
否则,我只需创建一个新的players[name].x = x;
players[name].y = y;
// etc.
对象,并将其添加到Player
对象中。 (例如,如果连接了新玩家)
问题是,如果已经在players
中的玩家不再在服务器的更新信息中(即玩家已断开连接),我该如何从对象中删除它们。
是否需要循环播放players
,如果播放器不在更新的信息中,请将其从对象中删除,或者有更简单的方法吗?
如果没有别的办法,那么重置字典并添加数据是否更好?感觉这不是做这样简单事情的最好方法。
到目前为止,这是我的代码:
players
所有帮助表示赞赏!提前谢谢!
答案 0 :(得分:1)
因此,您可以选择从players
词典中删除过期数据,还是每次都从头开始重建?
我认为答案很大程度上取决于您拥有多少数据。如果你最多有20名球员,那可能并不重要。如果你有100万玩家,那就不一样了。
如果你想确定,最好的办法就是衡量它。尝试使用您希望能够处理的玩家数量最多的两种解决方案,并了解对性能的影响。
或者只使用最简单的实现,看看它是否足以满足您的需求。在您需要之前优化没有意义。
就个人而言,我只是循环浏览players
以删除过时的数据。如果表现不够好,那我就进行优化。