Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Entity Component System との相性について考える #94

Open
rrbox opened this issue Apr 4, 2023 · 3 comments
Open

Entity Component System との相性について考える #94

rrbox opened this issue Apr 4, 2023 · 3 comments
Labels
type: Discussion 機能や利用方法などの考察をメモします

Comments

@rrbox
Copy link
Owner

rrbox commented Apr 4, 2023

ECS : ゲーム構造を Entity, Component, System の 3 種類の要素に分けて考える手法。Component はデータ、System は挙動に相当する。Entity は一つのオブジェクトを表現するための識別子に相当する。

@rrbox rrbox changed the title Entity Component System との相性が良くないかもしれない Entity Component System との相性について考える Apr 4, 2023
@rrbox
Copy link
Owner Author

rrbox commented Apr 4, 2023

GameWidget は ECS のフレームの外側で利用することが望ましいかもしれないです。

GameWidget を ECS 内で活用する場合は一見、Widget に準拠した各レイアウト構造体が Component, Widget から生成される Node や NotificationCenter が System を動かす部品になり得ます。しかし、Comonent からオブジェクトを生成するプロセスやオブジェクトを System として活用するためには、ECS そのものの堅牢性を犠牲にする必要が出てくる可能性が高いです。

そこで現在有力視している利用方法は、M (ECS) VC 構成です。これは、ゲーム全体を一般的なアプリケーションの構成である、MVC アーキテクチャにし、そのモデル部分で ECS を活用するというアイデアになります。そしてこの場合、GameWidget は View に相当する部分を担うと考えられます。

@rrbox rrbox added the type: Discussion 機能や利用方法などの考察をメモします label Apr 4, 2023
@rrbox
Copy link
Owner Author

rrbox commented Apr 6, 2023

M (ECS) VC ではなく、完全に ECS にしてもいいかもしれません。この場合、SKView 直下に ECS を展開して、Scene 遷移を Resource で管理し、UI を ECS で表現することになります。この設計で独特な部分は、SKScene サブクラスを作らないことかもしれません。すべての Scene ファイルは ECSScene として展開されます。

@rrbox
Copy link
Owner Author

rrbox commented Apr 17, 2023

UI からのイベントの応答について考えました:

ECS 側で「UI のイベント発生時に実行されるシステム」を作ることで解決できそうです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: Discussion 機能や利用方法などの考察をメモします
Projects
None yet
Development

No branches or pull requests

1 participant