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.
Я бы посоветовал вам взглянуть на них обоих...
Удачи:)