Goi
Goi es la librería JavaScript de componentes y runtime para juegos accesibles de Rol Sensorial. Reúne anuncios, gestión de foco, historial, acciones declarativas, tableros, validación y transportes local/Appwrite.
Sólo se usa en experiencias de juego. Las interfaces generales del sitio usan Liri.
Los componentes de Goi son genéricos: reciben mapas, entidades, acciones, reglas y callbacks como datos, pero no incluyen narrativa, nombres ni lógica de un juego concreto. Esa lógica pertenece al paquete consumidor.
Antes de agregar un componente se intenta usar Bootstrap, reutilizar uno de Goi o parametrizarlo. Sólo se crea uno nuevo cuando esas opciones no resuelven un patrón de juego compartido. Todo componente nuevo documenta su API y accesibilidad y prueba el contrato general, no únicamente el juego que lo originó.
Goi se publica como módulos ES sin compilación obligatoria. Sus pruebas se ejecutan desde esta carpeta:
node --test test/*.test.js
Runtime inmediato del navegador
browser-runtime.js resuelve movimiento, descripción de casillas, cámara y teclas sin esperar al servidor. El reproductor aplica el movimiento localmente y envía una cola asíncrona a la Function; si la autoridad rechaza una transición, descarta la predicción y restaura el último estado confirmado.
El paquete puede declarar game.movement con boundaryMessage, blockedMessage, emptyCellMessage y announcement. Este último admite content —valor predeterminado—, coordinates, content-and-coordinates y none. Las casillas pueden describirse en board.cells o board.terrain.
game.controls permite configurar o desactivar actions, inventory, help, look, camera, hint, progress y repeat. Cada valor puede ser una combinación como "i", un objeto { "key": "shift+c" } o false. Los valores predeterminados son A, I, H, M, Shift+C, G, P y R, respectivamente.