Initial commit: NovelasVM platform with multi-engine support and Umineko Web integration
This commit is contained in:
237
README.md
Normal file
237
README.md
Normal file
@@ -0,0 +1,237 @@
|
||||
# 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 <slug> /opt/novelas/projects/<slug> [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.
|
||||
Reference in New Issue
Block a user