2012-01-12 53 views
2

在我的多人iOS游戏中,一名玩家必须是“主人”并决定某些游戏设置。当他通过GC邀请朋友时,很明显他是坐在驾驶座上的,但是当通过自动匹配将人们聚集在一起时,我需要做一个吸管程序来让一个人做出选择的对话。 现在我不知道如何从一侧明确发起的设置告诉自动匹配连接。 是否可以从某些API行为中扣除任何想法?我认为didFindMatch调用总是返回至少有一个被邀请的玩家,如果它不是纯粹自动匹配的(这至少是一个观察),但是文档没有明确证实并说明它最初可能是空的。我可以通过明确的邀请告诉iOS Gamecenter自动匹配吗?

+0

所以,这是一个相当古老的尚未解答的问题,但现在最新的iOS,它发生了什么,我总是担心:didFindMatch现在返回与已连接的所有球员,所以我不能再分辨邀请发起的游戏自动配对。 其他人有线索如何解决这个问题?有什么方法可以找出谁首先进入自动匹配工作?也可以将第一个进入自动匹配的人放入驾驶员座位,但我不知道如何以稳定的方式实现该功能,而不是提供序列信息或集中时间戳的游戏中心。 – habitoti 2012-09-15 06:35:19

回答

0

我有这个相同的问题,并最终得出结论,唯一的方法是跟踪和消息自己。

以我的情况下,引发剂侧跟踪游戏是如何开始,并将该信息发送作为用于设置在游戏的初始消息序列的一部分。

这是一个耻辱的API似乎并没有提供这种信息,因为它似乎是有益的,应随时提供给游戏中心。

+0

加入自动匹配意味着托管或加入一个,并且除非您明确选择它(“加入现有游戏”与“主持一场比赛”,否则将大幅减少可用的合作伙伴)。 – habitoti 2012-10-06 07:17:41

+0

我现在通过使用NSDate“自1972年以来的秒数”时间戳(它是全局有效的,而不是时区调整的)来确定自动匹配合作伙伴加入时的“司机座位”。首先发起游戏的人被选为主持人。这工作得很好,你可以假设全球的所有时钟都可以很好地适应网络连接的设备(至少这不是火箭科学,而只是一个游戏;-) – habitoti 2012-10-06 07:21:36

+0

坚果。我认为这是一个使用时间戳的好主意,但看起来它毕竟不是很可靠。我只是用我的iphone 4和我的ipod进行了测试,并且无论我尝试了什么,iPhone似乎都有最早的时间戳。 – PWiggin 2013-09-03 21:45:22

相关问题