80 lines
1.9 KiB
Markdown
80 lines
1.9 KiB
Markdown
|
|
## Catalogo global
|
|
|
|
### GET /games.json
|
|
|
|
Devuelve el catalogo completo de novelas publicadas.
|
|
|
|
```json
|
|
{
|
|
"games": [
|
|
{
|
|
"slug": "demo",
|
|
"title": "The Question",
|
|
"subtitle": "Demo oficial de Ren'Py",
|
|
"engine": "renpy",
|
|
"description": "...",
|
|
"cover": "/games/demo/web-presplash.jpg",
|
|
"version": "7.0",
|
|
"author": "Ren'Py Team",
|
|
"createdAt": "2026-06-14T10:35:09Z",
|
|
"entryPoint": "/games/demo/index.html",
|
|
"coopCoep": true
|
|
}
|
|
],
|
|
"updatedAt": "2026-06-14T22:07:10Z",
|
|
"version": "1.0"
|
|
}
|
|
```
|
|
|
|
## Metadatos por juego
|
|
|
|
### GET /games/<slug>/game.json
|
|
|
|
Generado por `build-novela.sh`. Contiene metadatos y configuracion del motor.
|
|
|
|
| Campo | Tipo | Descripcion |
|
|
|-------|------|-------------|
|
|
| `slug` | string | Identificador URL-friendly |
|
|
| `title` | string | Titulo mostrado |
|
|
| `subtitle` | string | Subtitulo opcional |
|
|
| `engine` | string | Motor: renpy, unity, web, onscripter, umineko-ru |
|
|
| `description` | string | Descripcion corta |
|
|
| `cover` | string | URL de la portada |
|
|
| `version` | string | Version del juego |
|
|
| `author` | string | Autor |
|
|
| `createdAt` | string ISO | Fecha de publicacion |
|
|
| `entryPoint` | string | URL para jugar |
|
|
| `coopCoep` | boolean | Si requiere headers COOP/COEP |
|
|
|
|
## meta.json de entrada
|
|
|
|
Archivo opcional en `/opt/novelas/projects/<slug>/meta.json`:
|
|
|
|
```json
|
|
{
|
|
"title": "Mi Novela",
|
|
"subtitle": "Subtitulo",
|
|
"description": "Descripcion.",
|
|
"author": "Autor",
|
|
"version": "1.0",
|
|
"cover": "/games/mi-novela/cover.jpg"
|
|
}
|
|
```
|
|
|
|
## Headers HTTP
|
|
|
|
### COOP/COEP (solo Ren'Py)
|
|
|
|
```
|
|
Cross-Origin-Opener-Policy: same-origin
|
|
Cross-Origin-Embedder-Policy: require-corp
|
|
```
|
|
|
|
Se aplican mediante snippets en `/etc/nginx/snippets/novelas-games/<slug>.conf`.
|
|
|
|
## Cache
|
|
|
|
- `games.json` y `game.json`: `no-store, no-cache, must-revalidate`.
|
|
- Assets estaticos: `public, immutable`, 30 dias.
|