| name | create-world |
| description | Crea un mundo propio de Terravia (fork del repo, contenido personalizado, GitHub Pages y federación). Usar cuando el usuario quiera su propio mundo, servidor o fork del juego. |
Crear tu propio mundo
Un mundo = un fork de este repo con su GAME.md propio, publicado en GitHub Pages y federado con otros mundos. El motor, las herramientas y el CI vienen incluidos y no se tocan.
Pasos
-
Forkeá el repo (gh repo fork MauricioPerera/tierraviva --clone o desde la web) y clonalo.
-
Identidad del mundo en GAME.md, token federation:
federation:
worldId: mi-mundo
peers:
terravia-prime: { n: Terravia (mundo original), url: "https://mauricioperera.github.io/tierraviva/" }
También cambiá name: (el título del mundo).
-
Personalizá el contenido — todo en GAME.md, guiándote por SPEC.md:
- Especies y movimientos propios (skill
add-creature; respetá balance, que es lo que hace a tu mundo confiable para visitantes e intercambios).
- Zonas y mapa propios (skill
add-zone; mantené la conectividad).
- Economía, recetas, expediciones, música: cualquier token.
- Lo que NO se debe hacer: editar
game-data.generated.js a mano, aflojar balance, o romper la paridad tocando datos embebidos en game.js.
-
Validá localmente (solo Node, sin npm install):
node tools/game-lint.js && node tools/game-export.js && node tests/run.js
Nota: si cambiaste mucho contenido, los tests de gameplay pueden referenciar especies/zonas del mundo original — adaptalos o consultá; el lint y la paridad son los innegociables.
-
Publicá en GitHub Pages: commit + push, y luego:
gh api repos/TU_USUARIO/TU_REPO/pages -X POST --input - <<< '{"source":{"branch":"master","path":"/"}}'
(o Settings → Pages → Deploy from a branch → master / root). En ~1 minuto tu mundo vive en https://TU_USUARIO.github.io/TU_REPO/ y el CI corre en cada push.
-
Federate: verificá desde el juego (botón "Federación" → pegá tu URL → el cliente valida tu contrato en el navegador). Después abrí un PR al mundo original (u otros) agregando tu mundo a sus peers — y listá los suyos en el tuyo.
-
(Opcional) Tablón de intercambios: tu mundo trae trades.json vacío. Los jugadores publican ofertas ahí vía PR (el puesto de intercambio les da la entrada JSON lista); node tools/trades-lint.js corre en tu CI y rechaza ofertas ilegales o de otros mundos. Retirá las ofertas cerradas con otro PR.
Checklist de aceptación