Estudei EnTT e Flecs e construí um ECS em torno de três requisitos: acesso de leitura/escrita declarado, mudanças estruturais diferidas e determinísticas e snapshots do mundo. Uma Entity é um índice e uma geração em oito bytes; a geração detecta referências obsoletas. A persistência usa um UUID, StableEntityId, em vez do handle de runtime.
Entidades com o mesmo conjunto de componentes ficam em archetypes, com colunas SoA contíguas em chunks de 64 KiB. Com dois milhões de entidades, 64 KiB exigiu 1.482 páginas contra 5.955 a 16 KiB, com a mesma largura de banda. Sparse sets guardam componentes raros sem multiplicar archetypes. Tabelas de componentes compartilhados mantêm um valor por configuração distinta, referenciado pelo chunk.
Cada SystemDescriptor declara leituras e escritas. O scheduler deriva um DAG de dependências e executa juntos os sistemas sem conflitos. Com 32 sistemas, o custo medido foi de 0,68 µs por quadro sobre 10.000 entidades e 0,86 µs sobre 1.000.000: esse custo acompanha os sistemas, não a contagem de entidades.
Fases fixas definem quando ocorrem input, simulação, física, eventos, playback estrutural, transforms e extração para render. Criar, destruir ou mudar componentes passa pelo CommandBuffer, aplicado em um único ponto determinístico. Um auditor de acesso detecta escritas não declaradas em desenvolvimento e é compilado fora em Shipping. Eventos tipados, observers e um store próprio de hierarquia completam o modelo; a propagação por versões evita recalcular nós parados.
O replay de snapshot reproduziu 120 registros de auditoria idênticos ao longo de 120 quadros na mesma máquina e build. Esse é o escopo verificado de determinismo e a base do Play/Stop do editor; não há promessa de determinismo entre plataformas.