Files
2026-05-20 16:23:00 +00:00

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_planRenderPlan 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ólo serde (regla inviolable: cero deps gráficas).
  • physics, iso, render-plancore (+ isolibm).
  • canvas-gpuirender-plan + gpui (único crate que toca GPUI).
  • La separación es estricta: un dominium-canvas-web o -tui hermano 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).