去年は仕事の忙しい時期と被ってしまって行けなかったのだが、今年は無事に参加できたので、感想と覚え書き。
自分用に書いていて、他の人が読んでわかるものにしようとしていないのでご了承を。講演資料はほとんどが公式ですでに公開済みなので、セッションの中身が知りたい人はそっちを見てねということで。
http://japan.unity3d.com/unite/unite2016/schedule
1日目
モバイル端末向けのUnityアプリケーションの最適化実践テクニック
スマホゲー作るなら必読資料何じゃないかと思う。他のスマホゲー開発事例でもこのセッションに含まれてることと同じようなことを言ってるのがあったりした。
Boxing が数が増えがちで結構重いぞ、というのはあまり考えたことがなかった。例としても書かれてるけど、Dictionary のキーに数字とか使ってる所あるかなぁ。
ゲーム中のアロケーションを減らせというのは基本中の基本なんだけど、IEnumerable が生成されてしまうから、foreach を使うなというのは C# ならではだなと思った。そうだよな、for文の糖衣構文とかじゃないんだもんな……
Replacing Callbacks の辺りは ちょっと前にUnity Blogに書かれたもの が詳しい。
Unity+スマホで3Dゲーム開発/最適化するための考え方
資料の公開予定なし。ざっくり講演の説明すると、メインキャラ5人がモーションキャプチャーで動いて 60fps を維持しなければいけないゲームの開発事例。ゲームタイトルは明言できないとのこと。いやー、なんのゲームの事なんだがサッパリわかりませんね(棒読み)。
パフォーマンスをくう部分の取捨選択を仕様レベルでしっかり決めるのが大切だよなという印象。テクスチャは圧縮テクスチャのみでアルファもなし、ウェイトのボーン数は2、ライティングなし、ImageEffectは効果の高い Depth of field と Bloom のみ。削れるところはしっかり削って効果の高いものをしっかり選ぶのって、簡単なような意外と出来ないんだよなぁ。誰かがあれやりたいこれやりたいとか絶対言い出していちいち説得しないといけない(個人的な愚痴)。
クロスの処理を自前でやっていて、しかも計算が多い部分はネイティブで書かれているというのが印象に残った。特にAndroidで有効だったと言っていたような気がするが、Androidも IL2CPP が使えるようになった Unity5.2 以降なら、ネイティブで書かなくても遜色なかったりするんだろうか。
Unityグラフィックス最新機能ガイド
見たかったが、『Unity+スマホで3Dゲーム開発/最適化するための考え方』の方を優先させたので資料だけみたが、資料だけだとよくわからないな。動画待ち。
Unity5.3 より 5.4 の方がマルチレンダリングが更に良くなるぞ!というのは伝わった。ここまで違うなら 5.4 に移行したくなるなぁ。
ハードウェア性能を引き出して60fpsを実現するプログラミング・テクニック
3つの工夫として上げられている
- ゲームロジックを別スレッドで実行する
- GPUを多用する
- 動的なメモリ確保をしない
というのは至極まっとうな事なのだが、別スレッドを使おうとすると、ほとんどの Unity API が使えないからいろいろ自作しないといけないというのは、聞いている分には楽しいけど絶対に真似したくないよなw ゲーム側で切り分けしやすそうなものを別スレッドにするという選択肢は気に留めておきたい。
そもそも、Unityのコリジョン計算などの部分がマルチスレッドで実行されてたりしたらいいような気もするんだけど、その辺はどうなってるんだろう?
学校では教えてくれないアセットバンドルのしくみ
UnityWebRequest の事がよくわかっていないのだが、これは今までの WWW を置き換えるべきものなんだろうか。 WWW で出来なかったことや、bytes を使っていたなら UnityWebRequest を使ったほうが良いという認識でいいのか?
「学校では教えてくれない」と題目についていたので、マニアックな内容とかがあったりするのかと思ったが、そういうのはなかった。
2日目
主にグラフィック系の講演を多めに見ていたのだが、凄いなーと思った(小並)ぐらいで、あまり書けそうなことがない。
おわり。