Windows 10、DirectX 12、Kinect、PlayStation 4、VRヘッドセット対応、Unity 5への移行に見るUnityの可能性と課題Unite 2015 Tokyoリポート(3/3 ページ)

» 2015年05月11日 05時00分 公開
[高橋美津@IT]
前のページへ 1|2|3       

コロプラの開発現場から見た「Unity 4.x」から「5」への移行における「落とし穴」

 Unityの最新版である「Unity 5」では、より高い表現力を持った作品の開発を可能にする多くの新機能が搭載されている。ビジネスとしてUnityによるゲームを作っている開発者にとっては魅力的な一方、以前のバージョンで作った作品が問題なく動作するかどうかは極めて重要な問題である。複数のバージョンに対する開発、保守、サポート体制を維持し続けることは、人的リソース面、コスト面の双方でビジネスに大きなインパクトを与えるためだ。

コロプラ 技術開発チーム 池田洋一氏

 Unite 2015では、コロプラの技術開発チームに所属する池田洋一氏が登壇。同社のプロダクトである『白猫プロジェクト』をUnity 4から5へ移行した事例を通じて、その中から得られた知見や、発生する問題への対処方法を紹介した。実際に移行に取り組んだ現場の「生の声」を聞けるセッションとあって、多数の来場者はメモや写真を撮りながら熱心に聞き入っていた。

 同社では、以前、iOSのバージョンアップで画面の回転処理の変更が必要になった際、『スリングショットブレイブス』というゲームにおいて、Unityのバージョンを上げる作業を行ったという。結果的に、複数バージョンのアセットバンドルを管理することになり、チェックコストの増加などから大変な苦労をしたそうだ。

 『白猫プロジェクト』は、これまでUnity 4.5で作成されていたが、4.6.2以降ではiOS向けの64bit対応が行われており、そのサポートに合わせて「今後、バージョンアップが必要になる可能性を考慮して、できる限りバージョンを上げておく」方針を採ったことが、Unity 5への移行を進めるきっかけになったという。実際の問題として、Unity 5では4から多くの仕様変更が行われており、細かい部分での処理変更やバグ対応など、かなりの作業が必要になっているようだ。

 池田氏は、Unity 4から5への移行プロセスとして「エラーを取る」「うまく動かないところを直す」「(Unityの)新しいバージョンが出るのを待つ」の3つを挙げた。

エラーを取る

 まず「エラーを取る」というのは、バージョンアップで仕様が変更されたために発生するエラーを直していく作業になる。最初に問題になるのは、cameraやrigidbodyなどにおいて、小文字によるアクセサー系がなくなっていることだ。これについては、「API Updater」と呼ばれるツールで自動的に修正が可能になっている。ただし、この際にも一点問題があり、「AddComponent(String typename)」のコードをこのツールで自動アップデートすると、Unity Editorでは実行できるが、端末向けにビルドした際に実行ができないコードが生成されてしまうという。この問題を回避するためには「System.Type.GetType("Typename")」メソッドを利用して、あらかじめタイプを取得しおき、それを引数にして「AddComponent」を呼び出すという処理に書き換えておく必要があるという。

cameraやrigidbodyなどにおけるUnity 5になった相違点(池田氏の講演資料より)

 その他一部のメソッドについて、例えば「InteractiveCloth」は「Cloth」、「ClothRender」は「SkinnedMeshRenderer」といった形で変更が行われており、その利用方法にも変化(例えば、「Cloth」では頂点固定の方法が変更されている)がある。また、TextureFormatの一部が削除、AnimatorStateMachineのGetStateMachineが配列アクセスに変更、BB10Playerの削除などの変更が行われているため、エラーを確認しながらその都度直していく作業が最初の段階で必要になる。

Clothの頂点固定(池田氏の講演資料より)

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

 次の段階は、コード上はエラーが出ていなくても、開発者の意図通りの動作をしていない部分を修正していく作業だ。『白猫プロジェクト』においても、複数の修正が必要になったという。以下に、その一部と、実際の対処方法について紹介する。

  • 症状:タイトルのアニメーションが動かない
    理由:Unity 5では「ルートモーション」の仕組みが変わっている。従来と同じ挙動にするには、Animator上で「Apply Root Motion」のチェックを外す
  • 症状:表示するグラフィックのアウトラインが膨らんだ
    理由:「Scale」の仕様が変更されていた。「UnityCg.inc」の中にある組み込みのマクロを使うことで問題が解消できる
  • 症状:Unity 4.xでは問題なかった「CubeMap」が5では反映されない
    理由:「TexGen」がなくなった。これについては、VertexShaderを使ってCubeMapのUVを自分で計算することで解決
  • 症状:クエスト選択画面の背景が黒くなる
    理由:「RenderTexture」へ描画するカメラの破棄に関する処理が変わっている。カメラを削除すると、RenderTextureそのものも一緒に消えてしまう。Unity 5で同様の結果を得るには、CameraからRenderTextureの参照を外してから、Cameraを破棄(Destroy)する

 その他にも、「厚みのない板にモーションが設定されたキャラクターを表示させた場合に表示が崩れる」という不具合があったという。これはiPhoneだけで起こる現象で、場合によってはiOS自体をクラッシュさせる重大なものだった。調査した結果、この不具合はOpenGL ES 3.0,Metalでのみ発生していたためOpenGL ES 2.0のみにすることで回避できることが分かった。しかし「根本的な原因は不明」という。その他iOSでは「DynamicBatchingで強制終了する」という、同じく原因不明の不具合があり、こちらも機能をオフにすることで対応したという。

キャラの顔が壊れる(池田氏の講演資料より)

 池田氏が「致命的だった」と話すのは「CharacterController」の挙動そのものが変更されていた点だ。具体的には、キャラクターの衝突判定が変わってしまっていたため、マップ上に設けていた「仕切り」を、主人公キャラクターが全て「乗り越えて」動き回れるようになってしまったのである。これについては、全ての「SphereCollider」を「CupsulCollider」に変換することで対応した。「SphereCastでチェックする方法もあったが、できるだけプレーヤーは修正しないようにした」(池田氏)という。

 また、シーンに適用したLightMapについて「動的切り替えができない」という問題も起きた。これについて、『白猫プロジェクト』では冒頭のカットシーンでのみLightMapを使っていたため、使わない方式に変更したという。「今後は3Dツール上でLightMapを付けてしまい、UnityのLightMapは使わない方向も検討している」という。

(Unityの)新しいバージョンが出るのを待つ

 ここまでの作業で対応が不可能なバグや仕様については「(Unityの)新しいバージョンが出るのを待つ」ことになる。『白猫プロジェクト』の移行作業においては、「Animationにおいて、マテリアルのαアニメーションが反映されない」というバグが発見され、これについてはすでにリポートを行って修正を待っている段階だという。

Unity 4.xと5におけるαアニメーションの違い(池田氏の講演資料より)

 また、Unityの「IL2CPP」(C#をC++に変換する技術)を利用してiOS 32/64bit両対応のアプリを作成した場合、バイナリサイズが非常に大きくなってしまうという仕様上の問題も残っている。Unity 5版の『白猫プロジェクト』では、IL2CPPでアプリを作成した場合、サイズが200MB近くに達したという。App Storeでは100MBを超えるサイズのアプリはWi-Fi経由でしかダウンロードできないため、大きな問題になる。Unity側でも、この問題は把握しており、現時点ではUnity 4のパッチベースで対応が続いている。他のアプリでは「4.6.4p2」で「4.6.2」と比較して半分以下のサイズになっているという実績もあるため「5でも対応されるのを待ちたい」とする。

 池田氏は最後に、Unity 5版『白猫プロジェクト』について、「カラー(アルファ)アニメーションのバグ」「IL2CPPのバイナリサイズ削減」「LightMapへの対応についての社内方針」といった課題がクリアされれば、リリースが可能になるだろうという見解を示した。

関連特集:知ってレベルアップ ゲーム開発最新事情

本気でゲーム開発に取り組むあなたに ゲーム技術最新動向



前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。