2012/02/23「3DCGツールとUnityによるゲーム開発実践セミナー」レポート その2:マトリックス「Ragdoll」開発事例

ようやく書く時間が出来ました。1週間ぶりです。


前回の記事http://d.hatena.ne.jp/ikaakira/20120311/1331485160に引き続き、
Unityのセミナーレポートです。全3部のうち、今回は第2部。
コンシューマーゲームの開発なんかでおなじみのMatrix社の講演です。


・Matrix


本講演は、GREEから配信されているMatrix社製のAndroidアプリ「Ragdoll」を題材に、
Maya→Unityへのアプローチ手法についてお話いただきました。
自社フレームワークも持っている中で、Unityを選んだ理由、
スマホ向けにビルドするための苦労など、実践的なお話です。


https://play.google.com/store/apps/details?id=jp.gree.android.pf.greeapp3130

                                                                                            • -

アジェンダ

  • プロジェクト
  • Ragdoll」とは
  • Unityを選んだ理由
  • プロジェクト構成
  • 実際の流れ
  • アニメーション
  • マテリアル
  • GUI
  • AssetBundle
  • フォント
  • ライティング
  • ラグドール
  • シーン分け
  • 課題
  • 要望
  • よかったこと
  • まとめ
  • Q&A


■プロジェクト

  • 2011/1スタート
  • 目的:短期間・低コスト・成果


■「Ragdoll」とは

  • ジャイロと物理演算を組み合わせてぶらぶら揺れる
  • 必須条件:リアルに見える・揺れる・カスタマイズ(キャラクター・UI)・かわいい


■Unityを選んだ理由

  • Androidネイティブ開発も検討したが・・・→Unityで!
  • いろいろゲームエンジン触ってみたけれど・・・
    • リアルさ
    • シェーダをカスタマイズできるのが決め手。Unrealとかはできないのか?)


■プロジェクト構成

  • 初期:計5人
    • プロデューサー:1(ベテラン)
    • プランナー:1(中堅)
    • プログラマー:1(中堅)
    • テクニカルアーティスト(TA):1(ベテラン)
    • デザイナー:1(新人)

※新人からベテランまで多様な配置をこころがけた。
※Unity Proライセンス使用は、プログラマーとTAのみ


■実際の流れ

  • Unity3.4.2pro + maya2011
  • モデルはNurbsからポリゴン化。やり直しが利きやすい
  • キャラごとにリグをカスタマイズ。ペイントウェイトでスキン設定。
  • 複雑なUIは、mayaで作成
  • 受け渡しはFBXで。
    • mayaでやること
      • メッシュ作成
      • ジョイント
      • モーション
      • UI
      • マテリアルの仮付け
    • Unityでやること
      • マテリアル
      • Pysics(物理設定)
      • プレハブ化(Unityのプログラムで扱えるように部品化することです) 
  • 腕や足などの各パーツは、原点をボディパーツの頂点にスナップできる。
    • どの頂点にも。カスタマイズが面白い。
    • 法線方向にスナップする。


■アニメーション

  • モデル用のFBXと、アニメーションFBXを別に作成。
    • アニメーション用には、モデルの変わりにロケータをつける
  • Unityでの作業
    • AnimationClip(Unityで扱えるアニメーションデータ)を複製
      • 元のFBXは不要になるので削除。アニメーションだけ残せる!
    • データ変更の仕組みを自動化した。


■マテリアル

  • マテリアルはUnity上で。
  • Strumpy Shader Editorを使用。
      • モバイルで使用するには重いので、手直しが必要。
  • Furシェーダは別に作成。長さが調整可能。

※>Strumpy Shader Editorの参考記事。>http://www.shader.jp/?page_id=300
AssetStoreで無料配布されてるみたいですね。ノードベースのシェーダプラグイン


GUI

  • Unity標準の「GUI Texture」は使いづらい。
    • 解像度、縦横費の違いに対応しづらい
    • DrawCal(描画回数)が増える。
  • 「EZGUI」を使用!
    • レイアウトが崩れない
    • テクスチャアトラス(テクスチャをまとめること)で、マテリアルを1つに出来る。
    • ボタン、スクロールリストなど豊富な機能。

※参考記事。$200もするんだ!>http://d.hatena.ne.jp/nakamura001/20110804/1312481838
※こっちも>http://blog.cshool.jp/2011/10/4090.html



■AssetBundleの使用

  • 複数シーンのテクスチャをまとめて高速化を図ろうとしたら・・・
    • ロードが長くなった!!
    • データ更新が面倒!!
  • UnityのAssetBundleを使用!
    • シーン・データごとにAssetBundleを作成。
    • 更新確認して、必要なものだけ追加・更新。
    • アプリのビルドと、AssetBundleのビルドバージョンをあわせる必要がある。

※ここにAssetBundle関係の記事リンクあります>http://aretokore.jp/blog/2011/05/unity.html
(AssetBundle以外の記事も充実してます。EZGUIとかも)
※僕自身、これが何なのかよく分かっていませんが・・・




■フォント

  • Unityでは、フォントテクスチャを2048x2048に収める必要がある。
  • 「ひま字」フォントを使用。
  • スプライトテキスト(使用する文字だけ抜き出す機能)は、使用しなかった。
    • ユーザー独自ネームのため。

※ひま字フォント>http://www.kfstudio.net/himaji/


■ライティング

  • Unityはモバイルでシャドウマップが使えない。
    • Blob Shadow Projectorで丸影を実装。
  • ピクセルライトカウント」というパラメータを減らすと、負荷が減る。
    • 見た目はあまりかわらないのでオススメ!

※Blob Shadow Projectorは標準機能みたいですね>http://d.hatena.ne.jp/nakamura001/20110528/1306603307


ラグドール

※ここでいうラグドールは商品タイトルではなく、3D用語としてのラグドールです。
参考→http://www.4gamer.net/games/039/G003948/20080208032/

  • Ragdoll Wizard」機能を使用。←これmaya?
  • 耳などには追加でジョイント、剛体設定
  • モデル修正のために、maya上でのクラスタを合わせておく。
    • →再設定の必要が無い。

※このへん、内容はだいたい分かるのですがmayaでの具体的な設定方法は分からず・・・

Ragdoll WizardもUnityのAssetみたいですね。>http://unity.creator.ms/unity-005.html




■シーン分け

  • 初期
    • 作業者ごとにシーン分け
    • スクリプトシーンを、GUIシーンに追加していた。
  • EZGUI導入後
  • エクセルでパラメータ管理→マクロ→Unityに流し込む
  • Subversion
    • バージョン1.7以降であれば、使用に問題は無い。


■課題

  • リソース管理・まとめ方は一考の余地あり。いい方法があれば教えてほしい。
  • ロード時間の短縮。


■要望

  • 受け渡しフォーマットの強化。
    • Phisycs、マテリアル、AnimationClipなど、mayaからそのまま持ってこれれば。
    • AssetBundle互換問題
      • モバイルでも、CPUプロファイラが動いてほしい(よくわかんない)


■よかった事

  • チーム力・開発力の向上。
  • 実装までの速度アップ。再生ボタンを押すだけ!
  • コミュニティ(facebook Unity助け合い所)の存在
    • Unityは異例の盛り上がり!
    • OPEN化!


■まとめ

  • iPhoneAndroidで迷った。
  • Unityは画材のようなもの。使い方次第で変わる。
  • 目的のうち「速い」は達成できなかった
    • ものは出来るのだが、チューニング、リリースまでの時間がかかった。
  • 最後に・・・

とにかく作ろう!!!

  • お仕事お待ちしております。スマホ・デモ・プロトタイピングなど。
    • unity_inquiry@matrixsoft.co.jpまで


■Q&A

  • EZGUIのバグは?端末依存とか、ボタンの反応とかであると聞いたが?
    • バグはあったが、開発上、大筋では問題なかった。
  • mayaでのUI作成と、EZGUIをどう組み合わせたのか?
    • ボタン挙動はEZGUIで。
    • mayaのUIは、プログラムでアニメーションを実行しているだけ。
  • シーンきり分けについて詳しく
    • デザイナー・・・maya上でレイアウト。UnityではUIシーンを構築せずに、プレハブ化まで
    • プログラマー・・・プレハブを呼び出すだけ。
  • アニメーションデータが、メモリを圧迫してしまう・・・
    • 複製したアニメーションクリップを動的に読み込んだり
    • プレハブにアニメーションを仕込んだりしている
  • FBXに入っているアニメーションデータを全て載せるのがきつい・・・
    • 必要なものだけを読んだりしている。
                                                          • -

・・・と以上になります。


改めてまとめてみると、各要素ごとにしっかり整理されていて、
非常に分かりやすいプレゼンでした。細かなTIPSもあったりして。


会場では、質疑応答でも見られるように「EZGUI」についての質問が多かったですね。


あとはやはりアニメーションデータの持ち方はどこも苦労しているのかな?という印象でした。
Matrixさんはそんなに問題ないようなのですが、質問者さんのほうでは
なかなか解決が難しい問題のよう。時間が短いせいもあり、あまり質疑がかみ合わない感じでした。

  • -

さて、残すはラスト第3部ですが、今日はここまで。
また来週にでも更新します。