iPhone 游戏开发:成就框架?

Posted

技术标签:

【中文标题】iPhone 游戏开发:成就框架?【英文标题】:iPhone Game Dev : Achievement Framework? 【发布时间】:2011-12-11 05:38:39 【问题描述】:

我编写了一个简单的游戏,并希望将 GameCenter 成就与它集成。

我想尝试以一种干净整洁的方式来做这件事,这样很容易添加额外的成就。

在我看来,成就有以下几点:

触发器“组”(例如,游戏结束、碰撞等) 依赖项(例如,在获得“5 金星”之前,您无法获得“10 金星”)。

基于此,我尝试编写一个单例类,该类读取完整的成就列表(来自 plist),每个成就都按触发器类及其依赖项分组。这个单例允许其他类注册@selector() 类似的回调来触发组(例如,“在'game_end' 触发器上,调用这个函数”)。然后可以在我的游戏中的定制点干净地调用这些触发器。这产生了一个简洁、几乎“抽象”的系统,我可以在以后的游戏中使用它。

然后是灾难;我最终得到EXC_BAD_ACCESS 错误,我只能假设这是因为我将非静态类的@selector 回调绑定到静态单例类中。错误出现在这一行:

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

我假设这是因为“self”(游戏层)无法传递给静态单例?!

我真的不想在我的代码周围散布大量重复的 IF 语句来检查我取得成就所需的所有条件......如果可能的话!

总结一下,我的问题是:

有人知道成就框架吗?它不必与 GC/OpenFeint 甚至 ObjC 兼容——即使是伪代码也很棒。

【问题讨论】:

【参考方案1】:

有几个 GameCenter 开源框架可以利用您的一些负载。

GameCenterManager遵循单例模式,相当“轻”

ios Game Center Cache 是一个功能齐全的游戏中心框架。

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

祝你好运:)

【讨论】:

这两个看起来都很棒 - 感谢您的链接。尽管两者看起来都需要游戏告诉他们已经“拥有”成就。我仍然需要找到一种以抽象方式定义成就的方法(包括触发器和依赖项/要求)。 那么你可以使用 SQLite,这家伙建议 (reedolsen.com/how-to-develop-achievements-for-iphone-games) 一些你可以模仿的东西。基本上,您只需使用 SQLite 跟踪统计信息,然后您可以创建一个触发器来检查所获得的成就。

以上是关于iPhone 游戏开发:成就框架?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在谷歌玩游戏中使用相同的排行榜和成就安卓游戏

有没有办法省略谷歌游戏服务中的成就?

是否可以仅针对 iphone 5 和 6 发布使用 spritekit 和 swift 开发的游戏

第三十七天 一乐在当中—Android的小游戏打飞机环境搭建

Google Play 开发者控制台错误:签名的 APK 配置错误、成就和排行榜意外错误

跨平台开发基于服务器的游戏,包括 iphone、android、WP7 [关闭]