【问题标题】:How to Get a Random Map in Google Play Game Service Real-time Multiplayer Game如何在 Google Play 游戏服务实时多人游戏中获取随机地图
【发布时间】:2014-08-04 15:55:22
【问题描述】:

我正在尝试让我的游戏正常运行,以便当玩家玩自动匹配游戏时,玩家将在随机选择的地图上玩。我尝试使用 room.getCreationTimestamp() 将最后一位数字的余数用作地图的索引,但似乎不同玩家的创建时间戳并不相同。我还尝试了房间 id 从那里获取一个字节,但每个玩家的 id 都不相同。

那么房间里是否有一个变量或字段在不同的游戏中会有所不同,但对于同一游戏中的每个玩家来说都是相同的,或者这将是获得随机选择的地图的另一种方法,对于每个玩家来说都是相同的.

【问题讨论】:

  • 有什么原因不能简单地在一侧生成随机数并将其推送到另一侧?
  • 你的意思是一个玩家创建随机数并将其作为消息发送给所有其他玩家?
  • 是的。创建游戏的设备(服务器)也可以生成随机数。然后任何其他玩家的设备(客户端)都可以请求此号码,或者服务器可以将它们推送给客户端。
  • 谷歌游戏服务自动匹配游戏中没有服务器设备。但也许我可以使用某种方法来决定哪个生成随机数。
  • 这是回合制游戏还是实时游戏?

标签: java android google-play-games


【解决方案1】:

让游戏通过其他方式生成一个随机数,然后将该数字推送给所有其他玩家。

如果所有设备都被认为是相同的(没有服务器/客户端安排),那么您需要决定由哪个设备生成随机数。对于回合制游戏来说,这很容易。你的是实时的,所以可能更尴尬。

这就是我会做的......

对于实时游戏,每个玩家设备的流程应如下所示;

  • 读取所有玩家的 ID,为此您可以在 Room 某种对象上使用 getParticipantIds()
  • 获取此设备/播放器的 ID 这可以通过在 Participant 对象上使用 getParticipantId () 为给定房间完成(我想你有一个)
  • 决定哪个 ID 应该是生成随机数的 ID。最简单的方法是选择最低的参与者 ID
  • 如果选择的 ID 是当前设备的 ID,则生成一个随机数并将其作为消息发送给所有其他参与者
  • 如果选择的 ID 不是当前设备的 ID,则等待带有随机数的消息。

应该这样做。所有玩家现在可以就一个随机数达成一致。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 2014-09-17
    • 2014-09-17
    • 1970-01-01
    • 2014-01-11
    相关资源
    最近更新 更多