こんにちは。トイロジックでプログラマをしています、ナベです。
『NieR Replicant ver.1.22474487139…』(以下、本作)では、主にオートバトルの実装を担当しました。今回は、本作のオートバトルに何が求められ、それに対してどのような機能を用意し、さらにゲームを最後までクリアできるためにどのような調整を行ったかを、順にお伝えしていきます。

オートバトルに求められたもの

現在のゲームには様々なジャンルがあり、ユーザーの皆さんにも様々な好みや得手不得手があります。本作では、アクションゲームがあまり得意でない方や、『NieR:Automata』をオートモードでプレイされた方にも安心して触れていただき、シナリオを楽しんでいただけるよう、原作である『NieR Replicant』『NieR Gestalt』には無かったオートバトル機能を追加することとなりました。

“『NieR:Automata』のオートモードと同等の機能を目指しつつ、魔法をはじめとした本作ならではの特徴に合わせた機能を目指す”

これが、本作のオートバトルに求められたものです。ここで、オートバトルの説明に入る前に、実際にオートバトルを使って戦闘している様子を動画でご覧いただこうと思います。なお、コントローラによる操作は、動画の途中に表示されるチュートリアルウィンドウを閉じるとき以外は一切行っていません。

主人公が周囲の敵に対して武器や魔法を交えて攻撃し、敵からの攻撃を避けたり弾いたりしています。これらを自動で行わせることで、戦闘が難しくてゲームがクリアできない、という事態を回避しています。余談ですが、本作では「片手操作」と呼ばれる、コントローラを右手または左手だけでプレイする操作方法も存在します。この片手操作とオートバトルを組み合わせることで、幅広いユーザーの方々にプレイしていただけると思います。

オートバトルの基本機能

本作のオートバトルの機能には、「オート武器攻撃」、「オート武器切替」、「オート魔法攻撃」、「オートガード/回避」、「オートアイテム」の5つが存在します。これらは下図の設定画面で個別にオンとオフを切り替えることができます。攻撃は自分で操作したいけれど、ガードと回避はオートバトルに任せたい、という組み合わせも可能です。
※片手剣以外の武器を入手すると使用可能になります

ここからは、オートバトルの中でも使用頻度の高い、オート武器攻撃、オート魔法攻撃、オートガード/回避についてお伝えしていきます。なお、主人公の移動とジャンプはオートバトルでは原則として実行せず、コントローラで直接操作する必要があります。

オート武器攻撃

オート武器攻撃はその名の通り、周囲の敵に対して武器による攻撃を自動で行います。主人公の武器攻撃が届く距離に敵が存在した場合に、誰もコントローラに触れていなかったとしても、「攻撃ボタンを押した」という命令を出すことで、主人公が武器攻撃を行います。この命令を次々に実行することで、連続攻撃も可能です。

ここで問題となるのが、オートバトルでは敵の動きを制御できないという点です。攻撃を受けた敵は後退するときがあり、主人公の攻撃が届かない距離まで遠ざかってしまうことがあります。このとき何もしないでいると、オートバトルは攻撃を止めてしまいます。これを避けるため、オート武器攻撃による連続攻撃の最中に敵との距離が少しだけ開いた場合は、主人公に敵の方向へ回避行動をとらせ、敵との距離を詰めて攻撃を継続できるようにしています。

オート魔法攻撃

オート魔法攻撃も、周囲の敵に対して魔法による攻撃を自動で行いますが、武器攻撃と異なる点がいくつかあります。まず、魔法を使うためのMPが必要です。さらに、本作の魔法には複数の種類があり、それぞれが異なる有効範囲をもちます。このため、現在のMP残量で魔法は使えるのか、現在の敵との位置関係ではどの魔法を選ぶのがよいか、そして、選んだ魔法をいつ使うのがよいかを判断する必要があります。

本作の魔法はMP残量が最大値の半分もあれば使えますので、この値を基準に設定しました。そして、主人公により近い敵に効果のある魔法を優先して選択し、MPが無駄にならないよう、実際に有効範囲内や射線上に敵が存在する場合にのみ使用可能としています。

オートガード/回避

オートガード/回避は、自動で敵の攻撃をガードしたり回避したりしますが、オート武器攻撃のように主人公から敵の攻撃までの距離は判断材料にしていません。これらの機能は、本来ならば敵の攻撃を受けたはずのタイミングで、主人公がガードや回避を実行可能だった場合に後出しで使用しています。また、使用後に攻撃へ結びつきにくい状況になるのではあまり意味がありません。

そこで、可能な限り攻撃のチャンスを作り出せるようにもしました。敵の攻撃を弾くジャストガードや敵の背後への回り込み回避をまず優先し、敵との立ち位置の関係でそれらが不可能な場合には前方への回避や通常のガードを選択する、という具合です。

以上が、オートバトルの代表的な3つの機能についての説明です。実際にはもう少し細かな制御もしていますが、おおまかな流れはおわかりいただけたかと思います。

オートバトルによるゲームクリアに向けて

さて、ここまでに紹介したオートバトルの機能を有効にしてゲームをプレイするとどうなるでしょうか?最後までスムーズにゲームをクリアできるでしょうか?オートバトルはその名の通り自動で戦闘をする機能ですが、戦闘にばかり目を向けたため、開発していく中で、アクションRPGというジャンルに必要な「ストーリーを進行させる」ことに水を差す結果となってしまうことがありました。

たとえばプロローグでは、敵からの攻撃を受けることでカットシーンが挿入される箇所で、オートガード/回避によって敵からの攻撃をほとんど受けなくなり、ストーリーが一向に先に進まなくなってしまいました。あるダンジョンでは、禁止された行動をとるたびにペナルティを受ける場所があり、オートバトルがそれらの行動を繰り返し実行するためにペナルティを受け続けてしまいました。他にも、演出の都合上、戦闘中に相手を無敵状態にして会話をさせる場面で、オート武器攻撃やオート魔法攻撃が攻撃の通じない相手に対して何度も攻撃を繰り返してしまう、ということもありました。

本作では原作から引き続き、これらの演出はすべてスクリプトから制御しています。一方で、ゲーム内の様々な演出に合わせてオートバトルに何をさせて、何をさせないかを学習させる時間もありませんでしたので、オートバトルの機能制限もスクリプトから制御できるようにしました。地道な作業ではありますが、ゲームをプレイ中にオートバトルによって著しく進行を妨害されると判断した場合には、その都度、一部の機能を制限/解除することで、可能な限りストレスなくストーリーを進行させられるように努めています。

最後に

今回は、本作で導入したオートバトルの基本機能と、ゲームをクリアするために行ったいくつかの内容をご紹介しました。ゲームはジャンルが違えば遊び方も変わりますので、全てのゲームに対して同様のアプローチができるわけではありません。本作のオートバトルも最適解とは言えないかもしれませんが、冒頭でお伝えした求められたものは提供できたと思います。本機能が、皆さんがNieRの世界に触れるための一助となれば幸いです。

著者紹介 ナベ
2010年にトイロジックに新卒入社。プログラマーとして、主にエネミーやステージギミックを担当。これまで開発に参加したタイトルは『Happy Wars』『サイコブレイク』『ハッピーダンジョン』など。『NieR Replicant ver.1.22474487139…』ではオートバトルのほか、各種ツールの作成なども担当。好きなアクションゲームは『Devil May Cry』シリーズ、『NINJA GAIDEN』シリーズ、『BAYONETTA』シリーズ。

トイロジックでは現在、一緒に働くプログラマーを募集しています。

不明点などもお気軽にお問い合わせくださいフルリモート採用も行っております、ご応募お待ちしております!