霧縛りの職工

大したことないことを大したことないように書きたい

ロールバック方式から言える格闘ゲームにおける状況確認について

ゲーム開発において広く耳目を集める技術革新はグラフィック面が多いように思うが、リアルタイム性に寄与する要素として昨今ではネットコードの改善が取り沙汰された。

この新しいネットコードの発見によって言える2D対戦格闘ゲームというジャンルの1つの特徴についてある着想を得ていたが、先日見た動画を良いきっかけとしてその特徴と、それを前提としたプレイ体験の向上の可能性について言語化してみる。

私はゲーム開発者ではなく、2D対戦格闘ゲームに関してももっぱら観るのが専門なのでその点についてはご了承の上、お読みいただきたい。



TL; DR

だいたい言いたいこと。

2D対戦格闘ゲームの昨今に関して大なり小なり知識がある方は後半まで読み飛ばすのを推奨する。

見出しはアウトラインとして記載しているので、そこまでだけでもどうぞ。

同期方式の改善によって2D対戦格闘ゲームにおけるネットワークプレイが当たり前に

ネットワーク技術の発達に伴い対戦型のゲームでは遠く離れたプレイヤーと遠隔で対戦する事が当たり前になり、2D対戦格闘ゲームにおいても同様である。

ネットワーク対戦画面 | SFV

出典: ストリートファイターV | CAPCOM

旧来のお互いに入力を待つネットコードではラグが天敵

しかしながらプレイヤーが双方のプレイヤーの入力を交換し合って、それぞれが見ている画面の同一性を維持しながらプレイが進行する旧来の同期方式では、通信にかかる時間が長くなるとプレイ自体が停止するラグとして表れてしまう。

旧来の同期方式

出典: Rollback netcode: past, present and future of online fighting | Freegame TIPS

これはとくにリアルタイム性がプレイ体験に寄与する2D対戦格闘ゲームでは致命的で、日本国内でも少し相性が悪いとまともなものにならなかった。

GGPOから始まるロールバック方式で良好な環境なら随分気にせずに済むように

同期処理によるラグに対して近年1つの解答として提示されたのがロールバック方式である。

ロールバック方式は、ある瞬間から数フレームまでの入力は多くの場合同じ入力を継続するという前提に基づいた技術である。

前提に従うと、前進しているキャラクターに対して攻撃を仕掛けた時、最終的に当たるかどうかは実際に当たる数フレーム前で大抵決まっているという事になる。

ロールバック方式ではこのような理屈に従って、プレイヤーはそれぞれゲーム側が予測した仮の画面を見ながらプレイを進行する。では異なる結果が生じた時はどうするかというと、瞬時にプレイヤーの見ている画面を実態に合わせて書き換えてしまうのである。

ロールバック方式による同期方式

出典: Rollback netcode: past, present and future of online fighting | Freegame TIPS

つまり、プレイヤーはお互いにゲームが予測で進行させた仮想画面を見ながらプレイしており、内部的に概念として存在してる実画面に対して後から仮想画面を合わせている。

youtu.be

キャラクターの動きの違いが大きくなるとワープしたように見えてしまうため、一定以上大きなラグまでは対応できないが、ロールバックが発生しても違和感が低減されるような工夫は諸々必要なようだがそちらへの言及は割愛する。

リアルタイムにプレイが進行するゲームでの「確認」

話をゲームプレイにおける技術としての確認という要素に移す。

ゲームにおいては各種リソース、自分や相手の操作キャラクターがおかれている状況を瞬時に把握し取るべき行動を選択していく手腕が求められる。確認とはプレイヤーのコマンド+ボタン入力によって発生したアクションに起因する結果に対して、瞬時に次のアクションを起こす事を指す。

起こしたアクションの結果に備えておいて行動を決定するのが「ヒット確認」

相手に攻撃した時に次の行動を仕込んでおき、当たったと確認した瞬間にボタンを入力して次のアクションに繋げる、当たってなければボタンを押さずにまた別のアクションを取る。

2D対戦格闘ゲームでは相手にダメージを与える行動を起こした後、さらにダメージを与えてチャンスに対する単価を上げるコンボに繋げたり、コンボ後の状況をよりよくする事が時に勝敗を分ける。

対戦相手の行動を潰すように攻撃できた時には往々にしてより大きなダメージを与えたり、ダメージ量の多いコンボを決められたりするように調整されていて、プレイヤーが視認可能なよう派手な演出が挟まれる事もある。

クラッシュカウンターを極めろ! | ファミ通

カウンター | ギルティギア | ガジェット通信

カウンターヒット確認はゲームメイクにおいてことさら重要視される傾向にある。

「状況確認」では起こしたアクションの結果が出る前の要素から次の行動を決定する

ヒット確認ができるかできないかで1回ターンに得られるダメージ量が変わってしまうのでプレイヤーとしては成功率を高めたい。そういった要求から見出されたテクニックが状況確認である。実際にヒットしてからではボタンを押下する猶予が短い場合に、それまでの展開や相互の状況から当たると判断して次の行動へ繋げる。

たとえば対戦相手が平均10フレーム前進してからガードすると仮定しよう。この時5フレーム後に相手に当たる足払いを出しておく。相手前進時の前5フレームで出せていたのなら確率的には技はヒットしていそうだ。

こういう判断能力をプレイヤー達は経験や練習によって身に着けている。

「確認」が重要なゲームではまだまだネットワーク対戦で課題がある

本記事を起こそうと思うきっかけになった、ストリートファイターシリーズで長く一線級のプロプレイヤーももち (@momochi212) さんの動画では、来年以降に予告されている新作に対する期待に交えてネットワーク対戦の品質について少し触れている。

youtu.be

技の発生が早くて3フレーム、判断の猶予が数フレームの世界で戦うリアルタイム性では、確認が重要な場合まだまだラグの壁は大きくゲーム性が損なわれてしまうらしい。

ロールバック方式が成立しているという事実から「状況確認」について言えること

さて、ここまで述べてきたロールバック方式の原理から2D対戦格闘ゲームというジャンルの1つの特徴を示す事ができて、それが状況確認をしやすいゲームにしていく役に立つのではないかと考えている。

あるフレームから高々数フレーム以内に起きる出来事は確率的に決定可能である

ロールバック方式によって少なくともプレイ体験が改善し、ワールドワイドでのネットワーク対戦が盛んになっている現状がある。つまりロールバック方式が基づいている原理原則は概ね正しいと言えそうだ。

キャラクターのアクションによる結果は数フレーム先に関して起因するコマンドの成立時に決まっている

相手が硬直中かどうかに依らず、振った技が当たるかどうかはボタンを押した時には確率的に決まっている。

2D対戦格闘ゲームでは短いスパンでの未来予測はほとんど的中しする。予測が外れる確率は高々ロールバックの発生率に等しい。

「状況確認しやすい」リアルタイムな対戦ゲームは未来の情報を増やす事で成立する

ヒット確認が難しいゲームがリアルタイム性によって体験を損なう可能性があるなら、ヒット以前にできる確認の余地を増やす事で問題は低減できそうだ。ボタンを押下した時に概ね起きる事象が決まるなら、その瞬間に視認できる情報を増やせばプレイヤーの助けになる。

「COUNTER!!」が画面に表示されるのをもっと前にしてしまえばいいのだ。

お互いにアクションが成立していて確実に当たっている時にはもうド派手に、確率的に大体当たってるけどひょっとしたら外れてるかもという時には少し控えめに演出してやると良いかもしれない。

内部的な仕組みに眼を向けると、ロールバック方式の説明ではプレイヤーが見る仮想画面と同期結果である実画面という言い方をしたが、実画面のさらに数フレーム先の出来事として概ね決まった未来画面が存在し得る。この未来画面をベースに色々仮想画面上に表示される情報を足してやれるとすれば、リアルタイムなプレイ体験はさらに向上するかもしれない。

掲載元

本トピックはnoteに掲載した私の記事を転載したものです。 各種反応は今後の参考とさせて頂きます。

note.com