2011-10-19 85 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