Battlezone Online (bzo) is an open-source, 3D multiplayer tank game designed to be accessible directly through a web browser. Unlike traditional game clients that require local installation, bzo allows players to join matches on desktops, mobile devices, and VR headsets. The project is built to maintain compatibility with the established BZFlag ecosystem, meaning it can interact with existing BZFlag clients and servers while providing a modern, web-based entry point for players.

A promotional graphic for Battlezone Online showing a 3D tank game interface.
Battlezone Online provides a web-based entry point for the BZFlag ecosystem.github.com

The image illustrates the project's goal of providing a browser-based multiplayer tank game compatible with BZFlag.

The technical architecture of bzo leverages several modern web technologies to achieve its 3D multiplayer functionality. The server-side component is built using Node.js, while the client-side rendering is powered by Three.js. To handle real-time communication and low-latency gameplay, the project utilizes a combination of WebSockets, WebTransport, and WebRTC. For VR support, the game uses native WebXR, which requires a browser and headset that support immersive-vr. The project also includes specific handling for XR environments, such as ensuring that saved player names and team selections persist across different entry points and managing system keyboards for input in VR.

In-game screenshot of a match on the hix map showing a radar and a wrecked tank.
A live match on the hix map featuring the game's radar and targeting systems.github.com

This screenshot demonstrates the 3D multiplayer functionality and UI elements like the radar and targeting box.

While bzo provides a modern web interface, it faces specific technical and logistical constraints inherent to browser-based gaming. For instance, VR functionality depends heavily on the browser's support for WebXR and the presence of a secure HTTPS connection, as the client automatically switches to secure WebSockets (wss://) when served over HTTPS. Additionally, because the game is a web application, it must navigate browser-specific limitations like the Permissions-Policy for spatial tracking. The project also manages a complex mix of assets—including models, textures, and maps—sourced from various places, including the original BZFlag project, which requires careful navigation of different licensing terms to ensure compatibility with the project's AGPLv3 license.

One notable feature of the project is its support for the full range of BZFlag flags. For example, the 'Wide Angle' (WA) flag, which typically causes issues in many clients, is implemented in bzo to widen the field of view without causing the crashes or shakes associated with the original flag. This ensures that players can experience the same variety of game mechanics available in the native BZFlag environment while benefiting from the convenience of a browser-based platform. The project also provides Docker images for easy server deployment, supporting both linux/amd64 and linux/arm64 architectures to accommodate various hosting environments.

One significant limitation of the project is its reliance on the host's browser capabilities for high-fidelity rendering and VR stability. While it supports WebGPU, the project's current WebXR checklist focuses on standard immersive-vr support, meaning the highest-end graphical features may vary depending on the user's hardware and browser version. Furthermore, because it is a web-based port of a game originally written in C++, some users may notice differences in performance or