1
我使用谷歌播放服務創建一個基於回合的多人遊戲。基本的邏輯就像一個玩家必須擲骰子並獲得步數的桌面遊戲。請求一個隨機數serversides
然而我面臨一個問題。我是否正確,這個號碼不能由於作弊而創建客戶端?如果是這樣,是否有任何可能的方式從api申請一個隨機數並與其他玩家同步?
問候。
我使用谷歌播放服務創建一個基於回合的多人遊戲。基本的邏輯就像一個玩家必須擲骰子並獲得步數的桌面遊戲。請求一個隨機數serversides
然而我面臨一個問題。我是否正確,這個號碼不能由於作弊而創建客戶端?如果是這樣,是否有任何可能的方式從api申請一個隨機數並與其他玩家同步?
問候。
遊戲創建者生成一個隨機種子,用於初始化java.util.Random(long seed)
的實例。
然後將此種子插入到遊戲數據中,以便其他客戶端可以看到它並初始化它們自己的Random
。這樣做,所有客戶端將生成相同的骰子卷序列,並且因爲Random
實現了Serializable
,所以您可以在程序運行之間序列化它。
在您的遊戲數據中,您需要顯示每個玩家在某種形式的循環緩衝區中所做的事情,以便每個客戶端都有機會滾動骰子並比較自己的結果並驗證沒有人作弊。
但是...我認爲,谷歌發揮應該照顧的東西在安全性方面的,檢查可執行文件的簽名和阻止改變的二進制文件,還沒有研究,但它將使意義,不是嗎?
問候。
基本上,在user3319531的意見中,對兩名球員使用相同的種子將產生相同的「隨機」卷序列...我不確定RNG是否以這種方式工作。 – lauriys
來自Javadoc:如果使用相同的種子創建Random的兩個實例,併爲每個實例調用相同的方法調用序列,則它們將生成並返回相同的數字序列。 – Olivaw
閱讀user3319531的anwser,這意味着我根本不需要考慮它,只需要使用一個普通的隨機數字? – user3307493