Unite2017 参加しました その6
C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック
www.slideshare.net
はじめに
- これからの方向性を示した内容。まだまだ変わる可能性がある。
Jobs101
- マルチコアのハードにきちんと対応するためにJob化がされる。
- ただしマルチコアに対応するために並列処理をきちんと意識する必要がある。
- Unity2017.2 以降で対応予定
2017以降の新機能
- C++とC#間ではmarshalingなしでアクセスできるNativeArrayの型ができる
jobに最適化された新たなコンパイラができる
- jobSystemではGCが働かないunmanagedなので、developperがきちんとDisposeする必要がある。
- これにより、マルチスレッドにより特化したコーディングが可能となる。
MONOのコンパイル処理が変わる
- ILから中間言語を出して、最適化そしてLLVM送りさらに最適化、そしてメモリに書き込む。
現在のマルチスレッドに対する制限
- Jobをまだ止めることができない。
- スレッドセーフではない
job化のbest practice
DODへの方法
Step1(従来のMonoBehavior追加する方法)
MonoBehaviorに対して関数を追加して使う
Step2
オブジェクトのすべてのtransformをArrayで管理する。
Step3
IComponentDataを利用して、各Objectの情報を格納する
Step4
データの整合性をとれるようにする。