Battlezone Online (bzo) は、ウェブブラウザを通じて直接アクセスできるように設計されたオープンソースの3Dマルチプレイヤー戦車ゲームです。ローカルへのインストールを必要とする従来のゲームクライアントとは異なり、bzoではプレイヤーはデスクトップ、モバイルデバイス、およびVRヘッドセットで試合に参加できます。このプロジェクトは、確立されたBZFlagエコシステムとの互換性を維持するように構築されており、既存のBZFlagクライアントやサーバーと相互作用しながら、プレイヤーにモダンなウェブベースのエントリポイントを提供します。

3D戦車ゲームのインターフェースを示すBattlezone Onlineのプロモーショングラフィック。
Battlezone Onlineは、BZFlagエコシステムへのウェブベースのエントリポイントを提供します。github.com

この画像は、BZFlagと互換性のあるブラウザベースのマルチプレイヤー戦車ゲームを提供するというプロジェクトの目標を説明しています。

bzoの技術アーキテクチャは、その3Dマルチプレイヤー機能を実現するためにいくつかのモダンなウェブ技術を活用しています。サーバーサイドコンポーネントはNode.jsを使用して構築され、クライアントサイドのレンダリングはThree.jsによって駆動されます。リアルタイムの通信と低遅延のゲームプレイを処理するために、このプロジェクトはWebSockets、WebTransport、およびWebRTCの組み合わせを利用しています。VRサポートについては、ゲームはネイティブのWebXRを使用しており、これにはimmersive-vrをサポートするブラウザとヘッドセットが必要です。また、プロジェクトには、保存されたプレイヤー名やチーム選択が異なるエントリポイント間で維持されることを保証したり、VRでの入力を管理するためのシステムキーボードを制御したりするなど、XR環境のための特定の処理も含まれています。

レーダーと破壊された戦車が表示されているhixマップでの試合のゲーム内スクリーンショット。
ゲームのレーダーと照準システムを特徴とするhixマップでのライブマッチ。github.com

このスクリーンショットは、3Dマルチプレイヤー機能やレーダー、照準ボックスなどのUI要素を実演しています。

bzoはモダンなウェブインターフェースを提供していますが、ブラウザベースのゲーム固有の技術的および物流的な制約に直面しています。例えば、VR機能はブラウザのWebXRサポートおよび安全なHTTPS接続の有無に大きく依存しており、クライアントはHTTPS経由で配信される際に自動的に安全なWebSockets (wss://) に切り替わります。さらに、ゲームはウェブアプリケーションであるため、空間トラッキングのためのPermissions-Policyのようなブラウザ固有の制限をナビゲートする必要があります。プロジェクトは、元のBZFlagプロジェクトを含む様々な場所から取得したモデル、テクスチャ、マップなどの複雑なアセットの混合を管理しており、プロジェクトのAGPLv3ライセンスとの互換性を確保するために、異なるライセンス条件を慎重に調整する必要があります。

このプロジェクトの注目すべき特徴の一つは、BZFlagフラグの全範囲をサポートしていることです。例えば、多くのクライアントで問題を引き起こすことが多い「Wide Angle」(WA)フラグは、元のフラグに関連するクラッシュや揺れを引き起こすことなく視野角を広げるようにbzoに実装されています。これにより、プレイヤーはブラウザベースのプラットフォームの利点を享受しながら、ネイティブのBZFlag環境で利用可能なものと同じ多様なゲームメカニクスを体験できます。また、プロジェクトは簡単なサーバー展開のためのDockerイメージを提供しており、様々なホスティング環境に対応するためにlinux/amd64とlinux/arm64の両方のアーキテクチャをサポートしています。

このプロジェクトの大きな制限の一つは、高精細なレンダリングとVRの安定性のためにホストのブラウザ機能に依存していることです。WebGPUをサポートしていますが、現在のWebXRチェックリストは標準的なimmersive-vrサポートに焦点を当てているため、最高峰のグラフィックス機能はユーザーのハードウェアやブラウザのバージョンによって異なる可能性があります。さらに、元々C++で書かれたゲームのウェブベースの移植であるため、一部のユーザーはパフォーマンスや動作の違いを感じる可能性があります。