8月30日から9月1日の期間、パシフィコ横浜で開催されている「CEDEC 2017」。本稿では、8月31日に実施されたセッション「本格スマホRPG「アナザーエデン」開発の裏側を包み隠さずお話します」をレポートする。
目次
このセッションでは、人気スマホRPG「アナザーエデン」の開発スタートからリリースまでを振り返り、コード資産もなくチームとしての経験も豊富とはいえない状態で、どのようにその困難を乗り越えていったかをテーマに講演が行われた。
「アナザーエデン」は、今年の4月にリリースされ現時点で約300万ダウンロードを記録したスマートフォン向けゲームだ。プロジェクトが始まったのは2015年4月で、およそ2年かけて開発された。リリース後は、2~3週間毎にアップデートが行われている。
10名ほどでプロトタイプ開発を進め課題が明らかに
まず始めに登壇したのは、本作のリードエンジニアを務める阿部智司氏だ。同氏からは、「開発中の課題解決と現在」というテーマで、開発中にエンジニアが向き合った課題と、今現在どのような状況になっているのか語られた。
「アナザーエデン」は、10名ほどでプロトタイプの開発が開始された。このプロトタイプ開発で課題にしたのは「目指すゴールを共有」することだった。およそ1ヵ月で2DライクなRPGを制作。その時点では道と壁と地面しかないシンプルなものだったが、「飛び出す絵本」のようなあたたかみのあるデザインを目指すということははっきりと決まっていた。
とにかく動かすことに注力し、プロトタイプ開発ではゴールは明確に共有。課題も明確にすることができたという。このときに見つかった課題は、「トライアル・アンド・エラーを効率よく行いたい」「イベントをどう作るか」「マップをどう作るか」の3つだ。
チーム内で使用する開発環境「Furuty」で作業を効率化
実機で開発を進める場合、最初に動作確認をしデータ入稿、アセットビルドで実機で最終的に使用されるデータの準備をしアプリをビルド。それを実機にインストールし、データをダウンロード。再度動作確認といった流れを、完成まで延々と回していくことになる。
それらのなかで削りたいのは、待機時間の長い「アセットビルド」「アプリビルド」「インストールとダウンロード」である。最終的に持って行きたいのは、動作確認をしてデータ入稿。必要があれば最小限のアセットビルドを行って、再度動作確認をするという流れだ。では「アナザーエデン」ではそのあたりをどうしたのだろうか?
「アナザーエデン」の開発では、チーム内で使用する「Furuty」と呼ばれている開発環境がある。これはmacOS上でネイティブ動作するゲームクライアントだ。各種ビューワーやスイッチ、開発用ユーザーのデータ管理など、便利な機能も付いている。
なかでも大きな特徴は、「通常ゲームモード」と「マップ編集モード」があるというところだ。このふたつのモードを使い、大半の作業をFuruty上で行うことができ、最終的に実機で確認するといった流れを実現している。
まず「通常ゲームモード」だが、こちらは基本的には製品と同等の挙動をするほか、100カテゴリ以上の各種デバッグ機能が用意されている。RPGはパラメータが多く、デバッグ機能の充実が開発において重要となるのだ。
PC上で動くツールのため、マウスだけではなく対応するコマンドをキーボードショートカット化している。
「マップ編集モード」は、先ほどの「通常ゲームモード」にマップ編集用のUIを追加したものだ。また、「通常ゲームモード」から各種イベントが発生してほしくないトリガーを取り除いている。
その状態で、編集用UIを使い移動経路を設定したりオブジェクトの配置をしていくといった感じだ。
こちらがFurutyのメニュー画面。 |
ショートカットキーで会話の早送りなどもできる。 |
画面の右に勝利ボタンがあり、バトルが発生した場合も強制勝利することができる。 |
「マップ編集モード」モードで地面や背景、オブジェクトなどを設置していく。 |
マップごとのオブジェクト配置数のトップ5の図。 一番多いのは「セレナ海岸」で、1900ほどのオブジェクトが置かれている。 |
「アナザーエデン」のイベントは450以上の命令と80万行以上のスクリプトで作られている。またマップは自前のエディタで1000個ほど手動で配置しているという。このイベントとマップ双方にいえることは、「欲しいものは全部作った」ということだ。一定の質に到達するまでに量を積み重ね、その質が量産されたのが「アナザーエデン」のイベントとマップなのである。
ゲーム開発経験のノウハウが無いままバトルを担当した結果……!?
続いて、同じく「アナザーエデン」のリードエンジニアを務める井田勝氏が登壇。ゲーム開発経験のノウハウが全くない状態で参加した同氏だったが、バトルを担当した結果どうなったかというと……1年半でバトルを5回も作り直すことになったという。
では、なぜそんなことになってしまったのだろうか?
そのときの開発の流れはこんな感じだ。まずは“コード資産”がないため、スクラッチからスタート。また、“ノウハウ”もないため、とにかく作り、すぐにいいものができることはないため、ブラッシュアップを続けていく。あとはレベルデザインをすれば面白くなっていくだろうと調整をしていくなかで、開発の外に人に見てもらうと微妙な反応が返ってくる。そこで限界が見えてきて、最終的にはこのバトルシステムではやばそうだという結論になったという。
そういうことを複数回繰り返したが、未熟さ以外の要因もあった。
開発がスタートして半年ほどたったときに、「東京ゲームショウ2015」で初めてタイトルの発表やニコ生の放送を実施した。その結果、冷ややかな反応があったという。そこでプロデューサーから「じゃあ、決めてください」と、ユーザーに対してまさかの丸投げが行われたという。
開発から約1年が経過した「闘会議2016」のステージであらためてニコ生を実施し、そこでアンケートを行い、ゲームの内容を決めてもらうとプロデューサーが決定。その中のひとつに、バトルシステムは「ターン制」がいいか「リアルタイム制」がいいかというものが含まれていた。
開発から1年がたち、実はこの時点で出来上がっていたバトルシステムは「リアルタイム制」だった。その結果……61パーセントが「ターン制」を支持し、また作り直しが決定してしまったという。
そうして完成した最終的なバトルシステムは、良くも悪くも王道のものになったそうだ。このオーソドックスなバトルシステムが完成するまでの課程でも、ノウハウがなさ過ぎて5回も作り直すことになったというわけだ。
シームレスに注力した結果、複数の問題が発生
「アナザーエデン」では、シームレスに注力して開発が進められている。これは、町とフィールドの移動や、バトルへの突入などもローディングがなくシームレスに繋がっている。
あらゆるところをシームレス化した結果、いくつかつまづいたポイントが出てきた。ひとつはあらゆるところでカクつくという問題だ。課題は明白で、サイズの大きなファイルをたくさん読み込もうとしているところにあった。
それに対して、独自スレッドの非同期読み込みの仕組みを用意。サーバとの通信待ちを最小化することで、対策を取っている。
そもそも大きなファイルを読み込むので、ローディングが長くなる。中でも読み込み時間が長かったのが、キャラクターだ。ファイルの読み込みには「fread」ではなく「mmap」を使った方がいいという上を耳にし、実際にベンチマークを取ってみたところ100倍以上早く読み込ませることができるようになった。
それでもまだローディングが長いという問題が残っていた。ボトルネックとなっていたのは、Spineのデータ形式であるJSONの読み込みが非常に長いというところだ。現在のバージョンでは不要だが、当時はバイナリ形式を読み込むことができなかったので、自前でファイルを読み込めるように実装したそうだ。
先ほどカクツキを押さえるために非同期化を行ったという話があったが、その影響で今度はクラッシュが増加してしまった。これはプログラムが複雑化してしまったためだが、そのときに一番効果があったのは、XcodeのAddress Sanitizerを有効にしたところ安定性が向上したという。
Address Sanitizerを活用することで、変なメモリにアクセスしようとするとすぐに怒られるようになり、バグの発見や原因の特定が容易になったそうだ。これがなかったら、今年の4月にリリースするのは難しかったという。
「おねがいリィカ」と「Excelくん」の導入で入稿ミスが激減
ゲーム内に登場するアンドロイドのキャラクター「リィカ」を元にした、Hubotを使ったChatWorkのクライアントbot「おねがいリィカ」というものを用意している。これは「@liica check lua」といったコマンドをチャットで命令することで、実行してくれるというものだ。
この「リィカ」は、アプリのビルドやサーバーのデプロイ、アセットのブルド、アセットの各種検索など様々なことを実行することができる。
しかし、開発中~後半にかけて、マスターデータが巻き戻るといった問題がまれに起こった。これは、Excelバージョン管理をGitにしたのが原因だ。Gitにはファイルのロック機能がなく、Excelがバイナリ形式のためGithubに修正差分が表示されないのである。
そこで、Excelファイルのロックを管理する「Excelくん」というウェブツールを用意。Excelの修正差分出力と、それを付けたGithubへのプルリクエスト作成を「おねがいリィカ」でサポートするようにしたという。これにより入稿ミスが激減したそうだ。
ノウハウもなくコード資産もなかったことから、このような苦労をうんだ「アナザーエデン」の開発だったが、苦労した反面ようやくコード資産を築くことができた。
そしてそのノウハウが存分に活かされたのが、次のプロダクトである「ダンジョンに出会いを求めるのはまちがっているだろうか~メモリア・フレーゼ~」である。それなりのボリュームを持つアプリであったが、開発期間わずか10ヵ月でリリースまでこぎ着けることができたのである。