Fate/Grand Order × Unity × デザイン塾
4/23に行われた「Fate/Grand Order × Unity × デザイン塾」に行ってきました。 簡単ですが、その内容をブログに書いていきたいと思います。
オフィスの印象
今回の会場はディライトワークスさんのオフィスで行われました。 おそらく、新しく引っ越しをされた新オフィスだと思われ、とても綺麗でした。
写真はとっていないのですが、デスクは四角形で、周りが少し高いパーティーションで囲まれています。 机に座っている人は1人~2人で、13時前後でした、休日出社をしている人は少ない感じでした。
白いイケアで買ってきたような棚が壁に埋め込まれ、一部はオライリーなどの技術書が並べられていました。 また、空いた棚のスペースには、フィギュアが結構並べられているのが印象的です。 ファミリーマートのオフィスコンビニがあったので良いなと感じました。 真ん中付近にガラス張りの部屋がある、これが気になりました。 会場はオフィスの端っこの普段会議室で利用されていると思われる部屋でした。
ディライトワークス流Unity活用術PLUS
今回はデザイン塾の内容はUniteでのセッションを踏襲したものとのこと。 Uniteのレポートはこちらを参考に。 【Unite Fate/Grand Orderにおける、ディライトワークス流Unity活用術】
今回の勉強会で者、そのUniteで話をしなかった部分もPLUSをしているとのこと。
Fate/Grand Order - デザイン編
バトルキャラクター
- キャラ設定
- 素材(立ち絵、コンテ)
- バトルキャラ(線画、最終コンテ)
上記のような形でキャラクターが作成される。
次に線画、着色、テクスチャ分割、各進化段階を書き起こしていく。 アニメーションをさせるため細かいパーツをも別に書いて行く場合がある。 これは分割をしないとアニメーションできないキャラクタもいるため。
どの段階でもTYPE-MOONと調整を行い細かいチェックが入る。
線画を作る上で注意点
登場キャラクターはリアル等身ではない。 少し縮めているので、頭が大きくなったり、足が短くなったりしてしまう。 また、アニメや他のFateシリーズのゲームに出ているキャラクターはファンのイメージができているので、そこの齟齬がないようにしなくてはいけない。
ゲーム内で使用するエフェクトに関しても、キャラクター製作時記載をしている。 最後にキャラクター・テクスチャ・コンテを使ってモーション(モデリング、リギング)の作成を行う。
リミテッドアニメ
TYPE-MOONの監修の元mayeでアニメーションに落としこむ。 モバイルを考えてビルボードでキャラクターを作成する。 アニメーションについて、まずコンテをTYPE-MOONで書いていただき、技術的な制約があり、出来るできないがあるので、お互い相談をしながら最終コンテに落としこんでいく。
モーションの非共通化
作品の熱量が大きいので、ロンチ直後は各武器に応じてモーションを共通化していた部分を改め各キャラごとに実装をしている。 大変だが、嫌ではない。 2015年末頃から、ユーザーからモーションが良くないという声が増えていった。 その大多数は、ロンチ当初に入っていた共通化されたキャラクターについてだった。 モーションの動きを良くしていったために、初期のモーションの出来が落ちていると見られたのが原因。
宝具に関してはアニメーションとは別にコンテがあり、それをuSequencerで制作。 演出を可能な限りコンテ通りに実装をしたいので、プログラマさんが頑張って日々つくっている。
Fate/Grand Order - 実装編
バトルキャラ編
当初はどのようにするかを色々試行錯誤していた。 キャラの等身も3〜5等身で検討をしていた。 多関節キャラクターを動かすためにSpineを検討したが、3D空間で派手な動きを見せることができないので諦める。 最終的にはMayaを使って作成。 キャラクターは平面、ただ振り回し系の武器に関しては3Dで作るルールを決めて行っている。 髪の毛などはループアニメメーションで対応
インビジブルエア問題
エフェクトに関してはプログラム側でどうにかする。 プレハブを手や足などエフェクトを発生させる位置に配置しエフェクトを乗っける。
進化問題
キャラクターは3段階進化する。 そのテクスチャは1データに全部突っ込んでいる。 テクスチャサイズは、現在は2048*2048に。 ボーンは極力共通化。 プログラムで表示非表示を設定。
この方法はミルフィーユだから重いと噂が流れた。 実際の負荷はほとんどない。
アニメーション
バトルキャラの動きをユニークにしたい。 PlayMakerを使って解決。 状態の移り変わりでアクションを実行することができる。
アニメーションの作成の流れ
- デザイナーがバトルキャラをMayaで作成
- デザイナーが(攻撃)エフェクトを作成
- PlayMakerのアクションをプログラマが書く(アニメ再生、音声再生、エフェクトの生成など)
- Unityエンジニアが上記を使ってPlayMakerで組み込む
カメラの動きもPlayMakerで管理。 ダメージ値をプログラム側で作成し、PlayMakerで呼び出している。 結構メンドくさいが、PlayMakerを使えば相当柔軟にできる。 この辺りやっているUnityエンジニアに話を聞くと、実際に画面上で動くと楽しいたしいです。
「PlayMakerの柔軟性+Unityエンジニアのセンス」でアニメーションは作成されている。 Unityエンジニアはプランナーでもない、デザイナーでもない、プログラマでもない、Unityを使うならではのポジション。
宝具編
ゲーム中で利用できるいわゆる「必殺技」 これもPlayMakerで作ろうとしたが、
- どこで何が起こっているかわからない。
- 位置合わせ、タイミングなどが柔軟でできない。
- そもそもアニメーションをバリバリ作れるUnityエンジニアがいなかった。
uSequencer
タイムラインでオブジェクトをおいて何かを行うカットシーンエディタあれば便利。 当時そこそこ行けていたuSequencer。 シーンにおいたものを動かしたり、音を鳴らしたり、色々出来る。 横軸が時間のタイムラインで編集できる。
uSequencerを使う
テンプレートシーンにバトルキャラにおく。 エフェクト、カットインをシーンにとにかく置く。(非表示で) カメラ設定、オーラ、エフェクト、煙、色々割り当てて、あとはひたすらタイミング通り動かす。
宝具制作環境
実行ボタンを押せば、uSequencerのシーンが再生される独自環境を作成。 これでデザイナーだけ宝具の演出が作れる。 宝具を作成するのはデザイナーだが、それが実際のUnity上でで動くかを確認するのがUnityエンジニア仕事。
難しい演出はプログラムで実装、現状できないことはアプリ更新のタイミングで機能を足す。
- 画面をグレーにする
- キャラを変身させる
- キャラの進化段階を宝具中で切り替える
- アニメーション再生
- 音声再生
- 背景変更
- カメラを動かす
- 色変更
このあたりプログラマで対応をして作成している。
これでデザイナーのみでガンガン作れることができる。
こぼれ話
- 30fps
- 100M=200Mメモリ
- Android4.1 iPhone5以降
- テクスチャ バトルのみ20482048 * 9 + α
- ドローコール 100
- ポリゴン数は30000
その他CRIADX2を使って音声を管理。 デフォルトのSoundManagerだと音の遅延があるので、ADX2を採用。
uSequencerのバージョンは 1.3.7.1。 最新の1.5系ではpropertyタイムラインの編集がしずらくなっおり、バージョンアップはしていない。 この辺りは問い合わせ中。
PLUS
ここからはUniteでは話の出ていなかった部分になります。
PLUS1 Unityエンジニアとは
そもそも定義がはっきりしていない。 「Fate/Grand Order」でいうUnityエンジニアの仕事は
- 素材データの発注
- 素材データの組み込む
- エフェクトの発注
- バトルキャラを作る(PlayMaker)
- バトルキャラを監修に提出
- 宝具の組み込む(uSequencer)、調整、発注
- その他色々
必要スキル
- Unity基本的な操作
- gitの基本的な操作
- 内部メンバーとのコミュニケーション(エフェクトなどの発注等)
- 監修元とのコミュニケーション
- コンテなどを元に要求通り動きをアニメーション作成
- PlayMakerを使いこなすプログラム視点、ロジカルな視点
- Fate愛
PLUS2 ギルガメッシュ(新)を見てみよう
もちろんPlayMakerを使って作成している。
- クイック攻撃
- アーツ攻撃
- バスター攻撃
- エクストラ攻撃
各攻撃が連続した動き場合で分岐をさせている。 味方側敵側でさらに分岐。 一つの攻撃に約40個のアクションを入れている。
PlayMaker Stateについて
わかりやすいように色をつけて機能を判別している。 主なPlayMakerでの処理。
- 前回の行動者分岐
- カメラ処理
- ボイス分岐
- 待ち
- 敵味方区別
- エフェクト・アニメーションの再生
- 各種処理(ボイスなど)
PLUS3 unityエンジニアは何人。
この部分はオフレコでした。
パネルディスカッション
アセット分割単位は、どうなっているのか(AssetBundle)
例えば、バトルキャラはこのような感じ。
- Mayaで出力した3Dキャラ
- バトル画面の左下のバストアップ画像
- コマンドカードの横向き画像
- コマンドカード宝具名称
- 後のせ用エフェクト
これで一つのAssetbundle
Assetの運用について
Assetbundleで上げている。 Audioに関してはではCRIWAREを使用されている。
ヒットするための3つの要素
- 誠実に作っているか
- 面白いか
- 運
運の要素が結構ある。
社内で流行っているゲームとかないのか?
FGOしている人多い、課金勢が多い。 もちろん自腹で、社内割りなどはない。 ガチ勢。
コミュニケーションについて
チャットツールでとりあえず言うことができる。 これがいい、あれがいいと言える状況ではある。 みんなでどういうゲームにしようと常日ごと話し合っている。
IPモノなので、版元とのコミュニケーション大事 ただ、役割は縦割りになっていない、TYPE-MOONさんの担当者さんとは毎日話をしている。 版元と一緒にゲームを作っている雰囲気はある。 大きいチームではないが、TYPE-MOONさんがQualityにこだわって作品を作っているという認識があるので、みんなで面白いものを作ろう頑張っている。
個人的に聞いてみたこと
懇親会で直接聞いてみたこと。
uSequencerについて
今から新しく使うには「イバラの道かも」。 理由は、話しに出たバージョン問題で、今のバージョンはとても使いにくい。
uSequencerは裏側が見えない部分が多いが、その辺りは大丈夫なのか。
使い始めた時に、通常のuSequencerを利用していたためソースコードがない状態で運用をしている。 この部分に関してはソースコードがあればよかった。 今から使うなら、ソースコードがついてくるuSequencerを使ったほうが良いのではないか? メンテナンス等、バージョンアップができないので不安を感じている。
デザイナーとUnityについて
Unityの知識はあったほうが良い。 特にuSequencerに関してはShrunkenなどでエフェクトを作る必要があるので必須になってくる。
usequencerで使うパーツについて、どれくらいの単位で用意されているのか
エフェクトや画像データ、ボイスなどプレハブ単位で用意をしている。
シェーダについて
基本有るやつを使っているが、必要に応じてデザイナーもしくはプログラマが作成している。 ただ、シェーダは特殊で、参考になるものがとても少ないので、大変な分野である。
最後に
今回の「Fate/Grand Order × Unity × デザイン塾」に関しては、先日のUniteを踏襲した形で行われたましたので、ほとんど重複をした内容でした。 ただ、2回めということもあるのでディライトワークスさんのUnityの使い方に関してより理解ができました。 また、ここだけでしか聞けない内容もありとても良かったです。
個人的にuSequencerが色々な表現ができるのではないかと注目をしています。 FGOの宝具の表現はとても綺麗なので、これが実現できるのはとても魅力だと感じます。
Unityエンジニアの仕事に関しては、おそらく千差万別、場所によって必要なスキルが違うと思われますが、ディライトワークスさんではプログラマとデザイナーを繋ぐ「テクニカルアーティスト」のような存在なのではないかと感じました。 Unityでは色々できる代わりに必要になる知識も広くなります。 私もプログラムだけではなく、エフェクト・3DCG・シェーダに興味があるので、このような形で仕事ができれば良いなと感じているので、現在進行中で勉強もしています。
他の会社のオフィスに行くのはとてもテンションがあがるので、今回のデザイン塾はとても楽しかったです。 ディライトワークスのオフィスはとても綺麗でした。Fateのフィギュアを机においている人も多かった。アレって社内で貰えるのかな?貰えるなら羨ましい><
Fate/Grand Order セイバー/アルトリア・ペンドラゴン[オルタ] ドレスVer. 1/7 完成品フィギュア