News

2015年4月16日(木)

バロンの顔が崩壊!? 『白猫プロジェクト』の“Unity 5”移行で直面した3つの困難とは

文:広田稔

 4月13日~14日に開催されたUnity開発者のためのイベント“Unite 2015 Tokyo”では、2日間にわたって40以上のセッションを実施していた。

 内容的には、万人向けの“Green Session”、開発者向けの“Orange Session”、上級者向けの“Black Session”という3種類が用意されていた。

“Unite 2015 Tokyo”
▲コロプラの池田洋一氏。

 この記事ではOrange Sessionから、13日に実施した“コロプラUnity 5プロジェクト ~白猫プロジェクトにおけるUnity 4からUnity 5への移行事例~”という講演を紹介しよう。講演者は、コロプラのKuma the Bear開発本部・技術開発本部・技術開発チームマネージャー、池田洋一氏だ。

■『白猫プロジェクト』の開発をUnity 5に移行した3つの理由と、開発で直面した3つの問題

 『白猫プロジェクト』と言えば、2014年7月にリリースされたiOS/Android向けアクションRPGで、現在3,200万を超えるダウンロード数(2015年4月6日時点)を誇る同社の看板アプリになる。

 同タイトルは当初“Unity 4”で開発を行っていたが、以下の3つの理由から“Unity 5”での制作に切り替えたという。

【Unity 5へ制作ツールを切り替えた理由】

1.iOSでアプリが64bitに対応していないとApp Storeの審査に通らなくなったため、Unityをバージョンアップする必要があった

2.Unity自体をなるべくアップデートしていなかったため、メジャーバージョンアップの今が更新のチャンスだと感じた

3.この機会に最新版に更新しておけば、他のタイトルで同様のことがあった時に移行しやすくなる

 制作ツールのバージョンが大きく変われば、通常、何かしらの不具合がでてくるもの。講演では池田氏が実際に直面した困難と、その解決方法を惜しげもなく披露していた。こちらも大きく分けて3つになる。

【開発中に直面した問題への対策】

1.エラーを取る

2.うまく動かないところを直す

3.新しいバージョンが出るのを待つ

 それでは“うまく動かないところを直す”という部分にクローズアップして、紹介していく。

 まずタイトル画面で背景は動いてるのに、ロゴだけが上に行かないという不具合が見つかった。この原因は、Root Motionの仕組みが変更されたところにあったとのこと。

 「Unity 4でRoot Motionを使う場合、親オブジェクトをつけて、それに対して相対的にアニメーションをつけていたが、Unity 5ではアニメーション側に“Generate Root Motion Curves”が用意された」と、池田氏は話してくれた。

 続けて、「そちらを使えば自由度の高い動きが実現できるが、とりあえず移行してアニメを動かしたい場合は“Apply Root Motion”のチェックを外せばOK」とも述べていた。

“Unite 2015 Tokyo”
“Unite 2015 Tokyo”
▲“Apply Root Motion”のチェックを外す。

●キャラの見た目が微妙に変わっていた

 Unity 5に制作を切り替えた際に、キャラクターの帽子やレベルを上げるソウルボード、メタル系の敵キャラなどで、微妙に外観が変わっていたそうだ。

 原因は“TexGen”がなくなったこと。“Unity 4”ではTexGenを利用して反射やCube Map用のUV値を自動で生成してくれていたが、“Unity 5”ではVertexShaderのUV値を自分で計算する必要があるとのこと。

“Unite 2015 Tokyo” “Unite 2015 Tokyo”
▲Cube Mapとは、物体への映り込みを再現する技術。あるオブジェクトを立方体(キューブ)で囲んで、その内側に映り込むであろう周囲の環境を用意し、計算して貼り付ける(マッピングする)手法だ。

 鍛冶屋の“バロン”や協力バトルの女性キャラの顔が表示されないという問題も発生した。iPhoneだけの現象のうえ、放置しているとiPhoneがブルースクリーンになって再起動するという症状が起きる。

 原因は、両方に共通する“厚みのない板にモーションをつけて動かす”という仕組みにありそうだったが、調査が難しかったそうだ。

 結局、“OpenGL ES 3.0”、または“Metal”でグラフィックを表示しようとすると起こるので、“OpenGL ES 2.0”に指定することで正常化したとのこと。

“Unite 2015 Tokyo”
▲顔はテーブルの右下と左下に分裂して表示されていたとのこと。池田氏は「移行作業の時に、登場人物の顔が分裂する、某有名なアニメが放映されていたので“あっ、はやりに乗ったのかな”と呆然としてしまった」と語って会場の笑いをとっていた。

●岩が乗り越えられる

 “Unity 5”版では、道をふさいでいる岩などの当たり判定も変わって、乗り越えられるようになってしまったようだ。当時、池田氏は「デバッグモードみたいでおもしろかったけど、ちょっとなぁ……」と感じたとか。

 原因は、“CharacterController”の挙動が変わったこと。スクリプトを自作して、一部のオブジェクトに使われていた“SphereCollider”をすべて“CapsulCollider”に自動変換して、“AssetBundle”を作り直すことで直したという。

“Unite 2015 Tokyo”
▲中央がキャラクター、地面に埋まっている左の四角と右の丸が障害物になる。Unity 4ではキャラクターが左右に動いても、当たってその先に進めない。
“Unite 2015 Tokyo” “Unite 2015 Tokyo”
▲一方、Unity 5では、右の丸だけでなく、左の結構高い四角まで乗り越えてしまっていた。これではゲーム自体が成立しない!
“Unite 2015 Tokyo”
▲オブジェクトの当たり判定を全部変換して直した。特に困ったのは、冒頭に出てくる斜めに倒れる木で、Box Colliderで囲んでいたが乗り越えられてしまった。これも新規にスクリプトを書き直したとのこと。

 こうした地道なテストを『ランブル・シティ(Rumble City)』の作業と並行して行い、ほぼ自分だけで1カ月かけて移行を実現したそうだ。ちなみに1本に集中できるなら、白猫プロジェクトの規模でも1週間ほどでできるという。

 アプリの移行を考えている人は参考にしてみてはいかがだろうか。

Copyright 2015 Unity Technologies Japan G.K. All Rights Reserved
(C)COLOPL, Inc.

関連サイト