Android:网络情况下的随机生成(多人)

Android: Random Generation in a Networked Situation (Multiplayer)

我写了一个 class,给定种子和难度,return 将成为我的游戏的竞技场。世代是一致的(无论如何,相同的种子和难度级别总是会产生相同的游戏环境)。据我所知,所有 android 设备都使用 Java 1.6,所以我的问题是:

在多人游戏环境中只将种子和难度发送到其他设备是否安全?

我需要担心什么时候 Google 更新 Java 版本级别形式 1.6 吗?或者他们可能会将所有 android 设备更新到该版本级别(我假设随机 class 将被更改)?如果不是,检测 Random class 是否不同的好方法是什么?

换句话说,应该采取什么预防措施来确保 class java.util.Random,我的领域一代 class 大量使用,将导致每个人都有相同的比赛场地设备?或者,考虑将所有比赛场地数据发送到非托管设备是否更明智?

我可能可以通过大小为以下的可靠消息来完成后者:

byte[ROWS * COLUMNS]

提前,我感谢任何 guidance/suggestions 在这件事上。这是一个很难搜索的问题,因此一些用于未来观点的链接可能是合适的。

这里有几个选项,但我想我希望有一些神奇的 JVM 属性 定义 java.util.Random class 修订版。

第一个选项是检查 java 版本并将其与其他设备的版本进行比较。如果它们相同,则可以安全地(据我所知)假设随机 class 相同,因此可以发送种子和难度。但是,如果它们不同,您要么发送所有数据,要么自己检查 documentation/version 发行说明以查看随机 class 何时更改,然后确定是否应根据先前获取的数据发送所有数据java 版本标识符。

第二个选项是始终发送所有数据。这就是我个人将要做的事情。

如果您没有我那么幸运并且您的数据超过 Multiplayer.MAX_RELIABLE_MESSAGE_LEN 的值(以字节为单位),您可能必须将数据分成多条消息,这可能会变得丑陋但完全可行。