2011-10-19 50 views
3

我已经写了一个简单的游戏,并期待与它集成GameCenter成就。iPhone游戏开发:成就框架?

我想尝试以干净整洁的方式做到这一点,这很容易添加额外的成就。

当我看到它的成就有以下几点:

  • 触发“组”(例如,在游戏结束时,碰撞等)
  • 之间的独立性(例如,你不能得到“十颗金星”,直到你获得“五颗金星”)。

在此基础上,我尝试编写一个singleton类,它读入一个完整的成就列表(来自plist),每个成员都按照触发器类和依赖关系进行分组。这个单例允许其他类注册@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是一个全功能游戏中心框架。

我建议你看一下他们两个......

祝你好运:)

+0

那些无论看起来棒极了 - 感谢的链接。虽然两人看起来都需要游戏告诉他们成绩已经“有”。我仍然需要以抽象的方式找到一种定义成就(无论是在触发器和依赖/要求方面)的方式。 – Nick

+1

那么你可以使用SQLite,这个人建议(http://www.reedolsen.com/how-to-develop-achievements-for-iphone-games/)你可以模仿的东西。基本上,你只需跟踪SQLite的统计数据,然后你可以创建一个触发器来检查获得的成就。 – Goles