Portabilidad

Importar y exportar: tu historia debe seguir siendo tuya

Esta es otra historia sobre por qué me gustan tanto los navegadores y la web. Gracias a su evolución, en 2026 una misma historia puede funcionar en el navegador, en un archivo autónomo y como aplicación para Windows o macOS sin mantener varios motores de juego independientes.

Antes de que la importación y la exportación llegaran en agosto de 2026, Romergo llevaba tiempo con un problema de vendor lock-in: una persona podía crear dentro del sistema, pero apenas podía llevarse el resultado. Eso ya no es así. Hoy, el propietario puede descargar un archivo .romergo documentado o preparar un juego autónomo para web, Windows, macOS y Microsoft Store. El proyecto debe pertenecer a su autor, incluso si algún día decide abandonar Romergo.

Por eso empecé a trabajar en la importación y la exportación.

Por qué la web redujo tanto el trabajo

Romergo ya tenía un Player runtime común para escenas, bifurcaciones, imágenes, música, vídeo, traducciones, idiomas RTL y partidas locales. Normalmente carga una publicación desde el servicio, pero también puede empaquetarse con la historia y funcionar sin red.

La exportación web coloca index.html en la raíz del ZIP. Windows y macOS envuelven el mismo Player en una capa Electron endurecida. Microsoft Store recibe el mismo juego en un MSIXUpload. La lógica narrativa no se reescribe cuatro veces: cambia el paquete alrededor de un único runtime.

Siguen existiendo certificados, firmas, notarización y reglas de las tiendas. Pero ya no se duplica la parte más cara: crear un cliente diferente y mantener un comportamiento narrativo distinto en cada plataforma.

Cómo funciona la exportación

Romergo parte de un borrador guardado en estado Saved o de una versión concreta de una publicación. Runtime y recursos quedan fijados por revisión. Si el proyecto cambia durante el proceso, el trabajo se repite en lugar de mezclar escenas antiguas con archivos nuevos.

El primer resultado siempre es .romergo: un ZIP documentado con manifest, proyecto, capítulos, escenas, grafo, variables, presentación, medios, créditos y checksums SHA-256. Conserva nombres visibles y roles de colaboradores, pero no correos ni identificadores internos.

borrador guardado o publicación
        ↓
runtime y recursos consistentes
        ↓
archivo .romergo documentado
        ↓
constructor de plataforma aislado
        ↓
ZIP o MSIXUpload privado durante 7 días

Cada recurso se lee, se calcula su hash y se comprueba de nuevo antes de escribirlo. El archivo se transmite directamente a R2 privado, sin guardar un proyecto enorme en la memoria de un Worker.

Si se solicita un juego, un contenedor Linux sin acceso a Internet valida .romergo, añade el Player autónomo y produce Web/itch.io, Windows x64, dos aplicaciones macOS para Apple Silicon e Intel, o MSIXUpload. Romergo nunca pide credenciales de Steam, Apple Developer ID, certificados ni contraseñas. La firma y la publicación siguen en las cuentas del autor.

El precio también me sorprendió. «La ventisca» usa 101 archivos multimedia y ocupa unos 30 MB. Incluso fuera de los recursos incluidos, construirla cuesta apenas unos céntimos. El mayor gasto no era R2 ni el tráfico, sino el tiempo que el contenedor permanecía activo después de terminar.

Puedes jugar la versión publicada de «La ventisca» en el navegador: es el mismo proyecto utilizado para este cálculo.

La importación era más difícil

Hay más de una docena de editores y motores. Algunos autores llegan desde Twine, ink, Yarn Spinner o Ren’Py; otros trabajan en un cuaderno, Obsidian o Notion. También aparecen PDF, Markdown, hojas de cálculo, notas de voz, vídeos e imágenes.

Los formatos son miles y cambian cada año. Un importador nativo para cada uno acabaría siendo un cementerio de parsers que solo entienden una versión concreta de otro producto.

La respuesta ya estaba cerca: los agentes de IA.

Un agente puede recibir HTML, Markdown, PDF, audio, imágenes y enlaces, reconstruir el orden, reconocer personajes, señalar bifurcaciones ambiguas y hacer preguntas. La persona guía el proceso y revisa el resultado.

Romergo ya soportaba MCP. En vez de enseñar al producto todos los formatos del mundo, mantuve un destino estable: herramientas con las que un agente crea y comprueba un proyecto Romergo normal.

Flujo de importación mediante un agente

archivos y enlaces de origen
        ↓
agente MCP del usuario
        ↓
inventario, preview, preguntas y avisos
        ↓
herramientas de autoría MCP de Romergo
        ↓
lectura persistida y validación
        ↓
revisión final en Builder

El agente inspecciona capítulos, escenas, personajes, lugares, medios e idiomas. Para HTML, Markdown, TXT y PDF de texto existen romergo_inspect_story_source y romergo_import_story_source, que permiten un traslado literal y lineal sin inventar ramas.

En Twine, ink, Yarn Spinner y Ren’Py, passages, knots, nodes, diálogos, elecciones y variables básicas suelen convertirse en capítulos, escenas y conexiones. Macros, Python, comandos Unity, screens, CSS/JS y funciones externas se convierten en warnings que requieren una decisión humana.

Tras el preview, el agente crea un proyecto nuevo, importa adjuntos por lotes, escribe el grafo y el contenido. Los medios grandes suben directamente a R2. Después vuelve a leer con romergo_get_chapter, ejecuta romergo_validate_project y solo termina tras romergo_verify_quest_change.

La IA no sustituye la revisión

Un agente puede comprender el sentido, pero una inferencia no es un hecho. El audio puede requerir transcripción externa, un enlace no concede derechos y un macro puede ser un programa completo. Por eso el flujo muestra preview y warnings y pide confirmar los derechos sobre los materiales.

El cargador nativo acepta únicamente .romergo. Es deliberado: nuestro formato debe importarse de forma determinista y segura; el mundo abierto de fuentes ajenas necesita una herramienta capaz de razonar y preguntar.

Una apuesta para los próximos cinco años

Los formatos y los agentes cambiarán, pero la frontera puede mantenerse: trabajos humanos de cualquier tipo a un lado, y .romergo documentado más las herramientas MCP al otro.

Si aparece un nuevo editor, un agente podrá estudiar sus archivos, enseñar lo que entendió y escribir el resultado mediante el mismo contrato. Y si un autor abandona Romergo, conservará un archivo abierto y un juego autónomo.

Romergo debe ser un lugar cómodo para crear historias, no una jaula que impida llevárselas.

Volver al blog técnico