Ambient, un motor de juego multijugador open source
Después de un año de desarrollo, se dio a conocer el primer lanzamiento del nuevo motor de juegos de código abierto Ambient. El motor proporciona un tiempo de ejecución para crear juegos multijugador y aplicaciones 3D que se compilan en una representación WebAssembly y utilizan la API WebGPU para la representación.
Un objetivo clave en el desarrollo de Ambient es proporcionar herramientas que simplifiquen el desarrollo de juegos multijugador y hagan que su creación no sea más difícil que los proyectos para un solo jugador.
El motor inicialmente tiene como objetivo crear un tiempo de ejecución universal que admita el desarrollo de juegos y aplicaciones en cualquier lenguaje de programación para el cual sea posible la compilación en el código intermedio WebAssembly. Sin embargo, la primera versión solo es compatible con el desarrollo de Rust hasta el momento.
Sobre Ambient
De las características que se destacan de Ambient, se menciona que cuenta con soporte transparente para la creación de redes. El motor combina las funciones de un cliente y un servidor, proporciona todos los componentes necesarios para crear una lógica de cliente y servidor, y sincroniza automáticamente el estado del servidor en los clientes.
Tambien se menciona que se utiliza un modelo de datos común en el lado del cliente y del servidor, lo que facilita la transferencia de código entre el backend y el frontend. Este ejecuta cada módulo en su propio entorno aislado para limitar el impacto del código que no es de confianza, ademas de bloquear un módulo no hace que se bloquee toda la aplicación.
Ambient, cuenta con una arquitectura orientada a datos, con lo cual proporcionar un modelo de datos basado en un sistema de componentes que cada WASM puede manipular. Utilizando el patrón de diseño ECS (Entity Component System).
Ademas de ello, tambien almacena los datos de todos los componentes en una base de datos centralizada en el servidor, cuyo estado se replica automáticamente en el cliente, que por su parte puede ampliar los datos teniendo en cuenta el estado local.
La capacidad de crear módulos Ambient en cualquier lenguaje de programación que se compile en WebAssembly (hasta ahora solo se admite Rust), mientras que la generación de archivos ejecutables universales de salida, pueden ejecutarse en Windows, macOS y Linux, y funcionar como cliente y como servidor.
Por otra parte, tambien se destaca que cuenta con la capacidad para definir sus propios componentes y «conceptos» (colecciones de componentes). Los proyectos que usan los mismos componentes y conceptos aseguran que los datos sean portátiles y compartidos, incluso si los datos no están diseñados específicamente para su uso en proyectos específicos.
De las demás características que se destacan de Ambient:
- Soporte para compilar recursos en diferentes formatos, incluidos «.glb» y «.fbx». Capacidad para transmitir recursos a través de la red: el cliente puede obtener todos los recursos necesarios cuando se conecta al servidor (puede comenzar a jugar sin esperar a que se carguen todos los recursos).
- Se admiten formatos de modelo FBX y glTF, varios formatos de sonido e imagen.
- Un sistema de renderizado avanzado que utiliza la GPU para acelerar el renderizado y admite LOD y recorte del lado de la GPU.
- Uso de renderizado basado en la física ( PBR ) por defecto , soporte para animación y mapas de sombras en cascada.
- Soporte para simulación de procesos físicos basados en el motor PhysX .
- Sistema de construcción de interfaz de usuario similar a React.
- Sistema de entrada unificado independiente de la plataforma actual.
- Sistema de sonido espacial con filtros enchufables.
- El desarrollo aún se encuentra en la etapa alfa. De la funcionalidad aún no implementada, podemos notar la capacidad de ejecutar en la Web, una API de cliente, una API para administrar subprocesos múltiples, una biblioteca para crear una interfaz de usuario, una API para usar sus propios sombreadores, soporte de sonido, cargar y guardar
- Componentes ECS (Entity Component System), recarga de recursos sobre la marcha, escalado automático de servidores, un editor para co-crear mapas de juegos y escenas de juegos.
Finalmente, para los interesados en poder conocer más al respecto, deben saber que el código está escrito en Rust y se distribuye bajo la licencia MIT.