OpenGL ES や AL を使用したアプリやゲームを開発しようと思うと、
たとえシンプルな 2D ゲームだったとしても、
はじめに何かと組まなければならない部分が色々と出てきます。
iPhoneの場合、ほとんどの機能やサンプルにObjective-Cが絡んできますが、
C/C++が使えるならば、できるだけObjective-Cを使わずに開発したいと、
OpenGLES2を使った2Dゲーム開発のためのライブラリを作ってみました。
OpenGL ES では特に厄介な文字列の描画も簡単に行えます。
Objective-Cとの連携や、xib/StoryBoardとの連携も可能です。
MITライセンスです。
サンプルを集めたプロジェクトと一緒にライブラリコードを配布をしています。
ライブラリはサンプル内「KLib」フォルダをプロジェクタに追加するか、
サンプルを複製したプロジェクトからサンプルシーンを削除するとすぐに導入できます。
-
タッチ管理(範囲内タッチ、ホールド、リリース判定、スワイプ方向と距離取得など)
-
OpenGLES2を使用した描画
-
原点を画面左上とした座標管理
-
BMP/GIF/JPG/PNGからテクスチャ作成
-
任意フォントで文字列を描画(絵文字対応・[RRGGBB]形式で任意色変更可)
-
シーン別ワーク管理
-
縦横端末方向を簡単切替
-
スプライト機能
-
線・矩形・円などのプリミティブ描画
-
クリッピング描画
-
デバイスの画面解像度やiOSバージョン、使用言語など端末情報参照
-
OpenALによるwav/mp3/m4aサウンド再生
-
整合ハッシュ付ファイルの入出力(セーブデータの簡易暗号化)
-
オブジェクトコンテナ(親キャラを倒すと親の出した子キャラも消滅など/擬似タスク)
-
UUID
-
HTTP通信
OpenGL/ALの形式に合わせたラッパーの開発が基となっているため 各種コードはC++ではなく、Cで記述されています。
[更新履歴]
-
全体的に変更を加え iOS7/Universal に対応
-
StoryBoard を使用した各種機能のサンプルを追加
-
起動から終了までフルスクリーンの1ビュー限定だったビューを廃止、StoryBoard や xib 上に任意サイズで配置可能になった
-
ラベル処理を一新
- [RRGGBB]形式のカラータグで色付けが可能になった
- 絵文字(結合文字含む)に対応し任意フォントと混在できるようになった
-
ソフトウェアキーボードとラベルの連携が可能になった
-
他のビュー上に任意サイズで配置できるようになったため、画面サイズの klib.screen.w(h) でなく klib.view.w(h) でビューサイズを取得できるように変更
-
ステンシルバッファを使用したマスキング(クリッピング)描画機能の追加
-
HTTP通信命令の追加
-
ファイルの簡易暗号化、復元の処理を任意キーで行えるように修正
-
構造体と ARC 連携の都合上、App-InPurchase系とGameCenter系の機能を削除
[既知の問題]
-
起動後、GL_INVALID_OPERATION が一度ログに表示される
-
斜体フォントなど特殊なスタイルのフォントに非対応