xeltica-studio / DotFeather

A closs-platform generic gameengine built on C#/.NET 6

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Element API

EbiseLutica opened this issue · comments

DotFeather のゲームを構成する要素の表現を一新し、Element API として体系化する

IDrawable をベースとする従来のシステムは廃止し、描画要素は全て、新しく追加される Element クラスに一本化

IDrawable との違い

  • 名前
    • IDrawable の翻訳が難しい
      • 日本語では「描画可能オブジェクト」としていたが長いし、ドロアブルは何か違う
      • エレメントなら日本語でも馴染みがある
  • 必ずしも描画要素には限定しない
    • サウンドやその他構成要素を担えるようにする

コンポーネントシステム

IDrawable ベースのときは、1つの機能を単一のクラスで、あるいは継承することで実現していた

しかし、この仕組みだとコードが煩雑になってしまうし、テクスチャを描画するコンポーネント、入力をハンドリングするコンポーネントを柔軟に組み合わせるのが困難だった

Element API では ECS ライクな仕組みを導入することでこれを解決する

Element API では、Element クラスと Component クラスが提供される

Element クラスは、ID および紐付いた Component のリストを持つ

Component クラスは、実際に描画や入力のハンドリング、オーディオの再生などを行う

Element に、Component を複数紐付けることで、ゲームの構成要素を組み立てていく

互換性やv2ユーザーの移行促進のため、元々あったDrawableを、Elementの派生クラスとして再実装する