x Unityでコンソール タイトルを移植する ドラゴンクエストVIII移植から学ぶ 大規模開発テクニック
x 2004,2013 ARMOR PROJECT/BIRD STUDIO/SQUARE ENIX All Rights Reserved.
アジェンダ DQ8開発テクニックス プログラマー編 デザイナー編 ゲームデザイン編 Unityテクニカルノート Unityと移植タイトル 2004,2013 ARMOR PROJECT/BIRD STUDIO/SQUARE ENIX All Rights Reserved.
プログラマー編
PS2 Unity(モバイル)への移植 1.ソースコードコンパイル C++ C++からC#へのコンバート作業 C++定型文法をC#文法へ変換する 変換処理 (class,staticなど) コンバートツール 半自動 の作 成 static, classの宣言など C# 結果 大幅な作業削減に成功 その後 自動化できない箇所を手動で対応
PS2 Unity(モバイル)への移植 2.リソースの仕分け 利用できる既存リソース 資産プログラムの仕分け作業 工数と相談の上 移植元の 資産を利用したもの デザインデータ (マップ キャラクター) AIデータ ソースコードからそのまま 利用できるもの そうでな 作り直したもの いものを仕分けた UIなど細かく変更点の多いものや PS2 の描画処理のようなハード依存の処理等
デザイナー編
データ変換 軽量化 データ自動軽量化 元データの変換を手動で 行う際のミスを減らすため 自動軽量化の仕組みを構築 1.メッシュの結合 2.テクスチャの結合(UV調整) 3.マテリアルのリネーム 結合 4.マルチUVの結合 5.ユニフォームスケールアニメーション変換 6.フラットアニメーションカーブ削除 7.不要なノード削除
データ自動軽量化 1.メッシュの結合 2004,2013 ARMOR PROJECT/BIRD STUDIO/SQUARE ENIX All Rights Reserved.
データ自動軽量化 2.テクスチャの結合(UV調整) 2004,2013 ARMOR PROJECT/BIRD STUDIO/SQUARE ENIX All Rights Reserved.
データ自動軽量化 3.マテリアルのリネーム 結合 2004,2013 ARMOR PROJECT/BIRD STUDIO/SQUARE ENIX All Rights Reserved.
データ自動軽量化 4.マルチUVの結合
データ自動軽量化 5.ユニフォームスケールアニメーション変換
データ自動軽量化 6.フラットアニメーションカーブ削除
データ自動軽量化 7.不要なノード削除
データ変換 軽量化 アニメーション アニメーションにおける 不要な情報のカットや軽量 化 及び最適化をモバイル デバイス向けに実施 1.スケールアニメーションの軽量化 2.FBXマテリアルアニメーション対策 3.マテリアルアニメーションの活用 4.フラット名アニメーションカーブの消去 5.不要なアニメーションの削除 6.切り分け作業
アニメーション 1.スケールアニメーションの軽量化
データ変換 軽量化 シェーダー 本作品では テクスチャに関す るアニメーションやブレンドは 全てシェーダーで行った その数は 4600個 それらを扱うための手法を 考案 実施 1.テクスチャアニメーション ブレンド 2.先読み処理
シェーダー 1.テクスチャアニメーション ブレンド 2004,2013 ARMOR PROJECT/BIRD STUDIO/SQUARE ENIX All Rights Reserved.
シェーダー 2.先読み処理 シェーダーをランタイムでコンパイルするとカクツ クため よく利用するシェーダーをまとめて 先読みして対処
ゲームデザイン編
UI思想 UIデザインの刷新 片手で遊びやすく スマートフォンで気軽にプレ オート会話機能 イしやすくをテーマにPS2 版 からUIデザインを刷新 縦持ちスタイルに変更に伴い 操作方法も簡略化 会話アクション 戦闘UI オート移動
UI思想 UIデザインの刷新 フキダシアクション オート会話機能 2004,2013 ARMOR PROJECT/BIRD STUDIO/SQUARE ENIX All Rights Reserved.
UI思想 UIデザインの刷新 戦闘UI オート移動 2004,2013 ARMOR PROJECT/BIRD STUDIO/SQUARE ENIX All Rights Reserved.
Unityテクニカルノート
ビルドサイクル ビルド時間の問題 エクスポート(Unity) 最終的に DQ8規模のプロジェ クトのビルド 実行には ゲームデータコピー 10分 30分以上必要になった 大規模開発のための効率的な差 分ビルド環境の構築が必要と感 じた 変更箇所が多いと SVNの更新時間も問題に シェーダーを全て変更すると2時間近く 待たされることも ビルド(Xcode) ビルド 10分 実機転送 10分 実機(デバイス) (シェーダーが大量にあるタイトル)
オリジナル版の当たり判定 利用資産として オリジナル版の マップデータ キャラデータ を移植 同時に当たり判定も移植 する必要があった PS2 版 マップデータ キャラデータ 当たり判定 モバイル そのまま移植した際に 当たり判定の 都合上 RayCastの判定処理が冗長に マップデータ キャラデータ なり 処理負荷が高くなったため 処理や仕様の工夫で最適化を図った 当たり判定
Unityと移植タイトル
Unityで移植を成功させるには 最適化済み データ ワークフロー ロード レスポンス 動作スペックの定義 Unity 移植元データ,プログラム
Unity 過去資産の相性 Unityである理由 過去資産とUnityの相性 言語 C# C#へのポーティング (メモリ管理 パフォーマンス) プラットフォーム依存な処理 構文,文法 メモリ管理の違いなど プラットフォーム依存処理 ハードウェア依存処理 中断セーブ可能な作りか
動作スペックの定義 1. デバイスの定義 2. OSの定義 3. スペックの定義 4. 使用ストレージ量 5. パフォーマンス デバイス OS スペック ストレージ パフォーマンス プレイヤー
最適化済みデータ インストールには倍の容量が必要!! 4% 5% 21% 16% インストールサイズ 8GB コンシューマ モバイル 21% 32% free: 1.7GB DQ8: 1.3GB モバイル用の最適化 全てを再現しない モバイル PRG コンソール PRG RES Sound Sound RES テクスチャの圧縮 最適化 データの簡略化 結合など 圧縮の検討 音質の検討
ワークフロー Git, SVN CI テストの活用 なるべく自動化 手動 ミスにつながる ビルドプロセス SCCSの活用 エディタ拡張 Unity Jenkins デバイス
ロード レスポンス RAM(1GB) 限られたリソース環境 FREE 100MB 150MB 常駐 非常駐の仕分け PRG RES DATA キャッシュの活用 常駐 体感速度の向上 CACHE ユーザーの習性 ロード時間 利用頻度が高い ユーザーの習性 行動の予測 体感速度の向上!!
Q&A