「ロールバックネットコード」という技術を最近多く聞く。特にアーク製の格闘ゲームで実装されていることを発端に知られることになった。ではこれは何か?ということを、ITパスポート初級技術者レベルの低能なあたしが、低能なりに懸命に調べ解説してみるという記事です。
これね、ぶっちゃけ英語版Wikipediaの「GGPO」の記事がかなりわかりやすい(Wikipedia)。というのもそれだけではあいまいでわからんので、逐一解説しよう。まず、「ロールバックネットコード」とはP2P(Peer to Peer)技術に類されるようなもの、ということをわかってほしい(もっとわかりやすく言うと、”クライアントサイドの予測技術”ということを前提に覚えておいてくれ!)。そしてその通称名を「GGPO(Good Game Peace Out)」と呼ぶ。これがラグレスを実現するため、つまり操作遅延を是正するために作れた技術なんである。
Wikipediaによると、こう書かれている。抄訳してみるとこんな感じ。
欧米で有名な格ゲーム系メディアサイトShoryukenや格ゲーで世界一を決めるEVOなどのイベントの共同設立者であるTony Cannonによって作れたのが「GGPO」である。2006年、Xbox360でリリースされた復刻版スト2(「Street Fighter II: Hyper Fighting」のこと)のオンライン環境がうまく実装されていない事に彼も不満を抱いてた。よってそれを是正するために作られたものである。2006年後半に初期版が固まりリリースした後、各社もその技術的優位に目をつけ自社タイトルに受け入れ始めた。Cannonは2019年10月9日次のツイートによって、「GGPO」をオープンソースにし、MITライセンス下で管理することを表明した。
GGPO – Wikipediaより
GGPO has a new home and is now available under the MIT License. Get it here!: https://t.co/7KXHGQ7OMN
— Tony Cannon (@Pond3r) October 9, 2019
ごもっとも。「GGPO」の核心を表現するのであれば予測である。プレイヤーによる操作を待つだけでなく、「GGPO」はその予測に重きを置いている。「GGPO」はプレイヤーの操作を予測し、それに妥当かどうかをシミュレートする技術「ロールバック」という技術をコアにしている。操作を待つのではなく、操作を予測し、それが妥当かどうかを判断し、それに合致していない場合、操作量をその分差し戻すのだ。本当に簡単に語るとこれだけである。つまり、
プレイヤーの動作操作を予測⇒合致してない場合、現在までのフレームまで元に戻す
というだけのことであり、簡単に「GGPO」のコアはこれだけで説明がつく。この「GGPO」アルゴリズムは、具体的には「スカルガールズ」や「キラーインスティンクト」「メタルスラッグ」などのタイトルで導入されているそうです… (; ・`д・´)
アルゴリズム詳解、続きます…