Primeira versión do motor de xogos multixogador de código aberto Ambient

Despois dun ano de desenvolvemento, preséntase a primeira versión do novo motor de xogos de código aberto Ambient. O motor proporciona un tempo de execución para crear xogos multixogador e aplicacións 3D que se compilan nunha representación WebAssembly e usan a API WebGPU para renderizar. O código está escrito en Rust e distribúese baixo a licenza MIT.

Un obxectivo fundamental no desenvolvemento de Ambient é proporcionar ferramentas que simplifiquen o desenvolvemento de xogos multixogador e dificulten a súa creación non máis que os proxectos para un só xogador. O motor está dirixido inicialmente a crear un tempo de execución universal que admita o desenvolvemento de xogos e aplicacións en calquera linguaxe de programación para os que sexa posible a compilación en código intermedio de WebAssembly. Non obstante, a primeira versión só admite o desenvolvemento de Rust polo momento.

Características principais do novo motor:

  • Soporte transparente para redes. O motor combina funcións de cliente e servidor, proporciona todos os compoñentes necesarios para crear a lóxica de cliente e servidor e sincroniza automaticamente o estado do servidor entre os clientes. Utilízase un modelo de datos común nos lados do cliente e do servidor, o que simplifica a transferencia de código entre o backend e o frontend.
  • Executar cada módulo no seu propio ambiente illado, o que lle permite limitar a influencia do código pouco fiable. Ao fallar un módulo non se bloquea toda a aplicación.
  • Arquitectura orientada a datos. Proporcionar un modelo de datos baseado nun sistema de compoñentes que poden ser manipulados por cada módulo WASM. Usando o patrón de deseño ECS (Entity Component System). Almacenando os datos de todos os compoñentes nunha base de datos centralizada no servidor, cuxo estado se replica automaticamente ao cliente, que pola súa banda pode ampliar os datos tendo en conta o estado local.
  • Capacidade de crear módulos Ambient en calquera linguaxe de programación que se compila en WebAssembly (só Rust é compatible polo momento).
  • Xerar ficheiros executables universais como saída que se poden executar en Windows, macOS e Linux, e funcionar como cliente e servidor.
  • Capacidade para definir os seus propios compoñentes e “conceptos” (coleccións de compoñentes). Os proxectos que usan os mesmos compoñentes e conceptos permiten a portabilidade e a compartición de datos, aínda que eses datos non estean deseñados especificamente para o seu uso en proxectos específicos.
  • Soporte para compilar recursos en varios formatos, incluídos .glb e .fbx. Posibilidade de descargar recursos en streaming pola rede: o cliente pode recibir todos os recursos necesarios ao conectarse ao servidor (pode comezar a xogar sen esperar a que se carguen todos os recursos). Admite formatos de modelo FBX e glTF, varios formatos de audio e imaxe.
  • Un sistema de renderizado avanzado que usa a GPU para acelerar a renderización e admite o recorte do lado da GPU e os cambios no nivel de detalle. Usa a representación baseada físicamente (PBR) por defecto, admite animación e mapas de sombras en cascada.
  • Soporte para simulación de procesos físicos baseados no motor PhysX.
  • Un sistema para construír interfaces de usuario similar a React.
  • Un sistema de entrada unificado que é independente da plataforma actual.
  • Sistema de son espacial con filtros enchufables.

O desenvolvemento aínda está na fase de versión alfa. Entre as funcionalidades aínda non implementadas, podemos destacar a posibilidade de executarse na web, unha API de cliente, unha API para xestionar multithreading, unha biblioteca para crear unha interface de usuario, unha API para usar os seus propios sombreadores, soporte de son, carga e gardar. Compoñentes ECS (Entity Component System), recursos de recarga sobre a marcha, escalado automático do servidor, editor para a creación colaborativa de mapas e escenas de xogos.



Fonte: opennet.ru

Engadir un comentario