Após um ano de desenvolvimento, se revelou o primeiro lançamento do novo mecanismo de jogo de código aberto Ambiente. O motor fornece um tempo de execução para criar jogos multijogador e aplicativos 3D que são compilados em uma representação WebAssembly e usam a API WebGPU para renderização.
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 visa inicialmente criar um tempo de execução universal que suporte o desenvolvimento de jogos e aplicativos em qualquer linguagem de programação para a qual a compilação para o código WebAssembly intermediário seja possível. No entanto, a primeira versão suporta apenas o desenvolvimento Rust até agora.
Sobre ambiente
Das características que se destacam do Ambient, é mencionado que tem suporte transparente para rede. O mecanismo combina as funções de um cliente e um servidor, fornece todos os componentes necessários para criar a lógica do cliente e do servidor e sincroniza automaticamente o estado do servidor nos clientes.
Também é mencionado que um modelo de dados comum é usado nos lados do cliente e do servidor, o que facilita a transferência de código entre o back-end e o front-end. Ele executa cada módulo em seu próprio ambiente isolado para limitar o impacto de código não confiável, e travar um módulo não trava o aplicativo inteiro.
ambiente, cPossui uma arquitetura orientada a dados, fornecendo assim um modelo de dados baseado em um sistema de componentes que cada WASM pode manipular. Usando o padrão de projeto ECS (Entity Component System).
Além disso, também armazena os dados de todos os componentes em um banco de dados centralizado no servidorr, cujo estado é replicado automaticamente para o cliente, que por sua vez pode estender os dados levando em consideração o estado local.
A capacidade de criar módulos Ambient em qualquer linguagem de programação que compila para WebAssembly (até agora apenas Rust é suportado), enquanto gera arquivos de saída executáveis universais, pode ser executado em Windows, macOS e Linux e funciona como cliente e como servidor.
Por outro lado, destaca-se também quetem a capacidade de definir seus próprios componentes e “conceitos” (coleções de componentes). Projetos que usam os mesmos componentes e conceitos garantem que os dados sejam portáteis e compartilhados, mesmo que os dados não sejam projetados especificamente para uso em projetos específicos.
Dos outros recursos que se destacam do Ambient:
- Suporte para compilação de recursos em diferentes formatos, incluindo ".glb" e ".fbx". Capacidade de transmitir recursos pela rede: o cliente pode obter todos os recursos necessários ao se conectar ao servidor (você pode começar a jogar sem esperar que todos os recursos sejam carregados).
- Formatos de modelo FBX e glTF, vários formatos de som e imagem são suportados.
- Um sistema de renderização avançado que usa a GPU para acelerar a renderização e suporta LOD e recorte do lado da GPU.
- Uso de renderização com base física (PBR) por padrão, suporte para animação e mapas de sombra em cascata.
- Suporte para simulação de processos físicos baseados no motor PhysX.
- Sistema de construção de IU do tipo React.
- Sistema de entrada unificado independente da plataforma atual.
- Sistema de som espacial com filtros plug-in.
- O desenvolvimento ainda está em fase alfa. Das funcionalidades ainda não implementadas podemos destacar a capacidade de rodar na Web, uma API de cliente, uma API para gerenciamento de multi-threading, uma biblioteca para criação de uma interface de usuário, uma API para usar seus próprios shaders, suporte de som, carregar e salve
- Componentes ECS (Entity Component System), recarregando recursos em tempo real, escalonamento automático do servidor, um editor para co-criar mapas e cenas do jogo.
Finalmente, para os interessados em aprender mais sobre isso, devem saber que o código é escrito em Rust e é distribuído sob a licença do MIT.