「エンティティ・コンポーネント・システム」の版間の差分
Administrator (トーク | 投稿記録) ページの作成:「'''エンティティ・コンポーネント・システム'''(英語: Entity component system、通称:ECS)とは、データと処理を完全に分離して考…」 |
Administrator (トーク | 投稿記録) |
||
| 9行目: | 9行目: | ||
=== コンポーネント === | === コンポーネント === | ||
エンティティが持つ要素のひとつ。いわゆる「[[データ]]」である。 | |||
[[構造体]]で実装することが多い。 | |||
<source lang="csharp"> | |||
interface IComponent { | |||
} | |||
struct DrawableComponent : IComponent { | |||
} | |||
struct HitpointComponent : IComponent { | |||
public int HitPoint; | |||
} | |||
</source> | |||
=== システム === | === システム === | ||
2022年11月24日 (木) 05:20時点における版
エンティティ・コンポーネント・システム(英語: Entity component system、通称:ECS)とは、データと処理を完全に分離して考えるプログラミングの手法のひとつ。「コンポーネント指向」とはまったくの別物。
データと処理が分離しているので上層部の思いつきによる急な仕様変更に強いという特徴がある。
主な用語
エンティティ
オブジェクト指向のオブジェクトに近いもの。オブジェクト指向でいう「メソッド」などは持たず、エンティティの「識別子(ID)」と「コンポーネントの配列」だけを持つ。
コンポーネント
エンティティが持つ要素のひとつ。いわゆる「データ」である。 構造体で実装することが多い。
interface IComponent {
}
struct DrawableComponent : IComponent {
}
struct HitpointComponent : IComponent {
public int HitPoint;
}
システム
いわゆる「処理」である。エンティティの配列から特定のコンポーネントを持つものを抽出し、それらに対して処理を行う。
以下のような感じである。
- コンポーネントAを持つエンティティに対する処理(システム)
- コンポーネントAとコンポーネントBを併せ持つエンティティに対する処理(システム)