Primeira versão do mecanismo de jogo multijogador aberto Ambient

Após um ano de desenvolvimento, é apresentado o primeiro lançamento do novo motor de jogo de código aberto Ambient. O mecanismo fornece um tempo de execução para a criação de jogos multijogador e aplicativos 3D que são compilados em uma representação WebAssembly e usam a API WebGPU para renderização. O código é escrito em Rust e distribuído sob a licença do MIT.

Um objetivo fundamental no desenvolvimento do Ambient é fornecer ferramentas que simplifiquem o desenvolvimento de jogos multijogador e tornem sua criação não mais difícil do que projetos para um jogador. O mecanismo tem como objetivo inicial criar um tempo de execução universal que suporte o desenvolvimento de jogos e aplicativos em qualquer linguagem de programação para a qual seja possível a compilação em código intermediário WebAssembly. No entanto, a primeira versão suporta apenas o desenvolvimento do Rust por enquanto.

Principais recursos do novo mecanismo:

  • Suporte de rede transparente. O mecanismo combina funções de cliente e servidor, fornece todos os componentes necessários para criar lógica de cliente e servidor e sincroniza automaticamente o estado do servidor entre os clientes. Um modelo de dados comum é usado nos lados do cliente e do servidor, o que simplifica a transferência de código entre o backend e o frontend.
  • Executar cada módulo em seu próprio ambiente isolado, permitindo limitar a influência de códigos não confiáveis. A falha de um módulo não causa a falha de todo o aplicativo.
  • Arquitetura orientada a dados. Fornecer um modelo de dados baseado em um sistema de componentes que pode ser manipulado por cada módulo WASM. Usando o padrão de design ECS (Entity Component System). Armazenar os dados de todos os componentes numa base de dados centralizada no servidor, cujo estado é automaticamente replicado para o cliente, que por sua vez pode expandir os dados tendo em conta o estado local.
  • Capacidade de criar módulos Ambient em qualquer linguagem de programação compilada para WebAssembly (somente Rust é compatível por enquanto).
  • Geração de arquivos executáveis ​​universais como saída que podem ser executados em Windows, macOS e Linux e funcionar como cliente e servidor.
  • Capacidade de definir seus próprios componentes e “conceitos” (coleções de componentes). Projetos que utilizam os mesmos componentes e conceitos permitem a portabilidade e o compartilhamento de dados, mesmo que os dados não sejam especificamente projetados para uso em projetos específicos.
  • Suporte para compilação de recursos em vários formatos, incluindo .glb e .fbx. Possibilidade de streaming de download de recursos pela rede - o cliente pode receber todos os recursos necessários ao se conectar ao servidor (você pode começar a jogar sem esperar o carregamento de todos os recursos). Suporta formatos de modelo FBX e glTF, vários formatos de áudio e imagem.
  • Um sistema de renderização avançado que usa a GPU para acelerar a renderização e oferece suporte a cortes no lado da GPU e alterações no nível de detalhe. Usa renderização baseada em física (PBR) por padrão, suporta animação e mapas de sombras em cascata.
  • Suporte para simulação de processos físicos baseados no motor PhysX.
  • Um sistema para construção de interfaces de usuário semelhante ao React.
  • Um sistema de entrada unificado independente da plataforma atual.
  • Sistema de som espacial com filtros plug-in.

O desenvolvimento ainda está em fase de versão alfa. Dentre as funcionalidades ainda não implementadas, podemos destacar a possibilidade de rodar na Web, uma API cliente, uma API para gerenciamento de multithreading, uma biblioteca para criação de interface de usuário, uma API para uso de seus próprios shaders, suporte de som, carregamento e salvamento Componentes ECS (Entity Component System), recarga de recursos em tempo real, escalonamento automático de servidores, editor para criação colaborativa de mapas e cenas de jogos.



Fonte: opennet.ru

Adicionar um comentário