我正在开发一款游戏,其中玩家根据他们在游戏世界中的位置在服务器之间切换,以在保持可扩展性的同时给人一种单一服务器的错觉。当玩家加入服务器时,他们的数据从数据库 (MongoDB) 加载,当他们退出或更改服务器时,他们的数据被保存。
我的问题来自于玩家数据从与玩家不同的服务器被修改的情况,这种情况需要偶尔发生。数据库中的数据已更改,但当玩家离开或更改服务器时,数据将被覆盖:
为了解决这个问题,我想只存储修改过的数据,因为通常你想要的数据是最近更改的。然而,当我试图找到这样做的方法时,我注意到缺乏这样做的案例。是否有充分的理由不这样做并使用另一种方法来确保修改后的数据不被覆盖?我能想到的唯一问题是数据一致性,其中字段被更新并且只有其中一些被覆盖,这可能会使播放器处于无效状态,通过同时更新所有相关字段可以很容易地避免这种情况。
如果有任何其他理由反对只选择一个对象或任何其他方法来解决这个问题,而不会引入任何重大问题,我很想听听他们。