我使用Google的回合制API设置了多人游戏。我现在想在自动匹配上加上一些限定词,并且正在努力解决这个问题......
我正在使用GetVariant()
区分我游戏的精简版和专业版。这很容易。除此之外,我想要有几个可以改变的参数。作为一个限制性的例子,假设有三种难度级别和两种类型的游戏。我希望玩家能够指定他们想要的或者让选项完全打开(在指出之前,我意识到限定符越具体,获得匹配所需的时间越长)。
似乎在exclusiveBitMask
函数调用中设置createAutoMatchCriteria
可能是解决方案(事实上,在这项任务中我根本看不到任何可能有用的东西)。< / p>
我认为可以在低两位指定游戏类型,并且可以使用接下来的三位指定难度级别。从本质上讲,位掩码会掩盖玩家不感兴趣的难度等级和游戏类型。所以,看看exclusiveBitMask的低5位我们会有
011 10 - difficulty 3, game type 1
101 10 - difficulty 2, game type 1
110 01 - difficulty 1, game type 2
并且难度等级(例如)可以通过不屏蔽任何难度位而保持开放
000 10 - any difficulty level, game type 1
只要一个玩家指定他想要的游戏类型并且其他玩家都将他们的选项保持打开,这在理论上是可行的。大多数玩家可能会选择“快速匹配”,默认设置为“任意”,这可能不是一个问题。 (例如,如果两个玩家指定相同的难度,则专用位将阻止匹配。如果两个玩家指定不同的游戏类型,他们实际上将被给予匹配,但是可以通过使用三个位来指定游戏类型来克服)。
但是这个系统要求每个玩家在实际开始之前加入比赛,这是不理想的。可能是一个玩家指定了他想要的游戏类型,一个玩家指定了他想要的难度级别,三个玩家已经将所有选项都打开了。我们无法初始化游戏,直到我们让所有玩家都准备好并知道他们每个人做出了哪些选择。
所以这让我想到了问题的关键。如果没有每个玩家空转将其信息传递给下一个玩家,我如何确定每个玩家使用的exlusiveBitMask?我希望在每个玩家加入后可以通过逻辑OR操作修改exclusiveBitMask,并且这可以通过getAutoMatchCriteria获得,但事实并非如此。
所以,我有问题......
1)这种方法并不好,但它是唯一一个看起来很可能用于指定游戏类型(并且能够在规范中保留一些选项)的方法。是否有更好,更清洁的方法?
2)如果没有其他方法可用,是否有任何关于如何克服警告并确定每个玩家的规格的建议,而不是每个玩家必须在游戏开始时空转以传递信息?< / p>