Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.1 KiB
modules/dominium/ — Simulador psicológico de campo medio
Propósito. Laboratorio de complejidad emergente: agentes vectoriales (Lemmings) sin cognición reaccionan mecánicamente a una grilla plana de 5 campos ejecutando una de 6 acciones atómicas. Civilización, guerra, fe y poder son patrones emergentes, no algoritmos. La maqueta se ve en pseudo-3D isométrico calculado en CPU.
Crates
| crate | tipo | rol |
|---|---|---|
dominium-core |
lib | Grid (5 capas SoA) + Lemmings (SoA) + World + 6 Action + SimParams |
dominium-physics |
lib | diffuse (difusión + entropía) + tick/run (ciclo completo) |
dominium-iso |
lib | IsoProjector (matriz iso fija vía libm) + ZWeights (relieve) + sombra Lambert |
dominium-render-plan |
lib | build_plan → RenderPlan de Quads 2D ordenados por profundidad |
dominium-canvas-gpui |
lib | DominiumCanvas: Element GPUI que pinta el RenderPlan |
App: apps/dominium — ventana GPUI con bucle de simulación, maqueta
isométrica viva, panel de estadísticas y controles play/re-sembrar.
Cadena de datos
dominium-core ─► dominium-physics ─► dominium-iso ─►
dominium-render-plan ─► dominium-canvas-gpui ─► apps/dominium
Dependencias
core← sóloserde(regla inviolable: cero deps gráficas).physics,iso,render-plan←core(+iso←libm).canvas-gpui←render-plan+gpui(único crate que toca GPUI).- La separación es estricta: un
dominium-canvas-webo-tuihermano se escribiría sin tocar el núcleo.
Determinismo
core + physics + iso son bit-exactos: sólo aritmética f32 en
orden fijo, trig vía libm, sin iteración de HashMap ni reducciones
paralelas. Mismo seed → mismo estado en cualquier plataforma.
Estado
5 crates lib + 1 app, todos implementados y verdes. ~37 tests unitarios
(run_is_deterministic, plan_is_deterministic incluidos).