2023/6/26(月)

「オンラインゲームを支える技術」を読んだ。オンラインゲーム的なものを実装するにあたり、どういう感じのアーキテクチャで受信したデータを反映するのかが気になったが、サンプルコードを見た感じこういう設計だった。

  • 受信部分はイベントドリブンで、受信し次第データをバッファに詰める。
  • ゲームのメインループでは普通のゲームらしくゲーム処理→画面描画をやる。ここのゲーム処理で受信データを反映する。

マルチコア性能を生かし切るためのマルチスレッド設計とかを学べないかという目論見もあったのだが、基本的にやはりゲームはシングルスレッドであらざるを得ないというのが実情のようだった。もちろんマルチコア性能を生かすためのマルチスレッド化も行われるが、例えば音楽とかAI処理などを部分的に別スレッドに逃がすにとどまり、コア部分を本質的にマルチスレッド化するような実装は難しそうだ。落胆したが、そういう雰囲気ということを知れただけでも収穫だった。

RPCの話も出てきた。C++ゲーム開発における有名なRPCのシステムとかあるのかなと思ったが、あまりそういうのは無いという話を丁寧にされた上で、VCEとかいうスクエニの内製ライブラリをサンプルコードとしてお出しされた。


ジョギングした。4.2km。

Categories: