2010-09-08 66 views
1

是否有可能在兩臺不同機器上「同步」(缺少更好的詞)隨機數發生器?在兩臺機器上同步隨機數發生器

背景:我有一個適用於iOS的網絡多人遊戲的紙牌遊戲。兩個同伴都需要能夠訪問卡片組。當牌組被洗牌時,我可以使用NSCoding將我的牌組對象序列化,並將它發送給另一個對等體,以使這些套牌同步,但是如果我只能指望兩個對等體上的隨機數生成器來發送更少的數據,生成相同的隨機數。因爲這是一款紙牌遊戲,所以我需要最好的隨機數字,所以我更喜歡使用arc4random(),它在第一次被調用時會自己種子。有沒有,也許是手動種子的方法?

簡單地發送卡片組對象是的解決方案,但我打算使用OpenFeint的實現異步多,要做到這一點,我的比賽狀態需要保持16K之下,只是我的卡甲板幾乎是2K時序列化。 :)

謝謝!

+0

這聽起來像個壞主意。隨機發生器狀態可以被攔截。一個序列化的(52卡)卡座不應占用52個字節的空間。 – 2010-09-08 23:34:51

回答

0

如果你剛發送過隨機數本身,該怎麼辦?無論哪個設備「轉向」,都可以創建併發送它的隨機數,以便所有版本都可以確認相同的抽籤。如果您仔細確保所有版本的套牌都是相同的訂單/卡片,並且沒有隨機數字被丟棄,那麼理論上應該使用非常少量的數據傳輸。如果另一個玩家進來,你可以通過翻轉對象或對象數組中的單個位來標記已經繪製了哪些卡,併發送該對象/數組。

如果不成功,恐怕我不知道該平臺,但我知道在其他一些語言中,將種子作爲調用的一部分將使用固定值(例如:arc4random(seed) )我不知道你的工作是否屬於這種情況,但這可能值得研究。

希望這有助於!