65 lines
4.1 KiB
Markdown
65 lines
4.1 KiB
Markdown
# 2D Shell — el marco donde se dibuja cualquier juego 2D
|
|
|
|
2D Shell es la pantalla vacía que los juegos 2D rellenan: la imagen del lugar actual, el reloj y la barra de herramientas arriba, espacio para paneles y la esquina de notificaciones. Por sí sola no muestra nada. Los mods de contenido meten en ella sus propias capas: el Dialog Engine añade el cuadro de texto y las opciones de una novela visual, y el mod RPG añade el mapa de tiles transitable, de modo que una novela y un RPG de tiles comparten el mismo marco, la misma barra de herramientas y los mismos menús.
|
|
|
|
Lo incluye todo juego 2D: Cthangover, My Novel y RPG Plus.
|
|
|
|

|
|
|
|
## Lo que ves en pantalla
|
|
|
|

|
|
|
|
En esta escena, la carcasa aporta:
|
|
|
|
- **la imagen del lugar** — la cocina, con su sombreado según la hora y sus luces (Time Engine);
|
|
- **la barra superior** — el reloj arriba a la izquierda, la barra de herramientas arriba a la derecha y, en medio, el indicador de guardado y, de noche, la lámpara portátil;
|
|
- **la esquina de notificaciones** bajo el reloj;
|
|
- **espacio para paneles** — la bolsa, el mapa o el diario se abren sobre la escena.
|
|
|
|
El cuadro de texto y las opciones vienen del Dialog Engine, y el contador de raciones de Cooking: son capas que esos mods añaden a la carcasa.
|
|
|
|
## Las capas, de atrás hacia delante
|
|
|
|
```text
|
|
BaseScene
|
|
└── Scene
|
|
├── ModFirstPanel capas de mods por detrás de todo
|
|
├── ViewBox el lugar: luces, fondo, primer plano, Lastground
|
|
├── (content layer) capa de un mod de contenido, p. ej. el lienzo de diálogos o el mundo RPG
|
|
├── TopView reloj, barra de herramientas, indicador de guardado, lámpara
|
|
├── ModBeforeUIPanel paneles de la barra: bolsa, mapa, diario, menú…
|
|
├── NotificationPanel mensajes en la esquina superior izquierda
|
|
└── ModLastPanel capas superpuestas sobre todo, p. ej. la ventana de la mesa de trabajo
|
|
```
|
|
|
|
Las capas posteriores se dibujan sobre las anteriores.
|
|
|
|
## Para autores de mods
|
|
|
|
**Añadir una capa de contenido con un parche de escena.** Un parche es un `.tscn` en la carpeta `patches/` de tu mod, en la misma ruta que la escena de la carcasa. Instancia la escena de la carcasa y añade o cambia nodos. El parche del Dialog Engine añade el lienzo de diálogos justo después del visor:
|
|
|
|
```text
|
|
patches/scenes/ui/base_scene.tscn
|
|
```
|
|
|
|
```text
|
|
[ext_resource type="PackedScene" path="res://mods/shell2d_base/scenes/ui/base_scene.tscn" id="1_target"]
|
|
[ext_resource type="PackedScene" path="res://scenes/ui/dialog_canvas.tscn" id="3_dialog"]
|
|
|
|
[node name="BaseScene" instance=ExtResource("1_target")]
|
|
|
|
[node name="DialogCanvas" parent="Scene" index="2" instance=ExtResource("3_dialog")]
|
|
```
|
|
|
|
El mod RPG añade su `RpgWorldHost` del mismo modo, así que un juego con ambos muestra el mapa de tiles y, encima, las líneas de diálogo.
|
|
|
|
**Añadir un panel sin parche.** Un panel de la barra o una capa superpuesta se declara en la sección `ui` del manifiesto con uno de los slots de la carcasa: `ModBeforeUIPanel`, `ModLastPanel` o el `Lastground` del visor. Los campos están en la guía del mod UI.
|
|
|
|
**Declara la dependencia.** Un mod que necesite el marco 2D lista `shell2d_base` en `depends`; la carcasa de por sí trae Time Engine y UI.
|
|
|
|
## Si algo falla
|
|
|
|
1. **Una pantalla negra con solo la barra de herramientas.** Ningún mod de contenido está rellenando la carcasa (falta el Dialog Engine o el mod RPG en el juego), o la escena no tiene fondo.
|
|
2. **Un panel aparece detrás de la escena.** Su manifiesto nombra un slot que se dibuja demasiado pronto; usa `ModBeforeUIPanel` o `ModLastPanel`.
|