🪐 ColonyForge — como foi criado

A fusão de dois cadernos de referência do Project Atlas numa única criação jogável, em uma sessão (21/07/2026).
NÃO-CANON · estudo do Project Atlas single-file · JS vanilla · zero dependência
▶ Abrir a colônia

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)

FastNoiseLite ★ 3.5k · worldengine ★ 1.1k · Azgaar ★ 5.8k

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.

Star Ruler 2 ★ 1.5k

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₀).

Cataclysm-DDA ★ 12.7k · UrbanSim ★ 538

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çãoResultado
Determinismo: mesma seed + mesmas escolhas ⇒ canvas e KPIs idênticos após 200 ticksOK
Variação: outra seed com a mesma timeline ⇒ história diferenteOK
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 hospitalOK — 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 consoleOK — 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).

ColonyForge · protótipo de estudo do Project Atlas (fusão Refs 06 + 07) · nada aqui é canon.
Fontes: Ref 06 (Studio/GAMES/Project Atlas/References/06-geracao-procedural-mundos.md) e Ref 07 (…/07-simulacao-sociedade-colonias.md), repos verificados na API do GitHub em 20/07/2026. Código: ~/games/colonyforge/www/ · abrir a colônia