Files
quartz-research-note/content/Entity Component System.md
Matsuura Tomoya(Windows) 51fa440e02
All checks were successful
Build / build (push) Successful in 11m19s
[obsidian] vault backup: 2025-07-25 21:06:47[
2025-07-25 21:06:47 +09:00

24 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#programming
主にゲームエンジンなどで採用されるプログラミングのパラダイム。
最近のUnityでも内部的に採用されている。
[[Rust]]だと[[Bevy]]が有名。
[[オブジェクト指向]]と比べると、データのメモリ分布が、オブジェクトごとに並ぶのではなく個別のメンバー変数ごとに並ぶことになり、CPUのメモリキャッシュに乗りやすいなどの利点がある。
[\[Rust\] ECSアーキテクチャ \[bevy\_ecs\] | DevelopersIO](https://dev.classmethod.jp/articles/ecs-rust-bevy/)
[Intro to ECS - Unofficial Bevy Cheat Book](https://bevy-cheatbook.github.io/programming/ecs-intro.html)
## データのモデリング方法としてなにがうれしいのか
オブジェクト指向と比べた時の利点が基本的にさっきのような、パフォーマンス面での利点が強調されることが多い。ただ、何かパフォーマンスのためにせっかくプログラミング言語が用意してくれたデータのモデリング技法を犠牲にしているような気がしてならず、あんまり旨味がよくわからなかった。
ただ、Bevyの設計をいろいろ読んでいると、モデリングとしての核心は、「集合の中から特定の要素を持つもの部分集合を指定して挙動を個別に操作する依存性がない操作同士はどういう順番で実行してもいい」ということかなと思った。