Hace pocos días se dio a conocer el lanzamiento de «Ambient», el cual es un entorno de ejecución 3D universal, compatible con cualquier lenguaje que compile/ejecute en WebAssembly. Ambient está diseñado para facilitar la creación y el despliegue de ricos mundos y experiencias multijugador.
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.
¡Después de más de un año en desarrollo, nos complace anunciar la versión 0.1 de Ambient, nuestro tiempo de ejecución de juegos multijugador de código abierto creado con Rust 🦀!
Sobre Ambient»
Los desarrolladores mencionan que actualmente hay muchos motores de juegos que optimizan la creación de juegos para un solo jugador, pero pocos pretenden facilitar el modo multijugador.
Teníamos curiosidad: ¿qué se podría construir si el multijugador fuera tan fácil de usar como un solo jugador? ¿Qué tipo de experiencias extraordinarias, con interacciones nuevas e interesantes, podría imaginar la gente una vez liberada de los detalles finos de la creación de redes?
Ambient es el comienzo de nuestra respuesta a estas preguntas: un entorno de tiempo de ejecución diseñado para permitir que los desarrolladores de todo tipo creen y compartan las experiencias que desean crear. Sin embargo, el problema no es sólo hacer bien la comunicación cliente-servidor.
Ambient es un motor de juego gratuito y de código abierto (bajo la licencia MIT) y sus desarrolladores mencionan que uno de sus objetivos es establecer un estándar para crear juegos multijugador.
Como empresa, nuestro plan es brindar servicios de valor agregado para el tiempo de ejecución que planeamos monetizar (incluido el servidor y el alojamiento de activos), pero el tiempo de ejecución en sí será gratuito y de código abierto para siempre. Como usuario del tiempo de ejecución, siempre podrá elegir qué servicios nuestros aprovecha y cuáles elige implementar usted mismo.
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.
Ambient fue diseñado desde ceropara permitir experiencias en red, ya 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 se basa en WebAssembly, lo que permitirá escribir código en cualquier lenguaje que se compile en WASM. Actualmente, solo Rust es admitido, pero se menciona que a futuro se planean admitir más idiomas como sea posible.
Otra de las características de Ambient, es que está construido con un diseño orientado a datos en el cual todos los datos se almacenan e interactúan a través de un sistema de componentes de entidad respaldado por una base de datos de entidad centralizada en el servidor.
Esta base de datos se replica automáticamente para cada cliente, y cada cliente tiene la capacidad de aumentar y ampliar entidades con estado local. El uso de un ECS facilita la visualización del estado de su aplicación y proporciona un excelente rendimiento y escalabilidad.
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.
Descargar y obtener Ambient
Cabe mencionar que Ambient cuenta con un único ejecutable que se puede descargar para Windows x64, Linux x64 o macOS ARM y que ademas puede ser compilarlo, si el usuario prefiere hacerlo por su cuenta.
Este ejecutable puede actuar como servidor o puede unirse a un servidor como cliente gráfico. Puedes obtenerlo desde el siguiente enlace.