Uma engine para mundos vivos - não um jogo, mas a simulação sobre a qual os jogos rodam. Aqui está ela inicializando de verdade: sete processos, quatro tiers, dezenas de módulos ao vivo.
Tudo é Entity./Tudo está conectado./Tudo é simulado.
A ASE simula indivíduos, não médias - cada folha, cada verme, cada bactéria é uma entidade de primeira classe. Escala não é um controle que você desliza; é a forma da arquitetura.








O axioma fundador da ASE é uma arquitetura, não um slogan: tudo está conectado, tudo é Entity, tudo é simulado. ECS puro é o que transforma esse axioma em algo que uma CPU consegue de fato rodar.
Todo componente carrega um status em seu registro VERSION - e ele não é alegado, é auto-derivado da contagem de commits do componente. Isto é exatamente onde a ASE está hoje, não uma promessa.
seed → poc → init → core → feat → refine é calculado automaticamente a partir da contagem de commits de cada componente; alpha · beta · stable são definidos à mão. Clique em qualquer status para ver exatamente quais componentes estão ali - direto dos registros VERSION.
Todo módulo vive em um grafo. Clique em um bloco abaixo - o grafo ao vivo se reconecta à cadeia downstream real daquele módulo, extraída direto dos docs de causalidade da engine.
Nenhum script escreveu isto. A cadeia abaixo é o que a saída de um módulo faz com todo módulo downstream - porque eles compartilham um grafo.
A ASE divide seu runtime em quatro planos - Engine, Replica, World e Reasoning - para que um crash de simulação, um comando de ciclo de vida e uma chamada de LLM nunca possam bloquear um ao outro. A divisão não é cosmética; é como a engine permanece observável e escalável.
Como o navegador está conectado ao Replica e não ao World, a ASE pode mover, dividir e mesclar o compute por trás de uma região - um handoff de assinatura de tópico - enquanto o jogador continua andando. A continuidade não é um truque; ela decorre da topologia.
ase-codegen faz o parse do backend C++ e gera o cliente becsy - componentes, sistemas e constantes - com paridade 1:1. A mesma lógica determinística então roda no servidor e no seu navegador, que é exatamente o que permite ao fio enviar uma semente em vez de uma imagem.
class AtmoSimPrsChgSystem
: public ecs::System {
void tick(Registry& r, float dt) {
auto v = r.view<AtmoStPrsChgComponent,
AtmoStPrsBaseComponent>();
for (auto [e, chg, base] : v.each()) {
chg.timer_s += dt;
if (chg.timer_s >= 60.0f)
chg.delta = std::min(base.p, MAX_P);
}
}
};
@system(s => s.after(AtmoSimPrsAltSystem)
.inAnyOrderWithWritersOf(AtmoStPrsChgComponent))
export class AtmoSimPrsChgSystem extends System {
private readonly query = this.query(q => q.current
.with(AtmoStPrsChgComponent).write
.with(AtmoStPrsBaseComponent).read);
execute(): void {
const dt = this.delta;
for (const e of this.query.current) {
const chg = e.write(AtmoStPrsChgComponent);
const base = e.read(AtmoStPrsBaseComponent);
chg.timer_s += dt;
if (chg.timer_s >= 60.0)
chg.delta = Math.min(base.p, MAX_P);
}
}
}
registry.view<A,B>()→this.query(q => q.with(A).with(B))view.each()→query.currentstd::min / std::sin→Math.min / Math.sinfloat x = 0.0f→let x: number = 0.0float field→@field.float32constexpr PI→const PI · importado (SSOT)Duas engines escritas à mão divergem na primeira vez que alguém corrige um bug em apenas um lado. Então a ASE nunca escreve duas: a lógica é escrita uma vez em C++ e o gêmeo TypeScript é transpilado a partir dela. Uma lógica nos dois lados é o que permite ao navegador recalcular o mundo a partir de uma semente em vez de transmitir a imagem, prever através de um pico de latência sem travar e permanecer travado ao servidor. Ele ainda deriva - ponto flutuante e previsão sempre derivam - mas o servidor autoritativo o traz de volta com deltas minúsculos, do jeito que o NTP disciplina um relógio de quartzo contra uma referência atômica. A mesma lógica é o que mantém a deriva pequena e a correção minúscula.
Components e sistemas determinísticos que existem no servidor e no cliente com campos idênticos. Estado que precisa renderizar - posição, pressão, saúde. Os sistemas transpilados vivem aqui.
Buffers, requests, broadcast, persistência e acesso ao Hub. Eles permanecem em C++ e nunca cruzam o fio, então o cliente não carrega nada do peso do servidor.
Sistemas NetworkInput, RenderSync e EntityExport que o codegen escreve para você - o encanamento que aplica os dados de rede ao ECS e os sincroniza no React.
float to @field.float32, uint32_t to @field.uint32. Mude um campo em C++ e o tipo do cliente se remodela ao regenerar.O daemon Reasoning-Edge da ASE conduz a CLI que você já paga - então o pesado custo de iteração de construir um MMORPG movido a LLM permanece uma assinatura mensal fixa durante o desenvolvimento, não uma conta de API medida.
Na ASE uma skill não é um arquivo markdown ou um microsserviço registrado. É uma entidade ECS nascida em runtime a partir de um manifesto declarativo e capturada por uma query - o mesmo princípio Tudo-Pode-Nada-Deve, estendido ao reasoning.
id: lore-consistency-checker subscriptions: [ DialogueIntent, LoreState ] reads: [ CharacterMemory, WorldFacts ] writes: [ AnomalyIntent ] # nada fora disto é permitido work_type: reasoning_heavy # uma necessidade, não um nome de modelo cost_layer: game communication_pattern: standard memory: [ episodic, semantic, procedural ] quota: { usd, rate, concurrency, … } # 10 eixos, verificados antes do gasto
O Reasoning Tier controla toda chamada de LLM por trás de dez eixos de cota ortogonais. Uma skill com prompt injection ou descontrolada não pode acumular uma conta, porque o gasto nunca começa. Limites amigáveis a indies são uma propriedade da arquitetura, não uma promessa.
Anti-cheat é um caso de uso de reasoning embutido com uma hierarquia de autoridade de três tiers que escala em irreversibilidade - e nunca chega a deixar um LLM banir um jogador por conta própria.
Todo MMO combate a mesma podridão: bot farming, exploits, griefing, itens duplicados, inflação descontrolada. EVE Online, World of Warcraft, Star Citizen: todo mundo de longa duração os combateu às claras, e a lição se repete. A aplicação parafusada após o lançamento chega tarde demais; a economia já está envenenada, o wipe se segue, e os jogadores vão embora. A ASE é construída contra essa história desde a hora um, com três décadas de experiência em MMO dobradas na arquitetura: detecção, quarentena e sanções assinadas por humanos são primitivas da engine, não um patch pós-lançamento.
Estes não são recursos da ASE - são mundos construídos COM ela. Aetheria é a prova tomando forma, do jeito que Fortnite prova a Unreal. Mítico na superfície, mecânico por baixo.
A engine não é um monólito - é uma estrela de módulos L3 independentes que escrevem saídas e leem uns aos outros através de um Communication Hub, com zero acoplamento direto. Todo módulo L3 na árvore abaixo - cada um seu próprio marcador, com sua maturidade real.
A ASE é construída em camadas estritas, L0 a L5 - e a linha entre engine e jogo passa bem no meio delas. Os desenvolvedores da engine são donos de L0–L3; você constrói seu jogo em L4 e L5, e não vê nada além do header ase-sdk.
A ASE é fortemente direcionada, e vale ser honesto sobre quem deveria construir sobre ela hoje - e quem não deveria. Complementar por design, não competitiva.





Integramos desenvolvedores solo e pequenos estúdios em ondas - deixe seu endereço e enviaremos um sinal quando sua onda abrir. Sem spam, sem cartão, sem compromisso.