来自谷歌服务的实时多人游戏问题(为您的房间配置添加专属位掩码)
Posted
技术标签:
【中文标题】来自谷歌服务的实时多人游戏问题(为您的房间配置添加专属位掩码)【英文标题】:The issue with real-time multiplayer from google services (adding an exclusive bitmask to your room configuration) 【发布时间】:2016-01-16 18:03:04 【问题描述】:所以,我正在编写基于谷歌服务(Real-time Multiplayer)的实时多人游戏。我想为自动匹配标准添加不同的角色。在谷歌文档中它看起来像这样:
如果您的游戏有多个玩家角色(例如农民、弓箭手和巫师),并且您希望将自动匹配的游戏限制为每个角色的一个玩家,请在您的房间配置中添加专用位掩码。使用此选项进行自动匹配时,仅当玩家的独占位掩码的逻辑与等于 0 时才会考虑匹配。以下示例显示了如何使用位掩码执行与三个独占角色的自动匹配:
在此示例中,我们将等待 2 个具有专属角色的随机对手。
private static final long ROLE_FARMER = 0x1; // 001 in binary
private static final long ROLE_ARCHER = 0x2; // 010 in binary
private static final long ROLE_WIZARD = 0x4; // 100 in binary
private void startQuickGame(long role)
// auto-match with two random auto-match opponents of different roles
Bundle am = RoomConfig.createAutoMatchCriteria(2, 2, role);
// build the room config
RoomConfig.Builder roomConfigBuilder = makeBasicRoomConfigBuilder();
roomConfigBuilder.setAutoMatchCriteria(am);
// create room, etc.
// ...
当我将独占角色替换为 0 时,它可以正常工作。但是,如果我为每个对手添加一些位掩码,例如 0x1,它就不起作用了。玩家不连接到房间。我用 google 实时多人游戏示例测试了这个问题:https://github.com/playgameservices/android-basic-samples/tree/master/BasicSamples/ButtonClicker 它也不起作用。你能帮我解决这个问题吗?我解决不了。
【问题讨论】:
如果你给所有对手相同的位掩码,那么你只得到其中一个肯定是正确的吗? @Tommy 如果我提供相同的位掩码,玩家将无法连接到房间。但我希望每个位掩码为 0x1 的玩家可以连接到具有相同位掩码的玩家的房间。 【参考方案1】:所以,我解决了我的问题。如果您想将玩家与特定选项联系起来。你需要使用
roomConfigBuilder.setVariant(0x4);
【讨论】:
以上是关于来自谷歌服务的实时多人游戏问题(为您的房间配置添加专属位掩码)的主要内容,如果未能解决你的问题,请参考以下文章
如何在实时多人游戏 Google Play 游戏服务中向其他参与者发送有关房间创建的数据
当应用程序进入后台时,实时多人 Google Play 游戏服务对等方断开连接