Unite 2015行ってきました（DAY2・講演）

# はじめに
* DAY 2 ／ Unite 2015 Tokyo, 2015.4.14 で私が見てきた講演についてまとめました。
    * http://japan.unity3d.com/unite/unite2015/schedule


# 講演内容


## [GREEN] VRコンテンツ開発の勘所（10:30-11:15）
* 講演資料
    * （準備中）
* 印象に残った説明
    * オキュラスプラットホームを用意
        * Oculus Share：開発者間公開用Webページ
        * Oculus Platform：一般ユーザー向け公開など
            * Oculus Platformは、OculusVRを付けたまま操作（アプリの選択や実行）が可能
    * OculusVRは、ただスマホを付けているだけではない
        * 加速度センサをスマホと別に用意
        * スマホ上で描画が追いつかない場合は、フレームをスキップする機能などが入っている    * 
    * VR開発のためのテクニック
        * 60fpsは死守すること！！
            * VR酔い（ベクション）が出てしまう
        * VR酔いする順は、壁や地面が遠く ＜ 近く
            * PC版
                * カメラをキャラクターの近くに配置
                * カメラの向きは、キャラクターに完全追従
                    * **没入感が高いが、真後ろを向くときなどの操作感が辛い**
            * スマホ版
                * カメラをかなり遠くに配置
                * カメラの向きは、キャラクターが画面の中央からずれてからゆっくり追従
                    * **VR酔いは少ないが、没入感が落ちる**
        * VR空間内のUI（メニューなど）は、ちょっと立体っぽくすると違和感を感じなくなる
* 感想
    * GREENセッションとは思えない密度の濃い内容でした。
    * 今回の出展では、コロプラさんの「白猫プロジェクト」に関して様々な切り口でセッションを立てているのでunityで一つの製品を作るための方法が理解できたように思えます。


## [BLACK] Unityプロジェクトをひも解き把握するには（13:00-13:45）
* 講演資料
    * http://japan.unity3d.com/unite/unite2015/files/DAY2_1300_room2_Yamamura.pdf
* 印象に残った説明
    * unityのデータ構造について
        * プロジェクト
        * シーン
        * オブジェクト
            * オブジェクト間のメッセージ
        * コンポーネント
    * unity関係者でもunityのオブジェクトの関連をそのまま確認するのは大変！
        * **エディター拡張を使用してサポート** （近々公開予定）
* 感想
    * 膨大なunityのデータコードがどういう構造になっているのか、どうやったら解析できるのか、どういうアプローチでデータを解析していくのか、その解析アプローチでエディター拡張を作成するのか、を実際の画面を交えて丁寧に解説してくれました。
    * 把握しきれなかったですが、一番勉強になったセッションです。


## [BLACK] エディター拡張マニアクス 2015（14:00-14:45）
* 講演資料
    * http://japan.unity3d.com/unite/unite2015/files/DAY2_1400_room2_Ando.pdf
* 印象に残った説明
    * アニメーションを作成する際のエディター拡張の作成手順
        * カスタムプレビューの作成方法
    * プロパティの名前を知る方法
        * シリアライズ化してリスト化
        * ファイルとして保存してYAMLのテキストファイルを解析
    * エディター拡張でデータを見やすくする方法
        * リスト化して配列で見やすくする
* 感想
    * 実際にエディター拡張をどのように作成するのかの解説でした。昨年も発表していたそうです。
    * 1つ前のセッションでエディター拡張の重要性を理解できたため、立ち見含めて満席で食い入るように説明を聞いていたのも納得できました。
    * プロパティの確認方法など、意外と原始的な方法でデータを取得していたのが印象的でした。unityのデータがあまりよく分からないので壊さないように～と触っているレベルでエディター拡張は作れないものだと感じました。


## [ORANGE] MEVIUS FINAL FANTASYにおけるUnity開発事例（15:00-15:45）
* 講演資料
    * http://japan.unity3d.com/unite/unite2015/files/DAY2_1500_room2_Hamaguchi.pdf
* 印象に残った説明
    *unityでの大規模開発での方法
        * 同時に同じファイルを触る際の対処方法など
            * プレハブを分割
            * 専門ツールの導入
        * キャッシュ自動作成の防止
            * 更新したデータを元にそのまま作成させてしまうと丸一日かかって作業が出来ない
                * メタデータを編集してキャッシュを自動作成しないように対処
    * モバイル端末でのHDクオリティのゲーム作成について
        * ダウンロードサイズを意識（画像データなど縮小せざる得ない）
        * GPUに応じて最適なテクスチャを選択するととでカバー（Androidは端末別に切り替え）
* 感想
    * FINAL FANTASYなどメジャーなタイトルもunityで作成していたことに驚きました。
    * 前日のセッションで、複数人で触るのが大変だという話を聞いていましたが、その辺をカバーする開発方法を独自に用意していたのが印象的でした。
    * スマホは、性能だけではなくダウンロードサイズなども考慮に入れる必要があることが分かりました。

## [ORANGE] 白猫プロジェクトの裏側！～パフォーマンスチューニングとリアルタイム通信の全て～（17:00-17:45）
* 講演資料
    * （準備中）
* 印象に残った説明
    * 独特な品質チェック
        * 開発したソフトは全社員に配布して確認
        * **子供レビューがある（小学5年生くらいの人が触ってわからない＝チュートリアルが悪い）**
    * アプリのパフォーマンスチューニング
        * **キャッシュしないと遅い**（必要に応じて使い分ける）
            * オブジェクトに関しては、常にキャッシュする
            * 音声に関しては、常にキャッシュする
        * GPUのボトルネックを解消
            * ボトルネック
                * 海の波描画部分のシェーダープログラム（fsh -> vsh側に書いて改善）
        * ダウンロード時間短縮
            * チュートリアルやカットシーンのバックグラウンドでダウンロードする
    * リアルタイムサーバーのチューニング
        * サーバはAWSを使用
            * LAMP構成
        * リアルタイム通信で共有データは必要最小限にする
            * ボスデータのみ座標、動作など完全共有（雑魚は生死情報のみ共有）
        * nginxを使用
            * node.jsを単独で動かすため
        * クライアントアプリは、DBの最大値を入れてテストしないと後で大事になる
            * 使用しているIDのDB上限がbigint（922京）だがクライアントはID指定にint（21億）を使用していたため桁あふれで同一IDを使用する問題が発生
* 感想

## [BLACK] Unity × Sprite Animation（18:00-18:45）
* 講演資料
    * http://japan.unity3d.com/unite/unite2015/files/DAY2_1800_room2_Kinoshita.pdf
* 印象に残った説明
    * アニメーション作成形式の解説
        * Maya
        * Spine
        * Puppet2D
* 感想
    * アニメーション作成形式の違いの説明でした。
    * 最終的にspineが酔いという結論でしたが、unity梱包品のPuppet2Dの説明や掘り下げをして欲しかったです。

# まとめ

* 基調講演をはじめ、各セッションの内容がとても充実していました。
* 発表者がunity関係者のものは中まで掘りさげているので次回も是非聞きたいと思いました。
* 次回参加時の心得
    * 受けるセッション優先度
        * unity関係者主催 ＞＞ unity協業主催 ＞ ブラック ＞ オレンジ ＞ グリーン
    * 継続して受けれる部屋の時はそのまま席を確保（立ち見、座り見になってしまう）
    * Oculusのデモは予約しておく
        * 1日目は予約の関係で見落としたセッションがあった