Router Maestro — Despachador de Habilidades de Juegos
El punto de entrada para el trabajo en desarrollo de juegos. Identifica el proyecto para elegir un motor, clasifica la tarea a partir de la solicitud, nombra el conjunto mínimo de habilidades especializadas y te indica que las leas antes de actuar. Despacha y compone — no reenseña las APIs del motor.
Cuándo usarlo
- Úsalo al inicio de cualquier solicitud de desarrollo de juegos — construir o depurar un juego, nivel, jugador, enemigo, shader, interfaz de usuario, sistema de guardado, multijugador, entrada, audio, IA, diálogo o contenido procedural — para decidir qué habilidad(es) cargar.
- Úsalo cuando el usuario nombre un motor o género, diga "haz un juego" o pregunte "¿qué habilidad debería usar?".
Cuándo no usarlo: una vez que la habilidad correcta está cargada y la tarea está dentro de ella, trabaja desde esa habilidad — no ejecutes el router cada turno. Vuelve a encaminar solo cuando la tarea pivote a un nuevo motor o área (paso 6 del router).
Algoritmo de enrutamiento
- Detectar motor — huella digital del proyecto → como máximo un conjunto de habilidades del motor (o "desconocido"). §1.
- Clasificar tarea — redacción → disciplina(s) + como máximo un género + flujo(s) de trabajo. §2.
- Resolver — el conjunto mínimo: habilidad(es) del motor + disciplina(s) + género + flujo(s) de trabajo. §3.
- Leer (divulgación progresiva) — abre solo los cuerpos de
SKILL.mdelegidos;references/solo bajo demanda. §4. - Componer — orden: fundamentos del motor → concepto de disciplina → pegamento del género → flujo de trabajo. §5.
- Plan de respaldo — motor desconocido o ninguna habilidad encaja → preguntar o usar Godot por defecto; indicar cualquier vacío. §6.
1. Detección del motor (huella digital del proyecto)
Busca la señal de mayor confianza; elige exactamente un motor. Detente en la primera coincidencia.
| # | Motor | Señal principal | Raíz del conjunto de habilidades |
|---|---|---|---|
| 1 | Godot | project.godot | skills/godot/ |
| 2 | Unreal | *.uproject | skills/unreal/ |
| 3 | Unity | Assets/ y ProjectSettings/ProjectVersion.txt | skills/unity/ |
| 4 | Bevy | Cargo.toml con dependencia bevy | skills/other-engines/bevy-ecs/ |
| 5 | Phaser | package.json dep phaser | skills/web-engines/phaser-* |
| 6 | PixiJS | package.json dep pixi.js | skills/web-engines/pixijs-rendering/ |
| 7 | three.js | package.json dep three | skills/web-engines/threejs-* |
| 8 | LÖVE | conf.lua / main.lua llamando a love.* | skills/other-engines/love2d-core/ |
| 9 | pygame | *.py con import pygame | skills/other-engines/pygame-core/ |
| 10 | Roblox | *.rbxl(x) / *.project.json (Rojo) | skills/other-engines/roblox-* |
Para señales secundarias, reglas de desambiguación Godot-C#/Unity/Bevy y multi-web, monorepos y menciones de motores en texto plano, lee references/engine-detection.md.
2. Clasificación de la tarea (redacción → categoría)
Después del motor, lee la solicitud en busca de señales de tarea (tres categorías aditivas):
- disciplinas (conceptos transversales entre motores):
game-ai,procedural-gen,dialogue-systems,save-systems,audio-design,shader-programming,physics-tuning,level-design,input-systems,game-feel,camera-systems,game-ui-ux,performance-optimization. Se activan por palabras conceptuales ("pathfinding", "ranuras de guardado", "shader de fragmentos", "sacudida de pantalla", "cámara sigue", "HUD/menú", "optimizar/bajo FPS"). - géneros (plantillas de juegos completos):
platformer,roguelike,rpg,fps-shooter,tower-defense,card-game,visual-novel,survival-crafting,puzzle. Se activan por palabras de género ("haz un roguelike", "deckbuilder"). - flujos de trabajo (proceso/distribución):
game-jam,prototype-fast,steam-publish,itch-publish. Se activan por palabras de proceso ("publica en Steam", "vertical slice").
Las señales de archivo refinan esto: *.yarn/*.ink → dialogue-systems/visual-novel; steam_appid.txt → steam-publish; *.inputactions → unity-input-system.
3. Tabla de enrutamiento (tarea → categoría → habilidad)
3a. Habilidades del motor — lee la que coincide con el motor detectado + subtarea
- Godot (
skills/godot/): idiomagodot-gdscript/godot-csharp; estructuragodot-nodes-scenes,godot-signals-groups; 2Dgodot-2d-movement,godot-tilemap; 3Dgodot-3d-essentials; físicagodot-physics; UIgodot-ui-control; animacióngodot-animation; shadersgodot-shaders; datosgodot-resources; audiogodot-audio; netcodegodot-multiplayer; distribucióngodot-export. - Unity (
skills/unity/): scriptingunity-csharp-scripting; entradaunity-input-system; físicaunity-physics; animaciónunity-animation; datosunity-scriptableobjects; 2Dunity-tilemap-2d; navegación IAunity-navmesh; distribuciónunity-build-pipeline. - Unreal (
skills/unreal/): scripting visualunreal-blueprints; jugabilidad C++unreal-cpp-gameplay; entradaunreal-enhanced-input; IAunreal-behavior-trees; VFXunreal-niagara; distribuciónunreal-packaging. - Web (
skills/web-engines/):phaser-core,phaser-arcade-physics;pixijs-rendering;threejs-scene-setup,threejs-gltf-loading,threejs-materials-lighting. - Otros (
skills/other-engines/):bevy-ecs,pygame-core,love2d-core,roblox-luau,roblox-datastores.
3b. Disciplinas — cargar con la habilidad del motor (concepto ↔ API del motor)
Concepto (dice:) | Habilidad de disciplina | Se empareja con (API del motor) |
|---|---|---|
| IA enemiga, árbol de comportamiento, pathfinding, dirección | game-ai | unity-navmesh / unreal-behavior-trees / Godot nav |
| procedural, ruido, semilla, generador de mazmorras | procedural-gen | habilidad de tilemap/rejilla del motor |
| diálogo, Yarn, Ink, árbol de conversación | dialogue-systems | habilidad de UI del motor |
| guardar/cargar, ranuras, persistencia | save-systems | roblox-datastores / E/S del motor |
| música adaptativa, mezclador, ducking, SFX | audio-design | godot-audio / Unity AudioMixer |
| shader, fragmento, dissolver/contorno | shader-programming | godot-shaders / material del motor |
| vibración, tunnelling, paso de tiempo fijo | physics-tuning | godot-physics / unity-physics |
| caja blanca, blockout, diseño de losetas, ritmo | level-design | godot-tilemap / unity-tilemap-2d |
| reasignar, gamepad, entrada en búfer | input-systems | unity-input-system / unreal-enhanced-input / Godot InputMap |
| sacudida de pantalla, hit-stop, jugosidad, estirar y encoger, "hazlo contundente" | game-feel | animación/tween del motor + camera-systems (sacudida) |
| cámara sigue, zona muerta, anticipación, órbita, primera persona | camera-systems | godot-2d-movement / godot-3d-essentials / Cinemachine |
| HUD, menú, diseño de UI, escalado, área segura, navegación por foco | game-ui-ux | godot-ui-control / UI de Unity (UGUI/UI Toolkit) |
| bajo FPS, optimizar, llamadas de dibujo, pico de GC, pooling, perfilador | performance-optimization | perfilador del motor + physics-tuning |
3c. Géneros — componer motor + disciplinas (vincular * al motor detectado)
Género (dice:) | compone |
|---|---|
| plataformas, salto, doble salto | godot-2d-movement (o física del motor) + godot-tilemap/unity-tilemap-2d + level-design + camera-systems + game-feel |
| roguelike, mazmorra procedural, muerte permanente | procedural-gen + godot-tilemap/unity-tilemap-2d + game-ai + save-systems + game-feel |
| RPG, estadísticas, inventario, misiones | godot-resources/unity-scriptableobjects + dialogue-systems + save-systems + game-ui-ux |
| FPS, primera persona, hitscan | godot-3d-essentials/unreal-cpp-gameplay + input-systems + game-ai + camera-systems + game-feel |
| torre de defensa, oleadas, carriles | game-ai + movimiento del motor + level-design + game-ui-ux |
| juego de cartas, deckbuilder, TCG | godot-resources/unity-scriptableobjects + game-ui-ux (+ UI del motor) |
| novela visual, historia ramificada | dialogue-systems + save-systems + game-ui-ux |
| supervivencia, artesanía, recolección | save-systems + godot-resources/unity-scriptableobjects + procedural-gen + game-ui-ux |
| puzzle, match-3, lógica de rejilla | godot-tilemap/unity-tilemap-2d + level-design + game-feel |
3d. Flujos de trabajo — proceso y distribución independientes del motor
game-jam (jam, 48 horas, Ludum Dare/GMTK) · prototype-fast (vertical slice, MVP, greybox) ·
steam-publish (Steam, Steamworks, depósito; steam_appid.txt) · itch-publish (itch.io, butler;
.itch.toml).
Para la lista exhaustiva de desencadenantes por habilidad y cada vinculación de motor, lee
references/routing-table.md.
4. Protocolo de lectura (divulgación progresiva)
- Precargado: solo el
nombre+descripciónde cada habilidad están en contexto. Decide a partir de esos más la huella digital — no pre-leas los cuerpos. - Al seleccionar: lee el cuerpo de cada uno de los
skills/<categoría>/<nombre>/SKILL.mdelegidos — y solo esos. Nunca cargues en bloque una categoría entera. - Bajo demanda: lee los archivos
references/empaquetados de una habilidad solo cuando la subtarea necesite esa profundidad (el cuerpo de la habilidad indica cuándo). - Reencaminar al pivotar: si la tarea cambia (movimiento → guardado), selecciona y lee la nueva habilidad relevante en lugar de mantener todo cargado.
Anuncia lo que cargas y por qué, por ejemplo: "Detectado Godot (project.godot). Cargando godot-2d-movement para el controlador y platformer para la sensación de salto; abriré la referencia feel-tuning.md de la habilidad de plataformas si quieres tiempo de coyote/búfer."
5. Reglas de composición
- Un conjunto de motor, conceptos aditivos. Exactamente un conjunto de habilidades del motor; añade las disciplinas que la tarea necesita y, por lo general, como máximo un género. Los flujos de trabajo se adjuntan de forma independiente.
- Orden: fundamentos del motor → concepto de disciplina → orquestación del género → flujo de trabajo.
- Propiedad en superposición: la habilidad del motor posee la API/sintaxis; la habilidad de disciplina posee el concepto/algoritmo portable y se remite a la habilidad del motor para el código; la habilidad de género posee la estructura/pegamento y enlaza hacia afuera en lugar de reenseñar un primitivo.
- Traspasos: cuando el
componede un género nombra un espacio como*-2d-movement, vincúlalo al motor detectado. Si ese motor carece de la habilidad exacta, consulta el §6 yreferences/routing-table.md("Lagunas de vinculación").
6. Plan de respaldo para motor desconocido y sin habilidad
Motor desconocido (sin huella digital, sin motor nombrado):
- Revisa la solicitud en busca de un nombre de motor en texto plano ("en Unity", "usando Phaser"). Si se encuentra, adopta ese.
- Si la tarea es una pregunta de concepto/género/flujo de trabajo pura, encamina directamente a la habilidad de disciplina/género/flujo de trabajo independiente del motor — no se necesita motor ("¿cuál es un buen formato de guardado?" →
save-systems). - Solo si la elección del motor realmente bloquea la respuesta, haz una pregunta dirigida ("¿Qué motor — Godot, Unity, Unreal, o un motor web/otro?"). Si el usuario no tiene preferencia y se necesita uno, usa Godot por defecto (el motor más cubierto aquí) y dilo.
- Nunca inventes un motor ni cargues una habilidad de motor basada en una suposición.
Motor conocido pero ninguna habilidad cubre la subtarea: carga la habilidad del motor más cercana más la disciplina relevante y declara la laguna claramente (por ejemplo, "no hay habilidad dedicada de movimiento 2D para Unity; usando unity-csharp-scripting + unity-physics"). Nunca fabriques un nombre de habilidad.
Géneros conflictivos/múltiples: elige el género dominante de la redacción; menciona el secundario y ofrece cargarlo si el usuario lo confirma.
Ejemplos prácticos
| Solicitud | Motor detectado | Habilidades cargadas (en orden) |
|---|---|---|
| "añade un doble salto a mi jugador de Godot" | Godot (project.godot) | godot-2d-movement → platformer |
| "haz un inventario para mi RPG de Unity" | Unity (Assets/+ProjectSettings/) | unity-scriptableobjects → rpg → save-systems |
| "mazmorra procedural roguelike en Godot" | Godot | godot-tilemap → procedural-gen → roguelike |
"diálogo ramificado desde un archivo .yarn" | (ninguno requerido) | dialogue-systems (+ habilidad de UI del motor si se detecta un motor) |
| "cómo diseño ranuras de guardado con migración?" | (ninguno) | save-systems solo |
| "publica mi juego en itch con butler" | (cualquiera/ninguno) | itch-publish solo |
| "quiero hacer un juego pero no sé qué usar" | desconocido → preguntar, Godot por defecto | el router pregunta una vez; luego, por ejemplo, godot-nodes-scenes |
| "haz que los golpes se sientan contundentes en mi juego de Godot" | Godot (project.godot) | game-feel (+ camera-systems para sacudida) |
| "la cámara debería seguir a mi jugador suavemente" | (motor detectado) | camera-systems (+ habilidad de movimiento del motor) |
| "mi juego de Unity baja a 30 FPS, optimízalo" | Unity (Assets/+ProjectSettings/) | performance-optimization (perfila primero) → habilidad del motor |
Referencias
- Huellas digitales completas del motor, señales secundarias y desambiguación:
references/engine-detection.md. - Palabras desencadenantes exhaustivas por habilidad, vinculaciones de motor y lagunas de vinculación:
references/routing-table.md.