Pako – mini game system Ver0.1


私が趣味でゲームを作ろうとするときは、大抵簡単なスプライト管理を作りたがる。それらで、SDK や API をワンクッションラップしてその上にアプリケーションを作る感じ。
このクセのおかげで、これまで作ってきたものが他環境へひょっこりと移植できたりしているわけだ。
しっぽパズル以降、SDL とその上の sprite base で PC, Mac, PSP, GP2X の 4機種(多分 Linux も)でほぼ同一のソースを Make 一発で作り分けるという環境ができあがっており、これで小物ゲームを作って楽しんできた。PC 上で作成、 デバッグをしてできあがったら他機種用にビルドするだけという開発サイクルで実機検証を減らす作戦ですな。

PSP の SDL は表示が遅いので、スプライト表示部分だけハードウェアアクセラレートを使う形になっている。逆にそれが強力で、通常の SDL ではできない回転拡大縮小やα抜き付き半透明ができてしまっていた。
開発のメインとなる PC よりも PSP 実機の方がちょっとリッチな表示ができてしまうのだ。
やっぱりそれは面白く無い所。
それにそろそろ簡単な 3D も検討したくなってくる頃合い。
そうなると、一番楽で可搬性に富むのが OpenGL ベースの表示システムを作ることじゃないかと考えた。PSPDEVには pspgl という OpenGL ES サブセットの Library があるのだが、春頃に試しで使って良い感じなことを確認していたのでなおさらそう思うのであった。
とはいえ、イベント基調の glut は使いたくなくてやっぱり SDL のループ構造でフレーム管理していきたいあたり。
てなわけで、PC では SDL の OpenGL surface を使って SDL 上で OpenGL 表示をし、ほとんどを SDL で固める。PSP では SDL の VIDEO だけ使わずに、その他とタイマーだけ使用して、スクリーンは OpenGL ES でダイレクトに構築する形にした。
あと、これまで C++ は避けていたんだけれども(初期の PSP SDK は C++ に弱かった)、最萌支援奏移植で試して問題なかったのでげしげしと使う事にした。STL つーか vector も使うぜ。
そうやって画面表示と更新だけ抽象化して、後は glBegin()〜glEnd() といった普通の OpenGL 世界で作成していくベースクラスに「ぱこ」と名付けた。
もちろん 2D スプライト管理もばっちり実装されているので、今までと同じようにクソゲーを短時間で作成することができる。GP2X を考えなければ、これまでのシステムからの差し替えとなる感じで。

現在のところは四角がくるくる回るだけの意味無しサンプルなんで、面白くもなんともないところだけれども私的には一区切りついたところなのでソース置いておく。

pako_mini_game_system_061108.zip

たまにはそんなプログラム話。
—–




You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.

Leave a Reply