在多玩家在线游戏中。如何保持变量全球?我们正在开发一个在线游戏,需要一个全局变量。将有一台服务器和多个客户端。我们如何保留一个通用变量,该变量是所有客户端的静态且可编辑的。我们可以有一些建议吗?
如果您移至群集,则具有基于堆的变量将成为一个问题,因为它不会足够全球(每个节点都会有一个单独的副本)。
如果这不是问题,并且如果"变量",您的意思是像字符串或长时间这样的简单内容,那么最好的选择是使用java.util.concurrent.Atomic*
类。例如,
public static final AtomicLong id = new AtomicLong();
最重要的优点是,可以使用比较和划分和观察,例如id.getAndIncrement();
server 必须控制变量。
客户想对该变量进行修改时,他们不会更改它,他们必须向服务器发送消息,告诉新的通缉值。服务器将其存储并向所有客户端广播消息,然后他们都用新值更新该变量。
当然,如果服务器本身修改,它只是广播了新值。
- public static final
用于在Java中制作变量全局。
- ,但是必须将volatile
用于此,以便操作直接发生到内存并直接从内存中读取。
- 最好使用java.util.concurrent.Atomic
的类。
- 您可以使用AtomicInteger
,AtomicLong
,AtomicReference
等。