Android:网络化情境中的随机生成(多人游戏)

时间:2015-05-20 03:15:56

标签: java android random google-play-games multiplayer

我写了一个课程,考虑到种子和困难,将为我的游戏返回一个运动场。这一代是一致的(无论如何,相同的种子和难度水平总是会产生相同的游戏场)。据我所知,所有Android设备都使用Java 1.6,所以这里是我的问题:

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

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

重新说明,应该采取哪些预防措施来确保我的字段生成类大量使用的类java.util.Random将为每个设备产生相同的播放字段?或者,或者,考虑将所有游戏区域数据发送到非托管设备会更明智吗?

我可以通过大小为:

的可靠消息来完成后者
export default class User {
  constructor() {
    this.firstName;
    this.lastName;
    this.sex;
  }
}

事先,我感谢此事的任何指导/建议。这是一个难以搜索的问题,因此未来视图的某些链接可能是合适的。

1 个答案:

答案 0 :(得分:0)

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

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

第二个选项是简单地始终发送所有数据。这就是我将亲自做的事情。

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