【Unity】 DOTSについて調べてみた
スポンサーリンク
先日のUnite2019 にて DOTS (Data-Oriented Tech Stack) の講演が実に刺激的だったので調べてみました。
DOTSとは
DOTS「Data-Oriented Tech Stack」とはUnityが開発を進めている機能(大まかにいうと概念)です。
近年のPCやスマートフォンはCPUやGPUの進化は目覚ましく、コア数や性能も数年前より段違いで向上しています。
その影響を受けて最新のコンピューターゲームではより「ハイエンド」で「ハイパフォーマンス」「ハイボリューム」なゲームが求められるようになり、
それを実現するためにゲームエンジン側でもマルチスレッド(複数の処理を並行して進めること)化がふ必要不可欠な状態になっています。
そこでUnityが考え出したのが「DOTS」です!。
DOTSの仕組み
DOTSは主に「3つの機能」から成り立っています。
- Job System ......... (マルチコアで並列処理を行うシステム)
- Burst Compiler .........(CPU演算に最適化したコンパイルを作成する)
- ECS ...........(
MonoBehaviorをぶっ壊す!超高速キャッシュ機能 )
少し古いですが「Unityの3本の矢」と言われていますね。
この3本の矢 ( 3種の神器 )を使いこなすことで例えば「1万体もの3Dが暴れまくるハイエンドゲーム」をモバイルゲームで作ることができるようになるわけですよ!!! (すごい!!!)
こんだけ凄い機能ですが、現場に普及するのはまだ時間がかかりそうな気がします。
その理由を簡単に説明すると、
・ECS が不安定 かつ、既存の概念を根本的に覆すシステム
・Job Systemでは値型 (ValueType)しか保管できない
etc....
などなどありますが、ザックリ言うと「未だ発展途上でかつ難しい!」 これに尽きると思います。
よく新しい技術が出てきたらすぐにそれを使おうとする人がいますが、趣味ならともかく業務でそれはオススメしません。(手痛い目にあったので。。。)
まずはその技術をしっかりと勉強し、1つ1つの動作を検証した上で導入すべきだと思っています。
DOTSは概念の理解や導入は大変難しいと思いますが、それを乗り越え使いこなした暁には素晴らしい結果をもたらしてくれると信じています。
最後に筆者がDOTSを試して見た感想ですが
・ECSを扱うには基盤作成が最重要
・C,C++を勉強していない人には ポインタ処理が難しい
ザックリ言うとこのような感じでした。
ECS関連はちょくちょくと記事にしていきたいですね。