Хост игрового центра

#iphone #ios #game-center

#iPhone #iOS #игровой центр

Вопрос:

В настоящее время я создаю игру Game Center и использую доступные одноранговые функции. Тем не менее, я хотел бы выбрать одного из игроков (2 игрока) в качестве ведущего, чтобы обеспечить синхронизацию.

Каков наилучший способ выбрать хост (даже случайным образом) из доступных игроков и убедиться, что другое устройство знает, какой хост был выбран?

Ответ №1:

Это хороший, простой учебник с кодом, который демонстрирует, как это сделать. Они случайным образом выбирают одного из одноранговых узлов в качестве хоста. Надеюсь, это поможет!

Комментарии:

1. Спасибо, трюк со случайными числами должен сработать :). Думаю, я был настолько погружен в попытки найти постоянную и постоянную строку, похожую на PlayerID, а затем сравнивал ее, что я даже близко не подошел к мысли об этом. Еще раз спасибо

Ответ №2:

уже опубликованный ответ, все еще здесь пример кода для этого

 NSString *uid = [[UIDevice currentDevice] uniqueIdentifier];
CoinTossID = [uid hash];
  

теперь в функции делегирования

 - (void)match:(GKMatch *)match didReceiveData:(NSData *)data fromPlayer:(NSString *)playerID
    {
        NSMutableArray *ReceivedArray = [[NSMutableArray alloc] init];
        ReceivedArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
        int flag = [[ReceivedArray objectAtIndex:0] intValue];
        [ReceivedArray removeObjectAtIndex:0];

        int CoinValue = [ReceivedCoinTossID intValue];
        if(CoinValue > CoinTossID)
        {
           isPlayer1 = YES;
        }
        else
        {
              isPlayer1 = NO;
        }
    }
  

Комментарии:

1. Спасибо, использование идентификатора устройства тоже должно работать. Однако обратите внимание, что [[UIDevice currentDevice] uniqueIdentifier] устарел в iOS 5. Возможно, использование [GKLocalPlayer LocalPlayer].PlayerID будет работать лучше.