iPhone Game Dev: рамки достижений?

Я написал простую игру и собираюсь интегрировать с ней достижения GameCenter.

Я хотел бы попытаться сделать это чистым и аккуратным способом, к которому легко добавить дополнительные достижения.

На мой взгляд, достижение имеет следующие вещи:

  • Триггерная группа (например, в конце игры, при столкновении и т. Д.)
  • Зависимость (например, вы не можете получить "10 золотых звезд", пока не получите "5 золотых звезд").

Исходя из этого, я попытался написать одноэлементный класс, который читал бы полный список (из списка) достижений, каждое из которых было сгруппировано по триггерному классу и с его зависимостями. Этот синглтон позволил другим классам зарегистрироваться @selector()-подобные обратные вызовы для запуска групп (например, "на триггере" game_end ", вызовите эту функцию") Эти триггеры могут быть вызваны в определенных точках моей игры. Это дало аккуратную, почти "абстрактную" систему, которую я мог бы использовать в будущих играх.

Затем катастрофа; Я заканчиваю с EXC_BAD_ACCESS ошибки, которые я могу только предположить, потому что я связываю @selector обратные вызовы из нестатического класса в статический одноэлементный класс. Ошибка появляется в этой строке:

GCAchievementsHelper *h = [GCAchievementsHelper sharedInstance];
[h addEventListener:@"game_end" target:self selector:@selector(achievementHandlerGameEnd:)];

Я предполагаю, что это потому, что "я" (игровой слой) не может быть передано в статический синглтон?!

Я действительно не хочу разбрасывать тонны повторяющихся операторов IF вокруг моего кода, чтобы проверить все условия, которые мне нужны для достижения... Если это вообще возможно!

Подводя итог, мой вопрос:

Кто-нибудь знает рамки достижений? Это не обязательно должен быть GC/OpenFeint или даже ObjC-совместимый - даже псевдокод был бы хорош.

1 ответ

Решение

Существует несколько платформ GameCenter с открытым исходным кодом, которые могут использовать некоторую нагрузку на вас.

GameCenterManager, который следует шаблону синглтона и является довольно "легким"

iOS Game Center Cache - это полнофункциональная платформа Game Center.

Я бы посоветовал вам взглянуть на них обоих...

Удачи:)

Другие вопросы по тегам