ECS (Entity Component System)おさわりした
ECS (Entity Component System)
今回は、Unity2018の新しく追加された、ECSついて書いていこうと思います。
実践的なことは、次に回すのであしからず。
ECS とは
ECSはソフトウェアアーキテクチャパターンの一つです。
簡単に言うとゲームの新しい設計の考え方だね。
ECSは大量のオブジェクトの処理をするのに適した設計になっています。
具体的に
ECSを使えるようになると、こんなことができます。
20万個のCubeの移動 & 描画
8000体の宇宙船(670頂点)のターゲット追従処理
ECSの詳細は、自分が説明するより他のサイトが詳しく説明してくれているので省くね。(けして面倒くさい訳ではないよ)
- オブジェクト指向でゲームを作るのはうやめよう ← 考え方について
- テラシュール ← イラスト付きでわかりやす
- C#JobSystem & ECSでCPUを極限まで使い倒そう ← SlideShare
- C#JobSystem と ECS 解説 ← 動画
- Unity公式ドキュメント
ECSを分析してみた
ECSの概要は上にサイトを参考にしてもらうとして、
今回のECSを使ってみて、自分なりに分析してみました。
- 今までのオブジェクト指向的な考えは通用しない。
- すべてのゲームが高速になるわけではない。
- 冒頭で書いた通り、大量のオブジェクトの処理が得意なだけで、格ゲーなどのオブジェクトが少ないゲームは向いていない。
- 大人数で開発する場合、どんなコンポーネントを作ったか、各システムはどのコンポーネントを使うかなど、チーム内で共有できていないと、思わぬ動作をしたりするので注意が必要。
- C# Job Systemを使えば並列処理を組むことができる。
従来との違いは
- ハードウェアにやさしい。
- 余分なデータを持たなくても良くなった (Transform君、きみのことやで)
C# Job System
分析のときにでてきたC# Job System とは、 これまた、ECSと同じでUnity2018から追加された機能です。
C# Job Systemは並列でC#の処理をさせることができる新機能なのだ!!!
並列処理をするために独特なソースの書き方をするけど、
慣れれば今までのソースより書きやすい(かも)。
ECSとC# Job Systemは組み合わせて使うことで、更に高速な処理ができるようになります。
なぜかは、次のブログで、、、
ざっくりだけどこんな感じで
次のブログはできるだけ早めに載せるから、
俺は止まんねぇからよ、
お前らが止まんねぇかぎり、その先に俺はいるぞ!
だからよ、止まるんじゃねぇぞ・・・。