- 2023年に再リリースされた Quake II では、サーバーとゲームモジュール間の通信のための新しい API、新しいネットワークプロトコル、そしてモッディングの機会を強化するための「クライアントゲーム」モジュールが導入されました。
- 更新されたコードベースでは、元のゲームの分離されていたゲームモジュールが統合され、C++17 コンパイラが必要です。
- ゲーム DLL は Clang、VS2019、VS2022 と互換性があり、C++17 と C++20 の両方でコンパイルできます。
- 再リリース版は 40hz ティックレートをサポートし、元の 10hz と比べてより優れたゲームプレイ体験と精度を提供します。
- ゲーム DLL は関数内で varargs を使わなくなり、フォーマット処理の責任は呼び出し側に移されます。
- 再リリース版には、作業をより容易にするための数学関数の変更が含まれており、適切な場合には constexpr と演算子オーバーロードが使われています。
- 「エンティティがフレーム内でクライアントに表示されるか」に関する方式の変更には、スプリットスクリーン対応とサウンド減衰カリングが含まれます。
- 再リリース版は拡張されたモッディングの機会を提供しますが、大規模な構造変更により、既存の MOD は新しいコードベース向けに書き直しが必要になる場合があります。
- プレイヤーの移動処理が修正され、ゲームモジュールが物理挙動を変更しつつもクライアント予測と連携できるようになりました。
- Configstrings が更新され、最大長が 64 から 96 に増加し、特定の範囲を複数行にまたがって拡張できるようになりました。
- 再リリース版には構造体への変更も含まれており、svflags に新しいフラグが追加され、effects_t は uint32_t から uint64_t に変更されて、より多くのエフェクトを表現できるようになりました。
- 同じエフェクトがスプリットスクリーンのプレイヤーに複数回送信されるのを防ぐため、新しい
_key パラメータが導入されました。
- セーブシステムは、開発者がより簡単に確認できるよう、レベルとゲームデータを UTF-8 JSON に書き出すようになりました。
- セーブシステムはもはやファイルシステムと直接インターフェースせず、他の MOD が JSON を使う必要もありません。
- Quake II のサーバープロトコルが更新され、帯域外チャレンジの削除、接続メッセージの変更、各種 svc パケットの更新などが含まれます。
- このテキストでは、さまざまなサーバー・クライアント間の相互作用、ビットストリームから各種データ型を読み取る方法、データ内の特定のフラグやキーを処理する方法について詳しく説明しています。
- このテキストではさらに、svc_waitingforplayers、svc_bot_chat、svc_poi、svc_help_path、svc_achievement といった各種サーバー・クライアントパケットの機能と、それらのデータの読み取り方法についても説明しています。
- clc_stringcmd パケットは、クライアントからサーバーへ送られる文字列コマンドを読み取るために使われます。
- またこのテキストでは、たとえば POI に 0 以外のキーが指定された場合や、POI の時間が 0xFFFF または 0 に設定された場合など、特殊なケースの処理方法についても説明しています。
1件のコメント
Hacker Newsのコメント
"_t"を接尾辞として付ける慣習についての議論も呼び起こした