イベント
「ドラゴンクエストVIII」は,いかにしてスマートフォン向けに移植されたのか? 最適化からUI設計のポイントまでを開発チームが語る
講演の内容はタイトルどおりで,2004年に発売されたPlayStation 2(以下,PS2)用の「ドラゴンクエストVIII 空と海と大地と呪われし姫君」(iOS / Android。以下,
大きく異なるハードとOSに,どうやってDQ8を移植したのか。プログラム編,デザイナー編,ゲームデザイン編と3つに分けられたセッションを,順にレポートしていこう。
PS2のオリジナルリソースの多くを継承
ハードウェアが大違いならプログラミング言語も違う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のコードにしないと,日本語が文字化けしてしまうので,これは大切だろう。
コンバータの利用で「かなりの工数が削減できた」(伊藤氏)というが,もちろん変換だけでどうにかなるほど甘いわけはない。プログラマによる作業が必要だった部分について伊藤氏は,「PS2版の描画ライブラリは手作業による置き換え作業が必要だった」と述べている。また,関数の内部がうまくC#に変換できない場合,関数内をいったんコメントアウトして変換にかけ,C#のコンパイルを可能にしてから,手作業で改めて書き直すといったことも行われたそうだ。
変換直後は,当然ながら性能面で問題が生じたという。「(UnityのC#では)ガベージコレクションが多発したため,ループ内でnewしている部分をループの外に出すなどの多数の書き換えを行った」と伊藤氏はその苦労を語った。
とくに大きな修正が必要だったのは,DVDに最適化されていたPS2版の処理を,いかにしてスマートフォンに合わせるかというところだったという。「元のDQ8はPS2用ディスクの媒体に合わせて作られていた部分を,モバイル(スマートフォン)に持っていく作業が必要で,これが作り直しの大きな要素になっていた」と伊藤氏は振り返る。
PS2はメインメモリ容量が32MBしかなく,光学メディアから頻繁にデータを読み込む必要がある。そのため,光学メディアへのアクセスがユーザーを待たせないようにプログラムを組むのがセオリーだ。そうした部分をスマートフォンでどう変えていくかは,プログラマの手作業が欠かせない部分になるのだろう。
メッシュやマテリアルはスクリプトを作って軽量化
まずデザイナーの作業では,「データの軽量化がポイントだった」と兼古氏は語る。PS2版はDVDメディアを使っていたが,スマートフォン版はインターネットからデータをダウンロードするので,データ量を削減する必要があるというわけだ。
また,兼古氏によると「PS2版のデータは,ハードの特性上,ドローコール(の数)を気にしない作りになっていた」という。PS2はドローコールが軽かったため3Dモデルのメッシュやマテリアルが,その特性にあわせて作られていたそうだ。これをそのままUnityでスマートフォンに持ち込むと,動作の快適さに悪影響を及ぼす。それもあって,ドローコールを減らす意味も含めたデータの軽量化が必要になったという。
実際の作業では,PS2版のモデルデータやテクスチャをスクリプトで変換し,Unityに取り込んでからさらに軽量化したうえで利用するというプロセスで行われた。変換や軽量化はスクリプトを使って可能な限り自動化することで,「データ数のわりには,非常に少ない人数で作業を行えた」(兼古氏)という。
アニメーションも同様に軽量化が必要で,こちらも多くを自動化したそうだ。兼古氏は,「移植では一般的な作業が多かった」と断ったうえで,スケールアニメーションの変換を例に説明を行った。具体的には,「トランスフォームのスケールアニメーションを頂点シェーダ側に渡して,頂点位置を動かすことでスケールする」ように変えたという。これで「60msほどかかっていた処理が15msで済み,効果があった」(兼古氏)そうだ。
それでも4600個のシェーダは,ほぼそのままスマートフォン版でも使われているそうで,ちょっと驚かされる。
ユーザーインタフェースはスマートフォン向けに一新
スマートフォン版のDQ8は,縦画面表示になっている。一方,PS2版は横画面なので,画面の方向からして大違いだ。縦画面にした理由について辰田氏は,「(縦持ちが前提の)スマートフォンとして遊べるゲームにしたい」からだと述べている。
辰田氏によるとスマートフォンのユーザーは「面倒,分からないと思った瞬間に,操作をやめてしまう傾向がある」という。そのため,スマートフォンを横位置で持たければ遊べないUIではなく,開発の手間がかかるのを承知で,普段スマートフォンを使っているのと同じ縦位置の片手持ちで遊べるUIにしたということだ。
辰田氏は,スマートフォン版UIの注目すべき点を2つ挙げた。その1つはNPCとの会話だ。タッチパネルで仮想ゲームパッドを操作する場合,意図したとおりににキャラクターを移動させられないことがある。
そこで,NPCとスムーズに会話ができるように,会話が可能なNPCには吹き出しをポップアップさせて目立ちやすくしたうえで,そのNPCに近づくと会話が可能なことを知らせる円を表示し,円内で立ち止まれば自動で会話が始まるといった工夫を盛り込んだという。
戦闘面でも,UIにはさまざまな改良が盛り込まれたそうだ。自動要素を増やしたり,以前に選択した項目を選択しやすくしたりといった工夫で,操作を容易にしたと,辰田氏は述べている。
移動面でも,長距離移動では自動で移動を続ける機能を盛り込むことで,仮想ゲームパッドを押し続けるわずらわしい操作を排除したとのことだ。これらの工夫により,「(スマートフォン版は)非常に操作しやすくなっている」と,辰田氏は胸を張る。
スマートフォン向けに移植されたゲームでは,オリジナルをできるだけ忠実に再現しようとするあまり,スマートフォンの特性への配慮が不十分になってしまいがちだ。とくにDQ8のようにネームバリューのあるタイトルで,操作性を一新してしまうというのは,開発者としては勇気がいることだっただろう。それを成功させたスマートフォン版DQ8の知見は,貴重なモデルケースになりそうだ。
マルチプラットフォーム対応の利点は大きいが,移植にUnityを使うべきかをきちんと検討すべき
まず,移植作業にUnityを使うのが適したゲームなのかどうかが問題だと畑氏は指摘する。「Unityとどれくらい相性がいいのかを調査すべき。相性がいい・悪いという点が(Unityを使うかどうかの)判断の基準になる」(畑氏)。
たとえば,ゲーム機用のゲームは,多くがプログラミング言語にCやC++を使っている。一方,Unityではそれが,C#やJavaScriptになる。プログラム編で語られたように,コードがコンバートできるかどうかは,判断するうえで重要なポイントになるだろう。
また,プログラム編でも触れたが,Unityでは「ガベージコレクションという,C#ならではのパフォーマンス低下が発生する」ので,こういった問題に対処できるかも重要だと畑氏は指摘していた。
一方,対応するOSに何を選ぶかは,「iOSとAndroid,どちらか片方だけにしてしまうとプレイヤーが半分になってしまう」(畑氏)ので,スマートフォンであれば両方に対応すべきだと,畑氏は主張していた。その意味では,Unityのようにマルチプラットフォーム対応のゲームエンジンを使うメリットは大きい。
さらに,ゲームが必要とする端末の性能やストレージ容量も重要となると,畑氏は指摘する。とくにゲーム機からの移植ではストレージ容量がネックになりがちであるため,「可能な限り(データを)削減する必要がある」と畑氏は述べていた。DQ8の場合,最終的には1.3GBにまで絞り込んでいるという。
今回の講演を聞くまで筆者は,「現代の高性能なスマートフォンなら,PS2のゲームくらいは楽に動くだろう」くらいに思っていた。しかし講演では,そう単純にはいかないという事例がいくつも解説され,移植の難しさを改めて理解できた。
移植にUnityを使うかどうかは,畑氏が指摘するようにケースバイケースだろうが,過去の人気ゲームに対する需要は大きいはずだ。Unityを生かして,多くの名作がスマートフォンで遊べるようになることに期待したい。
Unite Japan 2014 公式Webサイト
- 関連タイトル:
Unity
- 関連タイトル:
ドラゴンクエストVIII 空と海と大地と呪われし姫君
- 関連タイトル:
ドラゴンクエストVIII 空と海と大地と呪われし姫君
- この記事のURL:
キーワード
(C)2004, 2013 ARMOR PROJECT/BIRD STUDIO/SQUARE ENIX All Rights Reserved.
(C)2004, 2013 ARMOR PROJECT/BIRD STUDIO/SQUARE ENIX All Rights Reserved.