強火で進め

このブログではプログラム関連の記事を中心に書いてます。

ダイキンCGユーザー事例セミナー2012 秋でCC2の「Unityを使用したスマートフォンゲーム開発事例」を聞いて来ました

ダイキンCGユーザー事例セミナー2012 秋でサイバーコネクトツー(CC2)の Unity を使用したスマートフォンゲーム(※)開発事例を聞いて来ました。
※「ギルティドラゴン」というゲーム

ゲーム映像CGソフト:イベント・セミナー:ダイキンCGユーザー事例セミナー2012 秋:ダイキンCOMTEC
http://www.comtec.daikin.co.jp/event/cg_sem.html

講演で使用したスライドは後日アップし、 Facebook の「Unity助け合い所」で URL を告知すると言われていました。

(2012/11/14 追記)
スライドが公開されました。

Unityを使用したスマートフォン開発事例 〜ギルティドラゴンのアートワーク〜
http://www.slideshare.net/cc2_ss/guiltydragon-artwork

(追記ここまで)

当初はインフィニティブレード系のハイエンドを想定 → ヘビーユーザー向けになりすぎてしまう

ノーマルマップはメモリ消費が大きい
    ↓
ディフューズ + Litライトに変更

選んだ理由

1. 短期間でクオリティも出したい
2. 絵を出すまでが簡単。アーティストでも操作が可能なのでアーティストがUnity上で確認可能
3. モバイルへの対応

自分たちの持ち味(CC2らしさ)をどの様にして出すか

開発環境

プログラマMacベースで開発
アーティストはWindowsベースで開発

Unity 3.5.6
検証をしつつ常に最新のバージョンにて開発

DCCツール
3ds Max

バージョン管理
SmartSVN

プログラマ、デザイナー、サーバプログラマなど含めて 12〜18名 で開発

3dsMaxで制作したもの

  • キャラモデル
  • 背景モデル
  • デモシーン

カメラ、エフェクトはUnity上で

キャラモデル

キャラメイクをするのでパーツごとに分割して作成

■ポリゴン数
髪:500-2000
顔:500-1000
上半身:1500-2000
下半身:1500-2000
武器:1000
追加アイテム:500-2000

全体
3500-7000ポリゴン

■揺れもの
Unityで設定

  • CharacterJoin
  • ボックス型のコライダ
  • カプセル型のコライダ

モデルのボーンに設定

設定

  • シンプルな構造
  • 破錠しないように
  • 干渉への対処は角度制限

ランプシェードとリムライトの組み合わせ
リムを減算にしたり、数値を変更する事でバリエーションを出す

アーティスト側がUntiyで大まかに作ったものを最適化

1つのシェーダをUnityのインスペクタ上で調整
プログラム側でシチュエーションに合わせて適用

エフェクト

アニメーション

  • 3dsMaxからモーションデータを出力
スクリプトでの拡張
背景
  • バトル用の背景
  • 1種類x4パターン
  • 闘技場
  • 昼/夕/夜/雷雲
冒険用の背景
  • 4種類x3パターン
  • 街/草原/森林/荒野
  • 昼/夕/夜
  • カキワリ状に前面のみ作成
  • 近景、中景、遠景の3層準備、それぞれのスクロール速度を変更
アニメーション

3dsMax上で作成

アニメーションカット毎に出力
ボーン情報のみ使用
ものによってはエフェクトの軌跡などをUnityで使う

カメラアニメーション

カメラアニメーションをFBXで出力

通常はFBXではカメラのアニメーションを出力出来ない
    ↓
エクスポータ、インポータを自作

開発上の問題点と解決方法

開発における問題点

1. カメラアニメーションのインポート
2. 外部データ(AssetBundle)の作成方法
3. 描画負荷
4. 解像度
5. iOS/Android固有の問題

カメラのアニメーションを簡単にFBXとして出力してUnityに持って来たい
    ↓

  • インポート、エクスポートするツールを作成
  • ボックスを配置し、その座標を使う

問題:Unity上で外部データを簡単にエクスポート出来ない
ツールを作成
シンプルなエクスポーター
一覧から出力したものをチェックすればエクポート出来る様に拡張を作成


問題:ハイクオリティな表現は描画負荷が大きい
こまめなリダクション作業

  • 各端末で繰り返しチェック
  • モバイルシェーダの利用
  • シェーダの軽量化
  • モデルやテクスチャの軽量化(テクスチャサイズを小さいものに変更するなど)
  • (揺れものなどの)コリジョンの設定を変える
  • 自前のシェーダ部分は精度を下げる

問題:iOSAndroidは解像度が違う
iPhone4基準で色と解像度を決定
拡縮処理と黒ベタでの塗りつぶしで対応

問題:iOSAndroidの同時リリース

端末毎のチェックが必要
  • GPUごとのチェックが必要。特定のGPUのみで発生する問題が有る
  • 発生した問題点としては表示がくずれる。クラッシュする
良かった事

3dsMaxを利用したワークフローをスマートフォン

反省点

Androidへの対応

  • 早い段階からのチェックや検証
内部データと外部データ(AssetBundle)
  • 外部データの読み込みに時間がかかる
  • 内部データと外部データのバランス
QA

Q:2DのUI部分はどの様に作成したのですか?
A:NGUIなどは使用してない。プログラマが自作


Q:Unity上でのエフェクトについての質問。加算や乗算などで前後関係の面でちらつく事が有るのですがその様な症状はどの様に対応されていますか
A:アルファを含んだものは使ってない。基本、加算する。カメラの前にエフェクトを付けて擬似ポストエフェクトの様な使い方も


Q:AssetBundleをどの様な単位で切り分けしたか
A:大きな部分はシーンごと。武器などのパーツはプレハブ毎にBundle化。カード類も同様。


Q:シーンはどの様な単位で切り分けしたか
A:ゲーム画面中に表示されるタブバーのアイコン単位ぐらいで分割した