Engine
O motor de jogos: grafo de cena, componentes, scripting, física, um pipeline PBR, editores de mundo e builds nativos para desktop e mobile.
Em uma frase#
Um motor de jogos completo no navegador: construa uma cena, dê comportamento a ela, aperte play, e exporte para a web ou para um binário nativo de desktop e mobile.
É o maior estúdio do aukimi, e por uma boa margem. Esta página o mapeia do mesmo jeito que a interface: pela gaveta em que cada painel mora, em vez de listar recursos em ordem alfabética.
O layout#

| Barra de menu | File · Edit · View · Windows · Run · Plugins |
| Barra de ferramentas | nome do projeto, desfazer/refazer, o alternador de modo da viewport (3D · 2.5D · 2D · TXT), o seletor de cena, os quatro botões de painel, FX Master, HUD, a caixa de resolução, o transporte (play, pause, stop) e Build |
| Esquerda | uma barra de ícones, scene graph, lista, áudio, console, e o painel que ela abre |
| Centro | a viewport, com sua própria barra de gizmo (mover, girar, escalar, world/local, grade, encaixe, enquadramento) e um seletor de qualidade |
| Direita | o inspetor da entidade selecionada |
| Base | Console e Profiler, lado a lado |
| Barra de status | modo, dimensão da viewport, contagem de entidades, estado da grade |
Os quatro botões de painel#

Eles não se comportam todos da mesma forma, e a diferença vale a pena conhecer antes de você sair procurando alguma coisa:
| Botão | Comportamento |
|---|---|
| Systems | abre uma gaveta |
| Tools | abre a mesma gaveta; Systems e Tools se fecham mutuamente |
| Assets | alterna um dock persistente |
| Scripts | abre um modal |
Systems e Tools compartilham um slot de propósito; eles ficam lado a lado para que isso seja visível.
Systems#
Os subsistemas do próprio motor: as coisas que uma cena tem, em vez das coisas com que você constrói.
| Grupo | Painéis |
|---|---|
| Plugins | o navegador de plugins |
| Rendering | Rendering · Rendering Pipeline · Look Presets · Shader Lab · Render Style · Shadows · Mesh LOD · Post Process Volumes |
| Gameplay | Multiplayer room · Physics · AI & Navigation · Gameplay Zones |
| World | Scene Graph · Level Streaming · Baking · Light Probes · Decals |
Rendering#
O interruptor FX Master na barra de ferramentas liga e desliga o pipeline de pós-processamento inteiro com um clique: o jeito mais rápido de ver quanto ele está custando. Individualmente: bloom, depth of field, SSR, SSAO, GTAO, SSGI, temporal AA, FXAA, motion blur, névoa volumétrica, contact shadows, gradação de cor, grão de filme, aberração cromática, vinheta e tonemapping, além de geometria no estilo Nanite e oclusão Hi-Z.
Look Presets são configurações inteiras de tudo isso. Render Style muda o registro, estilizado em vez de fotográfico. Shader Lab é onde você escreve o seu próprio. Mesh LOD e Post Process Volumes são os dois que se pagam sozinhos numa cena grande: nível de detalhe por mesh, e pós-processamento que só se aplica dentro de um volume.
O renderizador é o Babylon.js. Ele começa em WebGL e troca sozinho para WebGPU quando o navegador tem suporte, voltando por conta própria se isso falhar.
Sistemas de gameplay#
Physics cobre tanto o solver 3D (Havok) quanto o 2D. AI & Navigation é o navmesh e os agentes sobre ele. Gameplay Zones são volumes de gatilho com comportamento anexado. Multiplayer room conecta a cena a um servidor Colyseus (veja abaixo).
Sistemas de mundo#
Level Streaming carrega e descarrega partes de um nível conforme o jogador se move. Baking pré-computa a iluminação; Light Probes capturam luz indireta e reflexos em pontos do espaço. Decals projetam detalhe sobre superfícies sem adicionar geometria.
Tools#
As coisas com que você constrói.
| Grupo | Painéis |
|---|---|
| Editors | Scripts · Blueprint Editor · UI Editor · Tilemap |
| World | Sky Studio · Terrain · Water · Tree Generator · Plant Generator · Rock Generator · Kitbash |
| Gameplay | Inventory · Data tables · Dialogue Trees |
| Animation | Timeline · Cinematic Sequencer · Camera Tools |
| Audio | Audio Manager |
| Debug | Profiler |
Geradores de mundo#
Terreno, água, céu e quatro geradores de conteúdo: árvores, plantas, rochas e peças de kitbash. Eles têm um capítulo próprio abaixo.
Criação de gameplay#
Inventory, Data tables (Tools → Data) e Dialogue Trees são os três editores que permitem que um jogo tenha conteúdo sem que esse conteúdo more no código, em detalhe abaixo.
Animação#
Timeline para animação de entidades, Cinematic Sequencer para planos, e Camera Tools para o enquadramento. Veja Animação e câmera.
Os editores de mundo#
Sete painéis sob Tools → World. Eles são o jeito rápido de preencher uma cena, e o motivo pelo qual um nível não precisa começar com uma sessão de modelagem.
Terrain#
Uma cena pode conter vários terrenos; cada um é uma linha na lista Terrains e é criado numa de três resoluções, 128² (rápida), 256² (equilibrada) ou 512² (detalhada).
O painel tem dez modos, e todos compartilham uma coisa: a máscara pintada em Masks restringe todos eles.
| Modo | O que faz |
|---|---|
| Sculpt | dezessete pincéis sobre o campo de altura |
| Paint | até oito camadas de textura, em dois splatmaps |
| Generate | noise, texturização automática, e importação de elevação do mundo real |
| Sketch | desenhe cumes e vales, sintetize um terreno para combinar |
| Masks | restringe todo outro modo a parte da superfície |
| Water | nível do mar, e a escolha entre água de terreno e um oceano FFT |
| Paths | uma estrada Bézier cozida no chão |
| Vegetation | espalhamento por pincel ou por regra |
| SDF | um terreno raymarched, renderizado em vez de meshed |
| Biomes | solo, plantas, árvores e rochas num único passe |
Sculpt. Raise 1, Lower 2, Smooth 3, Flatten 4, Pinch 5, Inflate
6, Noise 7, Sharpen 8, Stamp 9, Terrace 0, Erode E, Fill F,
Clone C (Alt-clique define a origem), Blur B, Ramp R, além das duas
ferramentas de água: River desenha um curso, Lake preenche num
ponto.
O próprio pincel tem dinâmicas: curva de pressão, lazy mouse, falloff,
simetria, padrão, e jitter tanto no tamanho quanto na força. Stamp traz
seis formas: cratera, pico de montanha, platô, vale de rio, cúpula, colina de
ruído. A erosão vem em duas formas: o pincel E é local, enquanto
Adjustments roda erosão hidráulica, térmica e de vento sobre o
terreno inteiro.
Paint. Oito camadas, porque dois splatmaps RGBA guardam quatro canais cada. A biblioteca de materiais está organizada por categoria: grama, terra, floresta, rochas, estradas e superfícies, penhascos, areia, neve, vulcânico, pântano, fantasia, e a sua própria; cada camada carrega escala de UV, deslocamento, um mapa de detalhe, e relevo de superfície (força de bump e profundidade de parallax). Break texture tiling (cell bombing) é a configuração que impede uma textura de chão repetida de se ler como uma grade.
Generate constrói a partir de noise, depois Generate Textures atribui materiais por altura e inclinação, com variação de sombra norte/sul e litorais de areia ou seixo onde há água. Real World importa tiles de elevação públicos da NASA/USGS: escolha um marco ou digite coordenadas, escolha o zoom, e o painel informa a faixa de elevação que trouxe de volta.
Sketch é a outra porta de entrada. Desenhe traços de cume e vale num mapa 2D, escolha até três paisagens de origem reais, e o terreno é sintetizado para combinar com o esboço, opcionalmente mesclado com o que já existe, texturizado automaticamente e erodido no mesmo passe.
As Masks são pintadas com um pincel e depois editadas como um todo: limpar, inverter, desfocar, crescer, encolher. As smart masks derivam uma a partir do próprio terreno, por altura, por inclinação, por camada ou por cavidade.
Paths. Clique para soltar pontos de controle e uma curva suave passa por eles; arraste os pontos âmbar para movê-los, as alças ciano para curvar a linha. Bake Path achata o chão embaixo dela, pinta a textura e levanta os taludes.
Vegetation tem duas metades. O pincel posiciona e remove instâncias à mão; as scatter rules as posicionam por condição, pesos de camada, seed, escala mín/máx, e a faixa de altura e inclinação que cada asset aceita. Grama e flores desaparecem gradualmente além de uma distância de desenho configurável, e Export to Scene transforma as instâncias em objetos de cena.
Biomes é a versão de um clique de tudo isso: escolha um bioma, marque as categorias que você quer (solo, árvores, plantas e grama, flores, algas perto da água, rochas), defina uma densidade, e Apply Biome pinta o chão e espalha tudo, informando quantas instâncias de cada um ele posicionou. A variedade de idade das árvores mistura mudas até anciãs em vez de carimbar a mesma árvore em todo lugar, e ground blend (RVT) funde a base de cada rocha com a cor do terreno embaixo dela.
SDF é um renderizador diferente, não uma ferramenta diferente: o terreno é raymarched a partir de um campo de distância, com forma definida por octaves, lacunarity e persistence, texturizado por grama/rocha/neve com uma linha de neve e um limiar de inclinação, e suas próprias sombras suaves, ambient occlusion e névoa.
Terrenos grandes têm um sistema de LOD com geometria de skirt (que é o que fecha as lacunas entre os níveis), transições suaves de nível, frustum culling e uma sobreposição de estatísticas. Heightmaps importam e exportam como PNG de 16 bits, PNG de 8 bits ou RAW de 16 bits; splatmaps como um PNG RGBA único ou um arquivo por camada; e o terreno inteiro, ou só suas configurações, como um preset.
Sky Studio#
A atmosfera. Quatro tipos de céu: sólido, gradiente, HDRI, e uma atmosfera física com espalhamento de Rayleigh e Mie, absorção de Mie, ozônio, albedo do solo, turbidez, raio do planeta e espessura da atmosfera.
Tudo depende da hora do dia, que pode ciclar sozinha: o sol por elevação, azimute e intensidade, com sua própria intensidade de sombra; a lua por fase; estrelas com cintilação; e uma aurora. As nuvens volumétricas têm espessura, erosão, escala de ruído e distorção curl, e luz através de absorção, espalhamento, ambiente e um termo powder; cirros e o Cinturão de Vênus são separados. A perspectiva aérea é a névoa que engrossa com a distância e esmaece a geometria distante em direção ao horizonte; é a configuração que faz uma paisagem se ler como grande.
Dez presets como ponto de partida: clear day, dawn, sunset, dusk, night, overcast, stormy, desert, arctic e space.
Water#
Duas abas: Ocean (FFT) para mar aberto, Shore & lakes para todo o resto.
⚠️ A água é criada no editor Terrain: as ferramentas de rio e lago, ou Show Water, e é ajustada aqui. Abrir este painel numa cena sem água te dá configurações sem nada para aplicá-las.
A água de costa carrega cor, opacidade, força e velocidade de onda, choppiness, largura de espuma e Fresnel, com reflexos em espaço de tela e desfoque de refração. Por baixo está o próprio shader WGSL: duas escalas normais com direções e velocidade de scroll próprias, limiar e suavidade de espuma, força de refração e índice de refração, e a luz dentro da água: absorção, turbidez, espalhamento e translucidez.
Tree Generator#
Dois modos, Tree e Trunk. Uma árvore é decídua ou perene, tem uma idade de muda a ancião, e pode estar viva, morta, ser um toco ou um tronco caído. Tudo tem seed, então Randomize seed é o jeito mais rápido de obter uma árvore diferente com o mesmo caráter.
A forma é por nível de galho: filhos, comprimento, raio, afunilamento, torcicolo, torção, seções, segmentos, ângulo e altura inicial, além de variação natural, fototropismo e gravitropismo: os dois que fazem uma árvore se inclinar em direção à luz e pender sob o próprio peso, e uma força global com força própria. A base tem alargamento de raiz (lóbulos e altura) e contraforte.
As folhas são billboards, de uma ou duas faces, com contagem, tamanho, ângulo, variância, agrupamento, curl, queda, brilho e normais arredondadas. A casca vem em seis estilos: rugosa, choupo, pinheiro, bétula, lisa, palmeira, com relevo, musgo, uma base úmida, desbotamento solar, ambient occlusion de copa e uma virada de outono. Quatro estações trocam o visual inteiro de uma vez.
Forest espalha muitas de uma vez: contagem, raio de dispersão, variância de escala, e uma mistura de idade (única, natural, jovem, velha, uniforme). Add age progression posiciona os cinco estágios de vida em fileira, o jeito mais rápido de julgá-los lado a lado. Uma árvore sai como uma entidade de cena ou como GLB, e qualquer configuração pode ser salva como um preset.
Plant Generator#
Cinco tipos: flor, cacho, erva, samambaia, grama, compartilhando um caule (contagem, altura, espessura, curva, cor) e folhas (contagem, tamanho, largura, ângulo). Samambaias adicionam pares de folíolos, sweep de folíolo e arco de fronde; grama adiciona contagem de lâmina e arco.
Uma flor é opcional em qualquer uma delas: pétalas, fileiras de pétala, comprimento, largura, curl, nitidez da ponta, bloom, tamanho do centro, e três cores, pétala, ponta da pétala e centro, com translucidez e rugosidade para como a luz passa pela folha. Adicione uma à cena, espalhe várias, ou exporte GLB.
Rock Generator#
Três tipos: rock, stone, cliff, em três estilos: realista, toon, ou low poly com contorno.
A forma é noise sobre uma esfera: escala, força, octaves, persistence, warp e uma opção ridged, além de strata com frequência própria e facet cuts com profundidade e nitidez para pedra angular. Raio, detalhe, achatamento, variância de forma e uma base plana decidem a silhueta, e quatro presets de erosão, fresh, weathered, natural, eroded, movem tudo isso de uma vez.
A superfície tem variação de cor, veios minerais, líquen e musgo, uma textura de detalhe com tiling e força, mesclagem triplanar e relevo de parallax. Ela usa um material Stone embutido por padrão; envie um material do Matter para o Engine para sobrescrevê-lo.
Kitbash, a mesma biblioteca do Sculpt#
O Kitbash é compartilhado com o Sculpt: este painel e o Edit Forge do Sculpt leem uma única biblioteca. Uma peça construída lá é posicionada aqui, e uma peça pintada aqui pode ser salva de volta nela.
O que a cena guarda é a peça e suas dimensões, não seus vértices: por isso um prédio feito de kitbash custa quase nada no arquivo e pode ser atualizado depois a partir da sua origem.
Arme uma peça a partir do catálogo e cada clique esquerdo a posiciona. Três
modos de encaixe decidem onde ela cai: on terrain (as peças seguem a
altura do chão abaixo delas), on water (o plano de construção fica no
nível da água), e snap to sockets: mire num ponto de conexão numa peça
já posicionada e a nova gira para se encontrar com ela. Uma corrente cresce
a partir da sua ponta livre, sockets ocupados saem da lista de candidatos, e
cada clique é seu próprio passo de undo. Ctrl/Cmd continua reservado
para seleção e Alt para rotação. As coleções guardam sua origem e versão,
então uma instância pode ser atualizada quando o original muda.
Os outros editores#
Os editores de mundo preenchem uma cena; estes dão a ela uma interface, um mapa, suas tabelas de conteúdo e os instrumentos para conferir quanto ela custa.
O editor de HUD#
Tools → Editors → UI. Seis abas, Templates, Elements, Layers, Preview, Style e Script, sobre um preview que alterna entre três tamanhos de dispositivo: desktop 960×540, tablet 768×432, mobile 375×667.
Os elementos vêm em três grupos (Display, Data, Input) e se
aninham: panel e flex contêm filhos, então a aba Layers é uma árvore de
verdade, não uma lista plana. O histórico tem cinquenta passos de
profundidade.
⚠️ A aba Style é parecida com CSS, e a diferença importa. O HUD é
desenhado na tela pela GUI do Babylon, e o CSS de verdade não chega até ele.
As regras que você escreve aqui mapeiam para propriedades da GUI; os
seletores são #nome para um elemento, .tipo para um tipo (.text,
.panel) e * para tudo.
A aba Script é a outra forma de construir um: a API ui.*, createText,
createPanel, createProgress, createButton, com duas formas de rodar.
Build Layout a executa em design-time e deixa elementos de verdade
para você ajustar à mão; Run Live a roda dentro do jogo.
Duas conexões para fora: a arte do HUD abre no Inkwell ou no Vectra e fica vinculada de volta em vez de copiada, e um documento do Vectra pode ser importado como elementos de HUD. O elemento de minimapa é uma coisa própria, com alcance, grade, e marcadores para jogador, inimigos, aliados, itens e objetivos.
O editor de tilemap#
Onze ferramentas: brush, eraser, fill, rectangle, select, eyedropper, stamp, autotile, prop, zone e path, sobre quatro projeções de mapa: orthogonal, isometric, staggered isometric e hexagonal.
O Autotiling vem com quatro templates, e o número em cada nome é a quantidade de tiles que ele espera: Blob 47 (canto e borda completos), Wang 16 (baseado em borda), Simple 4 (NSEW), e RPG Maker A2 (48 tiles, compatível com mapas criados lá).
Duas camadas ficam acima dos próprios tiles. As Zones pintam significado de gameplay: buildable, water, forest, road, farm, residential, commercial, blocked, e os props posicionam objetos por categoria: árvores, rochas, prédios, vegetação, água, caminhos. Os mapas vivem no próprio banco de dados do navegador, então um mapa não salvo sobrevive a um reload.
Inventory, data tables e dialogue#
Os três editores que permitem que um jogo tenha conteúdo sem que esse conteúdo more no código.
Inventory edita um catálogo e o aplica à cena. Um item carrega ações, e
uma ação é um trigger: use, equip, unequip, além de um de oito
types: message, heal, damage, grant, remove, event, toast, scene. O
painel em si tem três layouts (grid, list, compact), três presets de
aparência (graphite, midnight, warm), e quatro slots visuais, background,
slot, equipment, tooltip, que abrem em outro módulo para um redesenho
adequado.
As Data tables são tipadas: uma coluna é text, number, bool ou
ref. CSV entra e sai. Cada edição passa por funções puras, o que é o que
mantém a tabela que a exportação escreve idêntica à tabela que o build lê.
As Dialogue trees são nós com um interlocutor e uma fala. Um nó continua
para um único next, ou se ramifica em choices, cada uma com seu
próprio texto e seu próprio destino; o interruptor de ramificação é a única
decisão estrutural do editor.
Animação e câmera#
O Cinematic Sequencer constrói sequências com uma duração e uma flag de loop, uma faixa por entidade, e keyframes capturados na posição do playhead; Add Key pega o valor atual da entidade em vez de pedir para você digitá-lo. O editor de grafo por baixo mostra tempo contra progresso, com alças redondas para easing: a inclinação é a velocidade. Os planos têm suas próprias durações, e um enquadramento Cinemascope (1.422:1) está disponível para o letterbox.
Camera Tools cobre FOV, posição, alvo, modo e velocidade, além de bookmarks para os pontos de vista aos quais você sempre volta, e camadas de câmera.
Áudio#
O Audio Manager guarda eventos de áudio, faixas e um mixer com canais e categorias. Os efeitos por fonte são um low-pass, um high-pass e um reverb send; um modo random escolhe entre vários clipes para que um som repetido pare de se ler como um loop. O scrubbing reproduz áudio enquanto você arrasta o playhead.
O profiler#
Uma decomposição de quadro, não um contador de quadros: render de câmera, avaliação de mesh, partículas, sprites e compilação de shader, cada um marcado como real ou estimated para que um número vindo de uma medição nunca seja confundido com um vindo de um modelo. Contadores ao lado: meshes e meshes ativas, luzes, câmeras, corpos de física.
A gravação é explícita, e termina numa lista de Issues em vez de num gráfico para interpretar: low FPS, high draw calls, high triangles, high memory, contra a taxa de quadros alvo que você definiu.
Construindo uma cena#
Entidades#

Uma cena nova chega com uma Main Camera, uma Directional Light, um Skybox e um Ground Plane.

O que você pode adicionar: Empty, Cube, Sphere, Cylinder, Plane, Light, Camera, Script, Mesh, além de duas famílias que já chegam pré-conectadas:
- Characters: Third-Person, First-Person (FPS), Top-Down, Platformer, Basic.
- Props: Pickup (cura) e Hazard (dano).
O scene graph busca, filtra por tipo, e adiciona, duplica ou exclui; as entidades se aninham, e reparentar é um arrastar. O posicionamento tem encaixe e um scatter brush para popular o chão rapidamente.
O inspetor#
Transform (posição, rotação, escala), um interruptor Enabled, e os components da entidade: adicionados, configurados e removidos aqui, com Add Script na parte inferior. Selecione várias entidades e o inspetor troca para edição em lote, então a mudança de um campo cai em todas elas.
O console#
Não é só um log. Ele filtra por nível (all, logs, info, warning, error),
vincula uma mensagem de volta à entidade que a produziu, e carrega um
expression prompt: digite uma expressão, Enter a roda contra a cena ao
vivo, as setas do teclado percorrem o histórico.
Dando comportamento a ela#
Três rotas, e elas coexistem.
Scripts#
JavaScript com hooks de ciclo de vida, e uma referência própria:
function start() {} // once, when the entity starts
function update(dt) {} // every frame
function fixedUpdate(dt) {} // fixed timestep, for physics
function onCollisionEnter(other) {} // first frame of contact
function onCollisionStay(other) {} // every frame while touching
function onCollisionExit(other) {} // contact just ended
function onTriggerEnter(other) {} // entered a trigger volume
function onTriggerExit(other) {}
function onMessage(msg, data, senderId) {} // entity-to-entity messaging
function onAnimationEvent(name, data) {}
function onDestroy() {}
Colisões e triggers disparam tanto em 2D quanto em 3D, e cada lado
recebe sua própria normal de contato: other.contact.normal aponta da
entidade outra em direção a esta. É isso que permite que um script
diferencie "eu pousei nele" de "ele pousou em mim": um stomp de platformer
lê other.contact.normal.y > 0.5.
O editor de scripts#
F2, ou Add Script numa entidade. Um editor Monaco com abas, vários
scripts abertos ao mesmo tempo, cada um guardado no próprio banco de dados
do navegador em vez de no arquivo do projeto, então um buffer não salvo
sobrevive a um reload.
Cinco dialetos, um programa. O alternador de linguagem oferece JavaScript, BASIC, Python, C# e Rust. O que ele faz não é o que parece: o JavaScript é a fonte da verdade, e os outros quatro são visões transpiladas do JS guardado. Trocar de Python para Rust não traduz o Python; ele volta para o JS do qual o Python foi gerado e traduz esse. Tradução em múltiplos saltos é o que corrompe um programa, e o editor se recusa a fazer isso.
Treze templates em cinco categorias, cada um identificado por dificuldade:
| Categoria | Templates |
|---|---|
| Básico | script em branco com stubs de ciclo de vida |
| Movimento | auto-rotate · WASD · movimento 3D baseado em eixo · pulo físico com detecção de chão · câmera terceira-pessoa seguindo |
| Gameplay | zona de trigger · barra de vida com dano e cura · spawner cronometrado |
| IA | patrulha com alerta de proximidade do jogador |
| Avançado | cutscene assíncrona no estilo Verse · concorrência estruturada · teste completo da superfície da API |
Os presets de controlador de personagem e os props iniciais de jogo (pickup, hazard) aparecem na mesma lista, o jeito prático de soltar um controlador funcional sobre um personagem importado.
Rodando e depurando. F5 roda, F9 define um breakpoint. O depurador
pausa numa linha, avança um único quadro, e informa valores ao vivo por
expressões de observação (watch). Script Lab roda um programa sem
nenhuma entidade anexada, um rascunho para a API em vez de um componente num
objeto.
Ao lado do código: uma referência de API, uma lista de símbolos do
arquivo aberto, e uma biblioteca de snippets com favoritos e recentes.
Ctrl+S salva, Ctrl+F busca, Ctrl+H substitui, e o editor vem com oito
temas.
Blueprints e comportamentos#
Um grafo visual, uma biblioteca de comportamentos prontos, e uma máquina de estados sobreposta à pilha de comportamentos.
O grafo traz 267 nós em vinte e dois grupos: Math, Scene, Entity, Animation, Flow Control, String, Events, Physics, UI, Array, Vector, Transform, Debug, Input, Utility, Game, Boolean, Camera, Tween, Variables, Audio e as famílias 2D e 3D. Três propriedades os separam, e são do que o grafo é feito: 17 event nodes iniciam a execução, 117 pure nodes calculam um valor sem efeito colateral e sem pino de execução, e 9 latent nodes terminam depois: são esses que tornam um delay ou um tween expressável sem uma máquina de estados própria.
Quatro ferramentas: select V, pan H, comment C, reroute R, sobre uma
tela que dá zoom de 0.1× a 3× com um minimapa. As variáveis vêm em seis
tipos: boolean, integer, float, string, vector3 e object. A descrição de
cada nó fica no seu tooltip, o único lugar onde uma biblioteca desse tamanho
consegue se explicar.
A máquina de estados#
Um painel próprio, e deliberadamente não o do Animator: as condições do Animator são um enum plano com UI escrita à mão para cada caso, enquanto estas aqui são estruturadas e falam sobre o mundo.
Sete condições, e cada uma é uma pergunta sobre a cena: sees (um alvo marcado no alcance, opcionalmente dentro de um ângulo e em linha de visão), lost (nenhum alvo por N segundos), distance contra um limiar, health, message received, timer (tempo passado no estado atual), e flag (um valor no blackboard compartilhado). Dois combinadores, and e or, estão listados os dois mesmo que o or já existisse implicitamente (duas transições para o mesmo estado são um or), mas "ele me vê E eu ainda tenho vida" não tinha nenhuma forma.
⚠️ A vida é comparada como uma fração do máximo, nunca como um valor absoluto. Um limiar de "abaixo de 30 HP" não sobrevive a um passe de rebalanceamento; "abaixo de 0.3" sobrevive.
Ao entrar ou sair de um estado, quatro efeitos: send uma mensagem, set uma chave do blackboard, play um clipe de animação, ou disparar um named effect. Nenhum deles move nada; o movimento continua com os behaviours, e a máquina decide qual behaviour está ativo.
Uma transição pode começar de *, significando qualquer estado. O
validador devolve a lista de problemas em vez de lançar erro no
primeiro, então uma máquina escrita pela metade ainda é desenhada e você vê
tudo o que está errado de uma vez. As posições dos nós fazem parte dos
dados: um grafo cujo layout mora fora da cena volta embaralhado para a
próxima pessoa que o abrir.
BASIC#
O modo de viewport TXT é um ambiente BASIC clássico com programas de
demonstração inclusos, e a linguagem tem
uma referência própria. É uma linguagem de verdade
aqui, não um brinquedo: módulos multi-arquivo (#INCLUDE), numéricos
tipados (com e sem sinal de 8/16/32/64 bits, float32 e float64), registros
aninhados, métodos de objeto com SELF, referências (REF/BYREF),
TRY/CATCH/FINALLY estruturado, compilação condicional, corrotinas,
handles tipados, e WebGPU compute com storage buffers e WGSL cru.
OPTION EXPLICIT é opcional; as variáveis implícitas clássicas continuam
sendo o padrão, para que programas importados continuem rodando.
Jogando e lançando#
Play#
Play, Pause, Stop. Ao parar, um banner informa o que a sessão
mudou, então uma edição feita em modo play nunca é mantida ou perdida
silenciosamente. As sessões podem ser gravadas e reproduzidas dentro de
um relatório de bug, e os scenario bookmarks permitem que um playtest
comece do meio de um nível.
Build#
Build pega um tipo de jogo (detectado a partir da cena, ou definido à mão: sidescroller/platformer, primeira/terceira pessoa, baseado em texto) e um alvo.
- Web: WebGPU com fallback para WebGL, WebXR opcional (VR/AR), minificação, um contador de FPS, e uma opção embed assets que produz um único arquivo.
- Desktop e mobile: builds nativos. A cena é exportada como dados
(
scene.glb+scene.json) e compilada através de um projeto Bevy (Rust) gerado; os scripts rodam sem alteração lá, sobre um runtime QuickJS embutido.
A compressão é configurável por eixo: algoritmo, texturas, meshes, com um preset de qualidade amarrando tudo junto. Os builds ficam guardados num histórico com seus tamanhos (original contra comprimido) e podem ser baixados de novo depois.
Um build nativo só contém o que o exportador sabe exportar. O glTF não captura shaders personalizados, thin instances, o céu procedural ou o pós-processamento, então um sistema de runtime que não foi portado para o lado do Bevy vai estar ausente num build de desktop ou mobile enquanto parece perfeito na web. Confira um build nativo antes de confiar nele.
Multiplayer#
O painel Multiplayer room conecta uma cena a um servidor de jogo Colyseus. Um servidor de teste compartilhado e gratuito está disponível sem conta e sem configuração; um projeto também pode receber um servidor próprio. A room é identificada por um código de compartilhamento que você pode guardar para si ou distribuir.
Arquivos que ele lê e escreve#
| Formato nativo | .engine |
| Importa | .glb, .gltf, .obj, .fbx, .png, .svg, .mp4, .webm, .mov, .scene |
| Exporta | um build web, um build nativo de desktop/mobile, scene.glb + scene.json |
Enviando trabalho para outros estúdios#
Aceita meshes do Sculpt, Retopo e Pigment, cenas inteiras do Render, pixel art, animações, conjuntos de material PBR do Matter, rigs 2D, projetos de vídeo, imagens, arte vetorial, e objetos Vectra.
Produz rigs 2D.
Um mockup de tela do Vectra chega como estrutura, não como uma imagem. Ele se torna uma hierarquia de HUD que o Engine pode organizar e programar: a diferença entre um design que você pode conectar e uma captura de tela de um.
Atalhos#
Cmd/Ctrl + K alcança os próprios comandos do Engine pela paleta, junto
com os globais. O Engine também tem um painel de atalhos de teclado
dedicado e pesquisável nas próprias configurações; ele tem muito mais do que
caberia na página de atalhos.
Limites e problemas comuns#
- Uma viewport em branco geralmente é o navegador, não a cena. O Engine precisa de WebGL 2; confira se a aceleração de hardware está ativada.
- Systems e Tools compartilham uma gaveta. Se um painel "sumiu", ele provavelmente está no outro.
- O console é o primeiro lugar a olhar, não o último: ele vincula erros à entidade que os causou.
- Um componente adicionado em modo play pode não sobreviver ao stop. Leia o banner que aparece quando você para.
- A física difere entre 2D e 3D no seu solver, mesmo que os callbacks de script sejam os mesmos. Um contato em repouso em 2D é detectado com uma pele de 2 mm, porque o solver traz a penetração para exatamente zero antes de a detecção rodar.