PS Plusでストリートファイター5の配信が始まった頃にちょっとだけと思ってやってみると、ストリートファイター2と同じ感じでプレイできてすげーなとポチポチ。次第にその奥の深さに驚嘆して、大昔は「なんかこの技強いから振っとくわ」みたいなのがフレームとかなんとかで当時の謎が明らかになっていくほどに少しづつ興味も湧いてきて、それからなんやかんやと調べたりしてるうちにストリートファイター6が出るらしいということで今に至る。
そしてスト6発売から1年、世間でどれくらい流行っているのかは正直わからないけれど、カプコンカップというスト6の大会の優勝賞金が1億円らしいので間違いなく流行っていると思われる。
無印ストリートファイターがリリースされてから数えてなんと36周年らしい。
36周年。スト2がリリースされたのが1991年2月らしくそれが32年前。
SFC版ドラクエ5のリリースが1992年らしいので、いつ頃なのやらと思ったら大体その辺の時代を想像すると良さそうである。
スト6のランクマッチを初めてみるとなんとルーキーからのスタートだった。ルーキーって何かねというとランクマッチの段階でいう一番最初のランクだ。上手い人はもっと上位のランクから始まるのであった。のびしろしかないってことや。
前作スト5はどうやら7年くらい(今も普通にできるけれど)現役で稼働していたそうなので、まぁ5年6年もあればマスターランクにもいけるだろうというめちゃくちゃ軽い感じで目標を立ててみた。
そしてあと昨今のオンライン対戦格闘ゲームというとGGPOというもので革新的な発展をしたという記事をみてこれだと思い、GGPOについて調べていこうと思ったのだった。
インフラのブログだし。GGPO自体は2006年に初版がリリースされたらしいので結構古い技術だった。CentOS5が2007年4月らしい。古いね。
GGPOというのは、ゲームのラグを減らすもので、従来のというか古くからあったものはディレイ方式というもので、入力を待ってるという感じで遅延があるとスローモーに見えるというやつだ。GGPOはというと行動を予測して遅延が起こった時に巻き戻しする感じの仕組みらしい。実際に修正する遅延は1から3フレームくらいで極わずかなフレーム遅延を修正する。ロールバックというらしい。ロールバックという言葉の方がなんとなく有名かもしれない。知らなかったけど。
そもそもネットワークの速度が昔とは比べ物にならないのだけど、ほぼストレスなくオンライン対戦ができるのはこの技術あってのものなようだった。
あとスト6関連の動画とか見てるとEvoという大会のことは知っている人も多いと思うけれど、そのEvoの創設者キャノン兄弟のトニーキャノンさんが開発したそうです。歴史を感じるわ。
斯くしてランクマでマスターを目指すぜ。と、GGPOを読もうぜ。という2つの目標ができたのだった。
だったのだけども、この記事を書き始めたのが実は1年前の2023年7月くらいで、全く手をつけずになっていたのだけど、スト6の方はスコスコとプレイを続けていて、先日やっとマスターランクの方は達成できたのだった。1年3ヶ月でようやくできた。いやたったの1年3ヶ月と言っても良いかもしれない。大変だったわ。いやこれからがもっと大変な感じがすでにしているが。沼のときに色々と試したことはあるのでまたの機会に書いてみたい
昔と比べて、いや昔はインターネットもなかったから比べようも無いけれども、巷には攻略サイトがものすごく溢れていて、この攻略のおかげでへたっぴーな自分でも進歩できるというもの。
ただへたっぴーむけの内容というのはあまり無いような感じもするので、いろいろ考えることになるのだよね。
GGPOの話に戻して。とりあえずどんな感じに学習していくといいかChatGPTに聞いてみた。ちなみにタグも書いてくれていいね。
- ネットワークプログラミングの基礎を学ぶ
- ソケットプログラミング: PythonやC++でクライアントサーバー通信を実装する
- UDPの理解: パケットロス・順序保証について理解する
- 並行処理・スレッドプログラミング
- mutex(排他制御)やセマフォの使用方法を学ぶ
- イベント駆動型プログラミングの理解
- シミュレーションとロールバックの仕組みの理解
- 固定フレームレートの理解: ゲームの進行をシミュレートする
- 状態のスナップショットの保存と復元
- C++の知識を深める
- STL(標準テンプレートライブラリ)の理解: vector、list、map、queueなど
- ポインタ操作: メモリ管理とポインタ操作に慣れる
- オープンソースプロジェクトでのコードリーディング
- プロジェクトの全体像を掴む: ディレクトリ構造やファイルの役割を理解する
- 小さな機能から解析する: パケット送受信やロールバック処理にフォーカスする
- 実際のゲームエンジンで試してみる
- GGPOを使ったゲームやUnity、Unreal Engineでロールバックネットコードを実装する
- 参考資料を活用する
- ネットワークプログラミング関連書籍やC++プログラミングの教科書
- GGPOの公式ドキュメントを読む
1番はC言語だけど過去記事でやってたのでやったことにして、目的は5番なので、、まぁ4番だね。ChatGPTに聞こうか聞くまいが同じ結果なのな。