Battlezone Online (bzo) 是一款开源的 3D 多人坦克游戏,旨在直接通过 Web 浏览器访问。与需要本地安装的传统游戏客户端不同,bzo 允许玩家在桌面端、移动设备和 VR 头显上加入比赛。该项目旨在保持与成熟的 BZFlag 生态系统的兼容性,这意味着它可以在提供现代 Web 端入口的同时,与现有的 BZFlag 客户端和服务器进行交互。

Battlezone Online 的宣传图,展示了 3D 坦克游戏界面。
Battlezone Online 为 BZFlag 生态系统提供了一个基于 Web 的入口点。github.com

这张图片展示了该项目旨在提供兼容 BZFlag 的基于浏览器多人坦克游戏的目标。

bzo 的技术架构利用了多种现代 Web 技术来实现其 3D 多人功能。服务端组件使用 Node.js 构建,而客户端渲染由 Three.js 提供支持。为了处理实时通信和低延迟游戏体验,该项目结合使用了 WebSockets、WebTransport 和 WebRTC。为了支持 VR,游戏使用了原生 WebXR,这要求浏览器和头显支持 immersive-vr。该项目还包含针对 XR 环境的特定处理,例如确保保存的玩家名称和团队选择在不同入口点之间保持一致,并管理 VR 中的系统键盘输入。

hix 地图比赛的实机截图,显示了雷达和一辆损毁的坦克。
hix 地图上的实时比赛,展示了游戏的雷达和瞄准系统。github.com

此截图展示了 3D 多人功能以及雷达和瞄准框等 UI 元素。

虽然 bzo 提供现代的 Web 界面,但它面临着基于浏览器游戏固有的特定技术和物流限制。例如,VR 功能高度依赖于浏览器对 WebXR 的支持以及安全 HTTPS 连接的存在,因为当通过 HTTPS 提供服务时,客户端会自动切换到安全 WebSocket (wss://)。此外,由于游戏是 Web 应用程序,它必须处理浏览器特定的限制,例如用于空间追踪的 Permissions-Policy。该项目还管理着复杂的资产组合——包括模型、纹理和地图——这些资产源自包括原始 BZFlag 项目在内的多个地方,这需要仔细处理不同的许可条款,以确保与项目的 AGPLv3 许可证兼容。

该项目的一个显著特点是它支持全系列的 BZFlag 标志。例如,“宽视角”(WA)标志通常在许多客户端中引起问题,但在 bzo 中得到了实现,旨在扩大视野范围而不会导致与原始标志相关的崩溃或抖动。这确保了玩家可以在享受基于浏览器的平台便利性的同时,体验到原生 BZFlag 环境中提供的各种游戏机制。该项目还提供 Docker 镜像以便于服务器部署,支持 linux/amd64 和 linux/arm64 架构,以适应各种托管环境。

该项目的一个重大限制是它依赖于主机的浏览器能力来实现高保真渲染和 VR 稳定性。虽然它支持 WebGPU,但项目当前的 WebXR 检查清单侧重于标准 immersive-vr 支持,这意味着最高端的图形功能可能会根据用户的硬件和浏览器版本而有所不同。此外,由于它是对最初用 C++ 编写的游戏进行的 Web 移植,一些用户可能会注意到性能或表现上的差异。