Battlezone Online (bzo) es un juego de tanques multijugador en 3D de código abierto diseñado para ser accesible directamente a través de un navegador web. A diferencia de los clientes de juego tradicionales que requieren una instalación local, bzo permite a los jugadores unirse a partidas en computadoras de escritorio, dispositivos móviles y visores de realidad virtual. El proyecto está construido para mantener la compatibilidad con el ecosistema establecido de BZFlag, lo que significa que puede interactuar con los clientes y servidores de BZFlag existentes mientras proporciona un punto de entrada moderno basado en la web para los jugadores.

Un gráfico promocional de Battlezone Online que muestra una interfaz de juego de tanques en 3D.
Battlezone Online proporciona un punto de entrada basado en la web para el ecosistema BZFlag.github.com

La imagen ilustra el objetivo del proyecto de proporcionar un juego de tanques multijugador basado en el navegador compatible con BZFlag.

La arquitectura técnica de bzo aprovecha varias tecnologías web modernas para lograr su funcionalidad multijugador en 3D. El componente del lado del servidor está construido utilizando Node.js, mientras que el renderizado del lado del cliente es impulsado por Three.js. Para gestionar la comunicación en tiempo real y el juego de baja latencia, el proyecto utiliza una combinación de WebSockets, WebTransport y WebRTC. Para el soporte de VR, el juego utiliza WebXR nativo, que requiere un navegador y un visor que admitan immersive-vr. El proyecto también incluye un manejo específico para entornos XR, como asegurar que los nombres de jugador guardados y las selecciones de equipo persistan a través de diferentes puntos de entrada y gestionar los teclados del sistema para la entrada en VR.

Captura de pantalla del juego de una partida en el mapa hix que muestra un radar y un tanque destruido.
Una partida en vivo en el mapa hix que presenta el radar y los sistemas de apuntado del juego.github.com

Esta captura de pantalla demuestra la funcionalidad multijugador en 3D y los elementos de la interfaz de usuario como el radar y el cuadro de apuntado.

Si bien bzo proporciona una interfaz web moderna, enfrenta limitaciones técnicas y logísticas específicas inherentes a los juegos basados en navegadores. Por ejemplo, la funcionalidad de VR depende en gran medida del soporte del navegador para WebXR y de la presencia de una conexión HTTPS segura, ya que el cliente cambia automáticamente a WebSockets seguros (wss://) cuando se sirve a través de HTTPS. Además, debido a que el juego es una aplicación web, debe navegar por limitaciones específicas del navegador como la Permissions-Policy para el seguimiento espacial. El proyecto también gestiona una mezcla compleja de activos —incluyendo modelos, texturas y mapas— provenientes de varios lugares, incluido el proyecto original de BZFlag, lo que requiere una navegación cuidadosa de los diferentes términos de licencia para asegurar la compatibilidad con la licencia AGPLv3 del proyecto.

Una característica notable del proyecto es su soporte para la gama completa de banderas de BZFlag. Por ejemplo, la bandera 'Wide Angle' (WA), que normalmente causa problemas en muchos clientes, está implementada en bzo para ampliar el campo de visión sin causar los fallos o sacudidas asociados con la bandera original. Esto garantiza que los jugadores puedan experimentar la misma variedad de mecánicas de juego disponibles en el entorno nativo de BZFlag mientras se benefician de la conveniencia de una plataforma basada en el navegador. El proyecto también proporciona imágenes de Docker para un despliegue de servidor sencillo, admitiendo tanto arquitecturas linux/amd64 como linux/arm64 para adaptarse a diversos entornos de alojamiento.

Una limitación significativa del proyecto es su dependencia de las capacidades del navegador del anfitrión para el renderizado de alta fidelidad y la estabilidad de la VR. Aunque es compatible con WebGPU, la lista de verificación de WebXR actual del proyecto se centra en el soporte estándar de immersive-vr, lo que significa que las características gráficas de gama más alta pueden variar dependiendo del hardware del usuario y la versión del navegador. Además, debido a que es un port basado en la web de un juego escrito originalmente en C++, algunos usuarios pueden notar diferencias en el rendimiento o en la fluidez de la experiencia en comparación con la versión nativa.