0

在多人在線遊戲中。如何保持變量的全局?我們正在開發一個在線遊戲,我們需要一個全局變量。將會有一個服務器和多個客戶端。我們可以保留一個靜態的,可由所有客戶端同步的公共變量。我們可以提出一些建議嗎?如何在java中創建一個全局變量

+1

你聽說過公共靜態? – aaronps

+1

@aaronps你讀過所有的問題嗎? –

+0

似乎我沒有讀完整個問題。 – aaronps

回答

4

如果您曾經遷移到集羣,那麼擁有基於堆的變量將會成爲一個問題,因爲它不會足夠全球化(每個節點將有單獨的副本)。

如果這不是問題,並且如果用「變量」表示一個簡單的東西就像一個String或Long,那麼最好的選擇是使用java.util.concurrent.Atomic*類。例如,

public static final AtomicLong id = new AtomicLong(); 

這樣做的最重要的優勢是它可以使用比較並交換和獲取和設置用原子方式更新,例如id.getAndIncrement();

0

服務器必須控制變量。

當客戶想要對該變量進行修改時,他們不會改變它,他們必須向服務器發送一條消息,告訴新的想要的值。服務器存儲它並向所有客戶端廣播一條消息,然後它們都用新值更新該變量。

當然,如果服務器本身修改,它只是廣播新值。

0

-public static final用於在Java中創建變量Global。

-但隨後volatile必須用於此,使得操作直接發生到所述存儲器和從存儲器直接讀取。

-最好是使用java.util.concurrent.Atomic中的類。

-您可以使用AtomicIntegerAtomicLongAtomicReference等....