2012-01-12 28 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

相關問題