なるべくCだけで作るためのiPhoneアプリ開発ライブラリを作ってみた

はじめに

アプリやゲームを開発しようと思うと、
立ち上げ時に何かと組まなければならない部分が当然色々と出てきます。
iOSの場合、ほとんどの機能やサンプルにObjective-Cが絡んできますが、
C/C++が使えるならば、できるだけObjective-Cを使わずに開発したい!
という背徳的願望から、OpenGLES2を使った2Dゲーム開発のためにライブラリを作ってみました。
2Dゲー開発と状況がかなり限定されてますが、
2Dゲームがもっと盛り上がっていけばいいなーという期待も込めて公開します。

機能

  • iPhone/iPadユニバーサルアプリ対応(要OpenGLES2対応端末)
  • タッチ管理(範囲内タッチ、ホールド、リリース判定、スワイプ方向と距離取得など)
  • OpenGLES2を使用した描画
  • 原点を画面左上とした座標管理
  • BMP/GIF/JPG/PNGからテクスチャ作成
  • 任意フォントで文字列を描画(ただし絵文字がまだ非対応)
  • シーン別ワーク管理
  • 縦横端末方向を簡単切替
  • スプライト機能
  • 線・矩形・円などのプリミティブ描画
  • バイスの画面解像度やiOSバージョン、使用言語など端末情報参照
  • OpenALによるwav/mp3/m4aサウンド再生
  • 整合ハッシュ付ファイルの入出力(セーブデータの簡易整合)
  • セーブデータの簡易暗号化・復元
  • オブジェクトコンテナ(親キャラを倒すと親の出した子キャラも消滅など/擬似タスク)
  • GameCenterのリーダーボード管理
  • アプリ内課金(現状は消費・非消費アイテムのみ)
  • UIID

など



注意

Objective-Cをほぼ使わなくていいとはいえ、
プログラミング初心者向けのライブラリではありません。
使う機能に合わせて公式ドキュメントにはひと通り目を通して頂いた方が良いです。



なんでC++でなくCなのか?

最初はOpenGLES/ALラッパーを作成しようと始めた事なので
OpenGL/AL記述に合わせてCで作り始めた事がキッカケです。
C++OpenGLなライブラリもあるようなので、C++を使われる方は
他のライブラリもおすすめします。




最後に

フィードバック等ありましたら、メールなりここなりで気軽にご連絡ください。

ライセンスはMIT Lisenceです。
以下のgithubにサンプルプロジェクト一式同梱で置いてありますので
興味のある方はプロジェクトをそのままビルドして
実行で動きがわかると思います。

https://github.com/klib/example



サンプル実行時の雰囲気

シンプルな図形描画

テクスチャアトラスでマップチップのスプライト描画

端末の向きが変わった時も特に設定する必要はありません

なにかと面倒くさいOpenGLでの文字描画とフォント対応も簡単に

端末情報もさくっと取得し処理分けできます

擬似タスクっぽいものも実装しています

マルチタッチも気にせず使えるタッチ判定と管理