A ideia — fundir duas referências, não repetir uma
O Project Atlas mantém dois cadernos de referência distintos: a Ref 06 (geração procedural de
mundos/universos) e a Ref 07 (simulação de sociedade/colônia baseada em agentes). O MapForge já
tinha explorado a Ref 06 sozinha. O ColonyForge faz o que nenhum dos dois cadernos faz isolado:
casa o mapa gerado com a população que reage às escolhas. O planeta é procedural (Ref 06); a
sociedade que o habita vive o laço escolha→população→consequência (Ref 07). Cada técnica foi
reimplementada do zero em JavaScript puro, num único arquivo HTML, sem executar nem copiar código de
terceiro (doutrina anti-injection do lab). Tudo é determinístico por seed: a mesma seed com as
mesmas decisões reproduz exatamente a mesma história.
A costura das duas referências: o terreno por noise (Ref 06) define os recursos de cada
distrito → o recurso define o papel (agrícola/mineração/residencial) → o papel alimenta a
economia dos agentes (Ref 07). O grafo de estradas (motor Galáxia da Ref 06) é a rede por onde
os colonos viajam e o contágio se espalha (Covasim da Ref 07). Um caderno vira o palco; o outro, os atores.
Ref 06 — o mapa (geração procedural)
O que são: a biblioteca de noise base de quase todo gerador de terreno, o gerador de mundos por simulação física, e o "criador de mundos" mais famoso do browser.
Viraram → o planeta: Perlin 2D + FBM (tabela de permutação embaralhada pela seed) gera dois campos independentes — elevação e umidade. Uma máscara de "continente central" recorta a ilha. Um classificador de biomas (elevação × umidade) pinta 8 biomas com hillshade para relevo legível. O bioma de cada célula não é decoração: é o recurso que decide se ali nasce um distrito agrícola, de mineração ou residencial.
O que é: único 4X espacial completo open-source que shippou — inclui a receita de geração de galáxia (densidade, ligações entre sistemas) usada em produção real.
Virou → a malha de estradas: os distritos são ligados por uma árvore geradora mínima (Prim) que garante a colônia 100% conexa, mais alguns atalhos — exatamente a lógica de hyperlanes do motor Galáxia do MapForge, reaproveitada aqui como a rede viária por onde os colonos circulam (e o contágio viaja).
Ref 07 — a população (simulação baseada em agentes)
PolicySpace2 ★ 29 · IPEA/BR, JASSS 25(1)
O que é: o ABM de política pública municipal mais direto do "política vira consequência na população" — esquema imposto→orçamento→serviços→migração de agentes, empírico e citável.
Virou → a economia fechada: cada colono produz (escalado por humor, saúde e papel do distrito); a alíquota de imposto que você escolhe converte produção em tesouro; o tesouro constrói serviços (hospital/fazenda/moradia); os serviços mexem em aprovação, comida e capacidade; a aprovação decide quem imigra e quem foge. O laço governante↔cidadão inteiro, fechado.
Covasim ★ 289 · ex-IDM
O que é: ABM de epidemia com agentes em rede social e intervenções (lockdown/vacina/teste) — o laço "medida sanitária vira curva na população", pronto e citável.
Virou → o modelo SIR: agentes Suscetível→Infectado→Recuperado. O contágio se propaga por proximidade real no canvas (grid espacial O(n)), amplificado pela densidade (superlotação) — quando a moradia não acompanha a população, a epidemia pega fogo. A quarentena corta o contato; o hospital acelera a recuperação e reduz a mortalidade, encolhendo o tamanho final da epidemia (menor R₀).
O que são: o sistema de facção/reputação onde o mundo reage às ações do jogador, e o modelo estatístico de escolha de localização — para onde a população migra quando a política muda.
Viraram → humor político e migração: uma aprovação agregada converge a cada tick para um alvo formado por imposto, serviços, fome, superlotação e medo da doença. Aprovação baixa dispara greve (produção despenca) e êxodo (colonos abandonam a colônia); aprovação alta atrai ondas de imigração — enquanto houver moradia. Cada colono muda de cor no mapa conforme seu estado: saudável, infectado, recuperado ou infeliz.
O laço, em uma frase
Você mexe num slider (imposto, quarentena, racionamento) ou constrói um edifício →
isso muda a produção, a comida, o contágio ou a aprovação → os agentes respondem (produzem menos,
adoecem, migram, entram em greve) → o efeito volta como número nos KPIs, curva nos gráficos e
evento no diário. Nenhuma escolha é cosmética; toda escolha propaga.
O que saiu no fim
🌍 O planeta
Ilha procedural por FBM Perlin, 8 biomas com hillshade, 7–9 distritos posicionados nos recursos e ligados por grafo de estradas conexo (MST+atalhos). Determinístico por seed.
👥 A população
Centenas de agentes (até 1.200) com necessidades (comida/moradia/saúde/trabalho), estado SIR visível no mapa, humor individual e migração.
🏛 As escolhas
Imposto (slider), investir orçamento (hospital/fazenda/moradia), quarentena e racionamento (toggles) — cada uma gravada com o tick no export JSON.
📈 As consequências
KPIs ao vivo (população, aprovação, tesouro, infectados, comida, mortes), 5 trajetórias em gráfico e um diário narrado (surto, greve, fome, êxodo, imigração).
Prova de que funciona (QA headless)
| Verificação | Resultado |
| Determinismo: mesma seed + mesmas escolhas ⇒ canvas e KPIs idênticos após 200 ticks | OK |
| Variação: outra seed com a mesma timeline ⇒ história diferente | OK |
| Consequência: imposto 60% ⇒ tesouro muito maior que imposto 0% (revenue empírico) | OK — $13.9k vs −$1.3k |
| Consequência: imposto 85% ⇒ aprovação abaixo de imposto 10% (penalidade pesa cedo) | OK |
| Consequência: surto SEM hospital ⇒ acumulado de infectados maior que COM hospital | OK — 244 vs 189 |
| Falha plantada: contágio sabotado ⇒ epidemia não acontece (o teste de surto falharia) | OK (selftest) |
| Falha plantada: seed sabotada no meio ⇒ determinismo quebra (o teste tem dentes) | OK (selftest) |
| Colônia conexa · escolhas gravadas com tick · zero erros de console | OK — 13/13 verde, arquivo local E no ar |
Suíte Playwright (~/games/colonyforge/colonyforge-qa.mjs) roda "histórias" completas
(seed + timeline de decisões), compara hashes e KPIs, mede a direção das consequências e sabota de propósito
— o contágio na epidemia, a seed no determinismo — pra provar que os testes falhariam se as garantias quebrassem
(regra do lab: vigia sem teste que força a falha é mentira verde).