※見出しをクリックすると記事が読めます
DMMゲームズ号外を自動表示しない
号外No.1
東京ゲームショウレポート
今熱い最新タイトル情報
話題の記事

事前登録受付中!

オススメ機能
Twitter
お気に入り
記事履歴
ランキング
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

いまから始めるオンラインゲーム
モバイル版4Gamer(β)
※ドコモ旧機種には対応してません
特集記事一覧
注目のレビュー
注目のムービー
印刷2014/04/09 17:02

イベント

「ドラゴンクエストVIII」は,いかにしてスマートフォン向けに移植されたのか? 最適化からUI設計のポイントまでを開発チームが語る

Unity
 ゲームエンジン「Unity」の開発者向けイベント「Unite Japan 2014」初日である2014年4月7日に,「Unityでコンソールタイトルを移植する 〜ドラゴンクエストVIII 移植から学ぶ大規模開発テクニック〜」というセッションが開催された。

 講演の内容はタイトルどおりで,2004年に発売されたPlayStation 2(以下,PS2)用の「ドラゴンクエストVIII 空と海と大地と呪われし姫君」(iOS / Android。以下,DQ8)を,Unityによってスマートフォン向けに移植したときの体験を,開発チームが解説するというものだ。Unityのイベントとはいえ,それだけの話に止まらず,据置ゲーム機用に作られたゲームのインタフェースを,いかにスマートフォン向けに変更したのかといった,興味深い話題も披露された。

 大きく異なるハードとOSに,どうやってDQ8を移植したのか。プログラム編,デザイナー編,ゲームデザイン編と3つに分けられたセッションを,順にレポートしていこう。


PS2のオリジナルリソースの多くを継承


スマートフォン版DQ8のメインプログラマ,伊藤俊輔氏
 講演最初のテーマであるプログラム編は,DQ8の移植でメインプログラマを務めたトーセの伊藤俊輔氏が解説した。

 ハードウェアが大違いならプログラミング言語も違うPS2用ゲームをスマートフォンに移植するからには,コードの全面的な書き直しはもちろん,アセット(ゲーム内で使われる画像などのデータ)の類も作り直したのではないかと,講演が始まる前まで筆者は考えていた。ところが,実際はPS2版DQ8で使われたコードやアセットの多くを流用して作られたのだという。

 伊藤氏によると,DQ8のオリジナルコードはC++で書かれていたが,Unityでの開発にはC#を利用したそうだ。C++とC#は同じC系とはいえ,実際にはかなり異なるプログラミング言語である。そのうえ,オリジナルコードのファイル数は「ソースとヘッダをあわせて数百以上」(伊藤氏)と大量にあったので,手作業で移植していたのでは膨大な時間を要する。そこで,C++からC#に変換するコンバータを最初に作成したという。
 このコンバータは,「C++の定形文法をC#にコンバートするもの」と伊藤氏は述べていたので,それほど高度な変換をするツールではないらしい。C++からC#への文法面での基本的な変換に加えて「UTF-8のBOM(Byte Order Mark)付きファイルを作成してくれる」機能などもあるそうだ。UnityではBOM付きUTF-8のコードにしないと,日本語が文字化けしてしまうので,これは大切だろう。

オリジナルコードは数百本もあったため,コンバータを作成してC#に変換した
Unity

 コンバータの利用で「かなりの工数が削減できた」(伊藤氏)というが,もちろん変換だけでどうにかなるほど甘いわけはない。プログラマによる作業が必要だった部分について伊藤氏は,「PS2版の描画ライブラリは手作業による置き換え作業が必要だった」と述べている。また,関数の内部がうまくC#に変換できない場合,関数内をいったんコメントアウトして変換にかけ,C#のコンパイルを可能にしてから,手作業で改めて書き直すといったことも行われたそうだ。
 変換直後は,当然ながら性能面で問題が生じたという。「(UnityのC#では)ガベージコレクションが多発したため,ループ内でnewしている部分をループの外に出すなどの多数の書き換えを行った」と伊藤氏はその苦労を語った。

 とくに大きな修正が必要だったのは,DVDに最適化されていたPS2版の処理を,いかにしてスマートフォンに合わせるかというところだったという。「元のDQ8はPS2用ディスクの媒体に合わせて作られていた部分を,モバイル(スマートフォン)に持っていく作業が必要で,これが作り直しの大きな要素になっていた」と伊藤氏は振り返る。
 PS2はメインメモリ容量が32MBしかなく,光学メディアから頻繁にデータを読み込む必要がある。そのため,光学メディアへのアクセスがユーザーを待たせないようにプログラムを組むのがセオリーだ。そうした部分をスマートフォンでどう変えていくかは,プログラマの手作業が欠かせない部分になるのだろう。


メッシュやマテリアルはスクリプトを作って軽量化


デザイナー編を担当したトーセの兼古 篤氏
 伊藤氏に続いて登壇したのは,デザイナー編を担当する兼古 篤氏。兼古氏は,PS2版のアセットをUnityに変換する実作業をどのように行ったかを説明した。

 まずデザイナーの作業では,「データの軽量化がポイントだった」と兼古氏は語る。PS2版はDVDメディアを使っていたが,スマートフォン版はインターネットからデータをダウンロードするので,データ量を削減する必要があるというわけだ。
 また,兼古氏によると「PS2版のデータは,ハードの特性上,ドローコール(の数)を気にしない作りになっていた」という。PS2はドローコールが軽かったため3Dモデルのメッシュやマテリアルが,その特性にあわせて作られていたそうだ。これをそのままUnityでスマートフォンに持ち込むと,動作の快適さに悪影響を及ぼす。それもあって,ドローコールを減らす意味も含めたデータの軽量化が必要になったという。

PS2版からスマートフォン版へのモデルデータ変換を解説したスライド。画像内の左にあるのはPS2版,右が変換後のデータだ
Unity

 実際の作業では,PS2版のモデルデータやテクスチャをスクリプトで変換し,Unityに取り込んでからさらに軽量化したうえで利用するというプロセスで行われた。変換や軽量化はスクリプトを使って可能な限り自動化することで,「データ数のわりには,非常に少ない人数で作業を行えた」(兼古氏)という。

主なデータ変換・軽量化の作業を示したスライド。スクリプトを使って自動で変換する仕組みを構築して利用した
Unity

 アニメーションも同様に軽量化が必要で,こちらも多くを自動化したそうだ。兼古氏は,「移植では一般的な作業が多かった」と断ったうえで,スケールアニメーションの変換を例に説明を行った。具体的には,「トランスフォームのスケールアニメーションを頂点シェーダ側に渡して,頂点位置を動かすことでスケールする」ように変えたという。これで「60msほどかかっていた処理が15msで済み,効果があった」(兼古氏)そうだ。

PS2版では4600個ものシェーダを使用していた。シェーダを先読みするといった工夫により,シェーダ数を減らさずに性能面の問題を解決した
Unity
 データ類だけでなく,シェーダも軽量化する必要があったという。PS2版では,シェーダでテクスチャのアニメーションやブレンドを行っていたため,4600個ものシェーダが使われていたそうだ。そのため,ランタイムでシェーダをコンパイルすると映像がカクつくという問題が発生してしまったので,「シェーダを先読みするといった工夫が必要になった」と兼古氏は振り返った。
 それでも4600個のシェーダは,ほぼそのままスマートフォン版でも使われているそうで,ちょっと驚かされる。


ユーザーインタフェースはスマートフォン向けに一新


辰田健二氏
 続いて登壇したトーセの辰田健二氏は,ゲームデザイン編として,ユーザーインタフェース(以下,UI)の実装について説明した。

 スマートフォン版のDQ8は,縦画面表示になっている。一方,PS2版は横画面なので,画面の方向からして大違いだ。縦画面にした理由について辰田氏は,「(縦持ちが前提の)スマートフォンとして遊べるゲームにしたい」からだと述べている。
 辰田氏によるとスマートフォンのユーザーは「面倒,分からないと思った瞬間に,操作をやめてしまう傾向がある」という。そのため,スマートフォンを横位置で持たければ遊べないUIではなく,開発の手間がかかるのを承知で,普段スマートフォンを使っているのと同じ縦位置の片手持ちで遊べるUIにしたということだ。

スマートフォンで気軽に楽しめるように,UIはPS2版から大幅に変更された
Unity

 辰田氏は,スマートフォン版UIの注目すべき点を2つ挙げた。その1つはNPCとの会話だ。タッチパネルで仮想ゲームパッドを操作する場合,意図したとおりににキャラクターを移動させられないことがある。
 そこで,NPCとスムーズに会話ができるように,会話が可能なNPCには吹き出しをポップアップさせて目立ちやすくしたうえで,そのNPCに近づくと会話が可能なことを知らせる円を表示し,円内で立ち止まれば自動で会話が始まるといった工夫を盛り込んだという。

会話関連の改良点。仮想ゲームパッドの制約を考慮して,会話を始めやすい補助機能を取り入れた
Unity

 戦闘面でも,UIにはさまざまな改良が盛り込まれたそうだ。自動要素を増やしたり,以前に選択した項目を選択しやすくしたりといった工夫で,操作を容易にしたと,辰田氏は述べている。
 移動面でも,長距離移動では自動で移動を続ける機能を盛り込むことで,仮想ゲームパッドを押し続けるわずらわしい操作を排除したとのことだ。これらの工夫により,「(スマートフォン版は)非常に操作しやすくなっている」と,辰田氏は胸を張る。

戦闘は自動化を進め,同じ項目は選択しやすくした。移動も自動化により,画面を押し続けなくてもいいように改良されたという
Unity

 スマートフォン向けに移植されたゲームでは,オリジナルをできるだけ忠実に再現しようとするあまり,スマートフォンの特性への配慮が不十分になってしまいがちだ。とくにDQ8のようにネームバリューのあるタイトルで,操作性を一新してしまうというのは,開発者としては勇気がいることだっただろう。それを成功させたスマートフォン版DQ8の知見は,貴重なモデルケースになりそうだ。


マルチプラットフォーム対応の利点は大きいが,移植にUnityを使うべきかをきちんと検討すべき


スマートフォン版のテクニカルディレクターを務めた,スクウェア・エニックスの畑 圭輔氏
 講演の最後には,スクウェア・エニックスで本作のテクニカルディレクターを務めた畑 圭輔氏より,ゲーム機用のゲームをスマートフォンに移植することの総括が披露された。

 まず,移植作業にUnityを使うのが適したゲームなのかどうかが問題だと畑氏は指摘する。「Unityとどれくらい相性がいいのかを調査すべき。相性がいい・悪いという点が(Unityを使うかどうかの)判断の基準になる」(畑氏)。
 たとえば,ゲーム機用のゲームは,多くがプログラミング言語にCやC++を使っている。一方,Unityではそれが,C#やJavaScriptになる。プログラム編で語られたように,コードがコンバートできるかどうかは,判断するうえで重要なポイントになるだろう。
 また,プログラム編でも触れたが,Unityでは「ガベージコレクションという,C#ならではのパフォーマンス低下が発生する」ので,こういった問題に対処できるかも重要だと畑氏は指摘していた。

オリジナルの資産は,Unityでの利用に適さない場合もあるので,まずは「Unityを使うべきか」を検討すべきであると畑氏は主張する
Unity

 一方,対応するOSに何を選ぶかは,「iOSとAndroid,どちらか片方だけにしてしまうとプレイヤーが半分になってしまう」(畑氏)ので,スマートフォンであれば両方に対応すべきだと,畑氏は主張していた。その意味では,Unityのようにマルチプラットフォーム対応のゲームエンジンを使うメリットは大きい。
 さらに,ゲームが必要とする端末の性能やストレージ容量も重要となると,畑氏は指摘する。とくにゲーム機からの移植ではストレージ容量がネックになりがちであるため,「可能な限り(データを)削減する必要がある」と畑氏は述べていた。DQ8の場合,最終的には1.3GBにまで絞り込んでいるという。

DVDで提供されていたPS2版を,スマートフォン版では1.3GBまで絞り込んだという。ただし,インストールするにはその2倍の容量が必要になるとのことで,スマートフォンのストレージ容量との戦いは厳しそうだ
Unity

 今回の講演を聞くまで筆者は,「現代の高性能なスマートフォンなら,PS2のゲームくらいは楽に動くだろう」くらいに思っていた。しかし講演では,そう単純にはいかないという事例がいくつも解説され,移植の難しさを改めて理解できた。
 移植にUnityを使うかどうかは,畑氏が指摘するようにケースバイケースだろうが,過去の人気ゲームに対する需要は大きいはずだ。Unityを生かして,多くの名作がスマートフォンで遊べるようになることに期待したい。

Unite Japan 2014 公式Webサイト


  • 関連タイトル:

    Unity

  • 関連タイトル:

    ドラゴンクエストVIII 空と海と大地と呪われし姫君

  • 関連タイトル:

    ドラゴンクエストVIII 空と海と大地と呪われし姫君

  • この記事のURL:
line
4Gamer.net最新情報
トピックス
スペシャルコンテンツ
注目記事ランキング
集計:10月21日〜10月22日
タイトル評価ランキング
88
TERRA BATTLE (iPhone)
83
81
人狼オンライン (BROWSER)
81
マリオカート8 (Wii U)
2014年04月〜2014年10月