2Dゲーム用フレームワーク

2Dゲーム用フレームワーク

概要

2Dゲームを作成するにあたって必要な諸機能を用意する事を目的としています。
特徴としては
  • 実際のゲームの動作環境と同じ環境でツール群を動かす事により、ツール上の動作と実際の動作の際を無くします。
  • シリアライズをサポートする事で現状の保存・復元を行えます
  • ジョブシステムによるマルチスレッド対応
  • Windows、IntelMacの両対応
などです。
現在のところではまだまだ開発途上ですが、なんとか今年中(2009年中)には実際にゲームを作れるところまで作る事を目標としています。

主な機能

シリアライズ

このフレームワークはシリアライズに重点を置いています。
そのために、実行時型情報、プロパティ、XMLといったものをサポートします。
シリアライズを行うオブジェクトはObjectBase型を継承します。
同時に必要なクラス、関数(これらはマクロで提供されます)を実装します。
シリアライズしたい情報をプロパティとして外部に出す事で容易にXMLでの書き出しを行うことが出来ます。
シリアライズしたファイルを読み込む事で同じ状態を再現します。

描画

RenderSystemとDrawContextがWindowsとIntelMacでの同じ機能を提供します。
WindowsではDirect3D(DirectX9)IntelMacではOpenGLを使用します。
ポイント、ライン、トライアングル、クアッドの描画(トライアングルとクアッドはテクスチャ有り、無し)、オフスクリーンサーフェス、複数ビュー(開発環境ではUI用のビューなども)、乗算・加算・減算ブレンドなどをサポートします。
優先付きの描画です。

マルチスレッド対応

ジョブシステムによるマルチスレッド対応を行います。
関数の登録タイプとループの並列実行タイプがあります。
これにより容易に複数の敵や弾、エフェクトなどを並列実行させることが可能です。
1スレッドしか実行出来ない環境ではシングルスレッドで動作するので無駄なオーバーヘッドはほとんどありません。
同期オブジェクトとして、クリティカルセクション、セマフォ、イベントなどを使う事も出来ます。

UIシステム

ツール作成用のUIシステムがあります。
メッセージで各UIの連絡を行います。
一般的なGUIシステム同様、マウスやキーボードをサポートします。
現在のところはマウスまでのサポートです。
ツールが保持するデータとはプロパティ経由でアクセスします。
UIControl系のUIでキーボード、マウスでプロパティを操作します。

リソース管理

参照カウンタベースでリソースを管理します。
また中間形式と環境依存の最終形式を分ける事で、マルチプラットフォーム時のデータの共通利用を可能にします。
中間形式と最終形式のタイムスタンプを比べ、中間形式が新しくなっていたら最終形式へ自動更新をかけます。

To Be Continued...
最終更新:2009年05月23日 19:17