Juego web isométrico (proyección 3D → 2D, estilo tycoon) que enseña cómo se diseña una AI Factory de 10 MW sobre plataforma NVIDIA Vera Rubin NVL72, etapa por etapa:
| # | Etapa | Lo que se decide |
|---|---|---|
| 1 | Diseño mecánico | Losa, peso, unidad escalable, pasillos, alcance de CDU |
| 2 | Diseño eléctrico | SOFC N+1, BESS, distribución, gas, HHV/LHV, swing de cómputo |
| 3 | Diseño hidráulico | 199 kg/s, 45/55 °C, 5 bar, velocidad en tubería, agua de reformado |
| 4 | Diseño de HVAC | Dry coolers, modo adiabático, PUE, WUE, día de diseño |
| 5 | Diseño de la máquina | Armar un NVL72 Oberon bandeja por bandeja |
| 6 | Stack de software | Las 13 capas del HaaS y las políticas que fijan el perfil eléctrico |
La tesis del juego está en la etapa 6: la protección del sistema de generación frente a los transitorios de cómputo es una política del plano de control, no una obra eléctrica. Las decisiones de scheduler (límite de potencia por GPU, escalonamiento, tamaño máximo de job, ramp-down) se propagan hacia atrás y cambian las verificaciones de la etapa eléctrica.
Regla heredada del plan de verificación del diseño conceptual: ningún número se presenta como conclusión sin declarar su origen. Cada dato de la pestaña «Datos» lleva su marca:
| Marca | Significado |
|---|---|
| ✅ | Confirmado en el documento de diseño conceptual |
| 📐 | Derivado por aritmética a partir de datos confirmados |
| Supuesto de ingeniería propio, sin respaldo documental | |
| ❓ | Dato faltante, requiere consulta |
| 🏭 | Hoja de especificación del fabricante |
Donde el documento y el fabricante discrepan —los 130 kW/rack del diseño contra los 190–230 kW (Max Q / Max P) de la hoja del NVL72— el juego muestra las dos cifras y la registra como pregunta abierta, en lugar de elegir una en silencio.
- Node 20+ / TypeScript en modo estricto, ESM
- Express 4 para la API
- PostgreSQL 16 — todo el contenido pedagógico y el estado de juego viven en la base
- Canvas 2D sin dependencias para el renderizado isométrico (sin sprites: cajas extruidas)
cp .env.example .env
npm install
npm run db:up # Postgres 16 en 127.0.0.1:5433 (el 5432 puede estar ocupado)
npm run db:migrate
npm run db:seed
npm run dev # http://localhost:4000npm run db:seed es idempotente: actualiza el contenido sin borrar partidas en curso.
Para empezar de cero: npm run db:reset.
Otros comandos:
npm test # motor de simulación y diseño de referencia (node:test)
npm run typecheck
npm run build && npm start
npm run db:psql # psql dentro del contenedorsrc/
content/ contenido pedagógico como datos tipados
stages/*.ts una etapa por archivo: lecciones, datos, catálogo, examen
reference.ts diseño de referencia que aprueba las seis etapas
domain/
constants.ts números del diseño conceptual
geometry.ts rectángulos, rotación, colisión, distancia
engine.ts métricas, verificaciones y economía por etapa
db/ esquema, migración y siembra
routes/ API de contenido y de juego
public/
js/iso.js proyección isométrica y primitivas de dibujo
js/scene.js cámara, selección por polígono y render
js/app.js estado del cliente y paneles
test/ pruebas del motor
La proyección es la clásica 2:1 del género:
screenX = (tx − ty) · (TILE_W / 2)
screenY = (tx + ty) · (TILE_H / 2) − tz · Z_H
El orden de pintado es el algoritmo del pintor: se ordena por (tx + ty) y luego por altura. La
selección no usa la transformación inversa sino prueba de punto-en-polígono contra las caras
visibles, que es lo que hace que el cursor acierte también en los bordes y en los tableros
apilados (etapas 5 y 6).
Hay tres tipos de tablero:
site— predio de 22×22 compartido por las cuatro disciplinas de sitio. Lo colocado en una etapa sigue ocupando terreno en las otras y se dibuja atenuado.rack— elevación del NVL72: dos posiciones por nivel, 22 niveles.stack— pila de software: una capa por nivel, el orden es la dependencia.
| Método | Ruta | Para qué |
|---|---|---|
GET |
/api/health |
Estado del servicio y de la base |
GET |
/api/stages |
Lista de etapas |
GET |
/api/stages/:slug |
Lecciones, datos, catálogo, examen y políticas |
POST |
/api/sessions |
Nueva partida |
GET |
/api/sessions/:id |
Estado completo: colocaciones, evaluaciones, economía |
POST |
/api/sessions/:id/placements |
Colocar equipo (valida límites, colisión y máximos) |
DELETE |
/api/sessions/:id/placements/:pid |
Retirar |
POST |
/api/sessions/:id/reference |
Cargar el diseño de referencia (todo o una etapa) |
PUT |
/api/sessions/:id/decisions |
Fijar una política del plano de control |
GET |
/api/sessions/:id/stages/:slug/evaluate |
Verificaciones y métricas de la etapa |
POST |
/api/sessions/:id/stages/:slug/complete |
Entregar examen y cerrar etapa |
Las respuestas correctas del examen nunca viajan al cliente: se califican en el servidor.
| Acción | Cómo |
|---|---|
| Colocar | Seleccionar del catálogo y hacer clic en el tablero |
| Retirar | Clic derecho, o botón Demoler / tecla X |
| Rotar | Botón Rotar o tecla R |
| Mover la vista | Arrastrar |
| Acercar | Rueda del ratón |
| Encuadrar | Botón Centrar |
| Ver la solución | Botón Referencia (carga la etapa activa) |
- Documento de diseño conceptual de la instalación y su plan de verificación (10 MW).
- Hoja de especificación pública del NVIDIA Vera Rubin NVL72 (resumen): 72 GPUs Rubin, 36 CPUs Vera, 288 GB HBM4 por GPU (20.7 TB por rack), 54 TB LPDDR5X, 3.6 EFLOPS NVFP4 de inferencia, NVLink 6 a 3.6 TB/s por GPU, ConnectX-9 a 1.6 Tb/s, 45 °C de agua de entrada, 190–230 kW por rack, Rubin Ultra (Kyber) en H2 2027.
- Bibliografía técnica citada en el plan de verificación: Larminie & Dicks, O'Hayre et al., Kundur, ASHRAE TC 9.9, ISO/IEC 30134-2, GPSA Engineering Data Book, factores EPA.