# NovelasVM > Plataforma web aliada de Afterlife para alojar, compilar y ejecutar novelas visuales directamente desde el navegador. NovelasVM es una solución autoalojada multi-motor pensada para equipos que necesitan probar, distribuir o archivar novelas visuales sin depender de servicios de terceros. Soporta Ren'Py, Unity WebGL, proyectos HTML5 genéricos y ONScripter-RU (Umineko Web). --- ## Tabla de contenidos 1. [Características principales](#características-principales) 2. [Requisitos](#requisitos) 3. [Instalación rápida](#instalación-rápida) 4. [Arquitectura general](#arquitectura-general) 5. [Motores soportados](#motores-soportados) 6. [Uso básico](#uso-básico) 7. [El portal web](#el-portal-web) 8. [Umineko Web](#umineko-web) 9. [Documentación adicional](#documentación-adicional) 10. [Seguridad](#seguridad) 11. [Licencia y créditos](#licencia-y-créditos) --- ## Características principales - **Multi-motor**: Ren'Py, Unity WebGL, HTML5 genérico, ONScripter-RU/Umineko. - **Portal moderno**: catálogo con tarjetas, portadas, metadatos y selector de tres temas (oscuro, claro, inmersivo). - **Compilación automatizada**: script `build-novela.sh` que detecta el motor, compila si es necesario y publica. - **Configuración nginx optimizada**: cache de assets, headers COOP/COEP condicionales para Ren'Py Web. - **Soporte de Umineko Web**: contenedor Docker con ONScripter-RU compilado a WebAssembly. - **Diseño extensible**: tokens CSS, sistema de diseño documentado en `DESIGN.md`. --- ## Requisitos ### Hardware recomendado | Componente | Mínimo | Recomendado | |------------|--------|-------------| | CPU | 4 vCPUs | 8 vCPUs | | RAM | 8 GB | 16 GB | | Disco | 50 GB | 150 GB (Umineko requiere ~15 GB) | | Red | Acceso LAN | IP fija o dominio | ### Software - Ubuntu 22.04/24.04 LTS - nginx - Docker + docker-compose - Python 3 - Node.js + npm - xvfb - p7zip-full - git - Ren'Py SDK 8.3.4+ con web package --- ## Instalación rápida ```bash # 1. Clonar este repositorio git clone https://git.consultoria-as.com/consultoria-as/novelasvm.git cd novelasvm # 2. Ejecutar el script de instalación sudo bash scripts/setup.sh # 3. Copiar el portal a /var/www/novelas sudo cp -r var-www/* /var/www/novelas/ sudo chown -R www-data:www-data /var/www/novelas # 4. Recargar nginx sudo nginx -t && sudo nginx -s reload ``` Para la instalación detallada paso a paso, consulta [`docs/INSTALL.md`](docs/INSTALL.md). --- ## Arquitectura general ``` ┌─────────────────────────────────────────────────────────────────┐ │ Navegador │ │ │ │ http://192.168.10.111/ http://192.168.10.111:8081/ │ │ │ │ │ │ ▼ ▼ │ │ ┌──────────────┐ ┌──────────────────┐ │ │ │ Portal web │ │ Umineko Web │ │ │ │ (nginx 80) │ ─── redirect ───▶ │ (Docker/nginx 80)│ │ │ └──────────────┘ └──────────────────┘ │ │ │ │ │ ▼ │ │ ┌──────────────┐ │ │ │ Juegos web │ │ │ │ /var/www/... │ │ │ └──────────────┘ │ └─────────────────────────────────────────────────────────────────┘ /opt/novelas/ Código, proyectos y herramientas /var/www/novelas/ Raíz servida por nginx ``` Para más detalles técnicos, consulta [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md). --- ## Motores soportados | Motor | Script/carpetas esperadas | Compilación | Notas | |-------|---------------------------|-------------|-------| | **Ren'Py** | `project.json` o `game/script.rpy` | Sí (`renpy.sh web_build`) | Requiere COOP/COEP | | **Unity WebGL** | `Build/`, `TemplateData/`, `index.html` | No | Copia directa | | **Web genérico** | `index.html` | No | Copia directa | | **ONScripter** | `0.txt`, `nscript.dat`, `ons.cfg` | No | Usa OnscripterYuri web | | **ONScripter-RU / Umineko** | `*.file`, `default.cfg`, `chiru.file` | Contenedor Docker | Motor específico | Más información en [`docs/ENGINES.md`](docs/ENGINES.md). --- ## Uso básico ### Agregar una novela ```bash sudo /opt/novelas/bin/build-novela.sh /opt/novelas/projects/ [motor] ``` Ejemplos: ```bash # Ren'Py sudo /opt/novelas/bin/build-novela.sh demo /opt/novelas/projects/demo # Unity WebGL sudo /opt/novelas/bin/build-novela.sh mi-juego /opt/novelas/projects/mi-juego unity # Web genérico sudo /opt/novelas/bin/build-novela.sh web-novel /opt/novelas/projects/web-novel web ``` ### Metadatos opcionales Crea un archivo `meta.json` en la raíz del proyecto: ```json { "title": "Mi Novela", "subtitle": "Subtítulo opcional", "description": "Breve descripción.", "author": "Autor", "version": "1.0", "cover": "/games/mi-novela/cover.jpg" } ``` --- ## El portal web El portal principal está en `/var/www/novelas/` y ofrece: - Catálogo dinámico cargado desde `/games.json`. - Selector de temas: oscuro, claro, inmersivo. - Tarjetas con portada, título, subtítulo, badge del motor, descripción. - Diseño responsive y accesible (sin emojis, iconos SVG). Para personalizar el diseño, revisa [`docs/DESIGN.md`](docs/DESIGN.md) y [`docs/PORTAL.md`](docs/PORTAL.md). --- ## Umineko Web Umineko utiliza un motor especial que corre dentro de un contenedor Docker. ```bash # Iniciar sudo /opt/novelas/bin/umineko-web.sh start # Detener sudo /opt/novelas/bin/umineko-web.sh stop # Reiniciar sudo /opt/novelas/bin/umineko-web.sh restart # Ver logs sudo /opt/novelas/bin/umineko-web.sh logs ``` URL: `http://192.168.10.111/games/umineko/` Más detalles en [`docs/UMINEKO.md`](docs/UMINEKO.md). --- ## Documentación adicional - [`docs/INSTALL.md`](docs/INSTALL.md) — Instalación detallada. - [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) — Arquitectura y flujo de datos. - [`docs/ENGINES.md`](docs/ENGINES.md) — Guía por motor. - [`docs/PORTAL.md`](docs/PORTAL.md) — Personalización del portal. - [`docs/THEMES.md`](docs/THEMES.md) — Sistema de temas. - [`docs/API.md`](docs/API.md) — Especificación de `games.json` y metadatos. - [`docs/TROUBLESHOOTING.md`](docs/TROUBLESHOOTING.md) — Solución de problemas. - [`docs/SECURITY.md`](docs/SECURITY.md) — Consideraciones de seguridad. - [`docs/UMINEKO.md`](docs/UMINEKO.md) — Integración de Umineko Web. - [`docs/DESIGN.md`](docs/DESIGN.md) — Sistema de diseño. --- ## Seguridad - Cambia las contraseñas de root y del usuario `novelas` tras la instalación. - Considera habilitar HTTPS con certbot o Caddy. - No publiques el repositorio si incluye assets con copyright. - Los headers COOP/COEP solo se aplican a juegos Ren'Py; no se aplican globalmente. Lee más en [`docs/SECURITY.md`](docs/SECURITY.md). --- ## Licencia y créditos El código de la plataforma (scripts, portal, documentación) se provee tal cual para uso interno de Afterlife / Consultoría AS. Componentes de terceros: - Ren'Py SDK: MIT - OnscripterYuri: licencia del proyecto original - Umineko Web (`umineko_web_asm`): por VictoriqueMoe y colaboradores - Fuentes Google (Inter, JetBrains Mono): SIL Open Font License Los juegos publicados por los usuarios conservan sus propias licencias.