Element API
EbiseLutica opened this issue · comments
DotFeather のゲームを構成する要素の表現を一新し、Element API として体系化する
IDrawable をベースとする従来のシステムは廃止し、描画要素は全て、新しく追加される Element クラスに一本化
IDrawable との違い
- 名前
- IDrawable の翻訳が難しい
- 日本語では「描画可能オブジェクト」としていたが長いし、ドロアブルは何か違う
- エレメントなら日本語でも馴染みがある
- IDrawable の翻訳が難しい
- 必ずしも描画要素には限定しない
- サウンドやその他構成要素を担えるようにする
コンポーネントシステム
IDrawable ベースのときは、1つの機能を単一のクラスで、あるいは継承することで実現していた
しかし、この仕組みだとコードが煩雑になってしまうし、テクスチャを描画するコンポーネント、入力をハンドリングするコンポーネントを柔軟に組み合わせるのが困難だった
Element API では ECS ライクな仕組みを導入することでこれを解決する
Element API では、Element クラスと Component クラスが提供される
Element クラスは、ID および紐付いた Component のリストを持つ
Component クラスは、実際に描画や入力のハンドリング、オーディオの再生などを行う
Element に、Component を複数紐付けることで、ゲームの構成要素を組み立てていく
互換性やv2ユーザーの移行促進のため、元々あったDrawableを、Elementの派生クラスとして再実装する