Proyecto final básico con múltiples archivos ".rpy"

¡Hola, creadores de novelas visuales! Bienvenidos a la decimosexta entrada de esta guía de Ren'Py en español. En el [post anterior] aprendimos a usar `labels` para estructurar nuestras historias. Hoy vamos a hacer un **proyecto final básico** que combine todo lo que hemos aprendido hasta ahora: personajes, diálogos, transiciones, música, menús personalizados y más. Además, daremos un paso hacia temas intermedios al organizar nuestro proyecto en **múltiples archivos `.rpy`**, una técnica que usan los desarrolladores para proyectos más grandes. ¡Este será un gran cierre para los conceptos básicos antes de pasar a temas más avanzados! Empecemos.

1. ¿Qué vamos a crear?
Vamos a crear una novela visual corta con Perrito y Gatita, donde el jugador tomará una decisión que llevará a dos finales diferentes. El proyecto incluirá:
- Personajes y diálogos.
- Fondos y transiciones.
- Música y efectos de sonido.
- Un menú principal personalizado.
- Rutas simples con `labels`.
- Organización en dos archivos `.rpy`.

2. Organizar el proyecto en múltiples archivos `.rpy`
Hasta ahora, hemos trabajado todo en un solo archivo (`script.rpy`). Pero en proyectos más grandes, es mejor dividir el código en varios archivos para mantenerlo organizado. Hoy usaremos dos archivos:
- `definiciones.rpy`: Para definir personajes, música y otros elementos.
- `escenas.rpy`: Para las escenas y el flujo de la historia.

1. **Crear los archivos**:
   - En la carpeta `game` de tu proyecto, crea dos nuevos archivos: `definiciones.rpy` y `escenas.rpy`.
   - Asegúrate de que `script.rpy` (el archivo principal) llame a estos archivos para que Ren'Py los ejecute.

2. **Configurar `script.rpy`**:
   - Abre `script.rpy` y asegúrate de que incluya los otros archivos. Escribe esto al inicio:
     ```
     call definiciones
     call escenas
     ```
   - Esto asegura que Ren'Py cargue primero las definiciones y luego las escenas.

3. Definir personajes y música en `definiciones.rpy`
En este archivo, colocaremos todas las definiciones iniciales.

1. Abre `definiciones.rpy` y escribe:
   ```
   label definiciones:
       # Definir personajes
       define perrito = Character("Perrito", color="#00B7EB")
       define gatita = Character("Gatita", color="#FF69B4")

       # Definir música y sonidos
       define audio.playa_musica = "audio/playa_musica.ogg"
       define audio.sorpresa = "audio/sorpresa.wav"

       return
   ```
   - Aquí definimos a Perrito y Gatita, y declaramos los archivos de audio (como hicimos en el post del 9 de abril).

4. Crear las escenas en `escenas.rpy`. 
En este archivo, escribiremos la historia con `labels`, transiciones y diálogos.

1. Abre `escenas.rpy` y escribe:
   ```
   label escenas:
       jump inicio

   label inicio:
       scene bg playa with fade
       show perrito at left
       show gatita at right
       play music audio.playa_musica loop
       narrator "Perrito y Gatita están en la playa, disfrutando de un día soleado."
       perrito "¡Hola, Gatita! ¿Qué quieres hacer hoy?"
       menu:
           "Jugar a lanzar un frisbee.":
               jump jugar_frisbee
           "Buscar conchas en la playa.":
               jump buscar_conchas

   label jugar_frisbee:
       scene bg playa with dissolve
       narrator "Perrito y Gatita deciden jugar con un frisbee."
       perrito "¡Atrapa, Gatita!"
       gatita "¡Lo tengo!"
       play sound audio.sorpresa
       narrator "Gatita salta para atrapar el frisbee, pero cae en la arena."
       gatita "¡Jaja, eso fue divertido!"
       jump final_bueno

   label buscar_conchas:
       scene bg playa with dissolve
       narrator "Perrito y Gatita caminan por la playa buscando conchas."
       perrito "Mira esta concha, es muy bonita."
       gatita "¡Sí, pero me aburrí un poco..."
       narrator "Gatita se distrae y no encuentra muchas conchas."
       jump final_neutral

   label final_bueno:
       scene bg playa with fade
       narrator "Perrito y Gatita terminan el día riendo y jugando juntos."
       perrito "¡Fue un día increíble!"
       gatita "¡Sí, me divertí mucho!"
       return

   label final_neutral:
       scene bg playa with fade
       narrator "Perrito y Gatita terminan el día, pero Gatita no se divirtió tanto."
       perrito "Bueno, al menos encontramos algunas conchas."
       gatita "Sí, pero prefiero jugar la próxima vez..."
       return
   ```
   - Este código usa `labels` (como aprendimos en el post del 14 de abril) para estructurar las escenas y rutas.
   - Incluye transiciones (`with fade`, `with dissolve`), música y sonidos (del post del 9 de abril).

5. Personalizar el menú principal (repaso). 
Ya personalizamos el menú principal en el post del 12 de abril. Asegúrate de que tu archivo `screens.rpy` tenga el fondo personalizado y los botones ajustados:
```
screen main_menu():
    tag menu
    add "gui/menu_fondo.png"
    vbox:
        xalign 0.8
        yalign 0.5
        textbutton "Iniciar" action Start()
        textbutton "Cargar" action ShowMenu("load")
        textbutton "Opciones" action ShowMenu("preferences")
        textbutton "Salir" action Quit(confirm=not main_menu)
```

6. Probar el proyecto. 
1. Asegúrate de que todos los archivos estén en su lugar:
   - `script.rpy` (con las líneas `call definiciones` y `call escenas`).
   - `definiciones.rpy` (con los personajes y música).
   - `escenas.rpy` (con la historia).
   - Archivos de audio en la carpeta `game/audio`.
   - Fondos en la carpeta `game`.
2. Ejecuta tu proyecto en Ren'Py y prueba las dos rutas (jugar al frisbee o buscar conchas).

7. Consejos para trabajar con múltiples archivos `.rpy`. 
- **Nombres claros**: Usa nombres descriptivos para tus archivos (como `definiciones.rpy`, `escenas.rpy`, `capitulo1.rpy`).
- **Organización**: Mantén cada archivo enfocado en una tarea (por ejemplo, un archivo para personajes, otro para escenas).
- **Prueba frecuentemente**: Asegúrate de que Ren'Py pueda encontrar todos los archivos. Si algo no funciona, revisa que los `call` y `jump` estén bien escritos.

8. Ejercicios para practicar. 
Aquí tienes algunos ejercicios para que expandas este proyecto:

1. **Añade un nuevo final**:
   - Crea un nuevo `label` (por ejemplo, `final_malo`) y una nueva opción en el menú inicial que lleve a ese final (por ejemplo, "Nadar en el mar").

2. **Crea un nuevo archivo `.rpy`**:
   - Mueve los `label final_bueno` y `final_neutral` a un nuevo archivo llamado `finales.rpy`, y usa `jump` para conectar las escenas.

3. **Personaliza más**:
   - Cambia el color del texto o el cuadro de diálogo (como aprendimos en el post del 13 de abril) para que el proyecto tenga tu estilo.

9. ¡Tu turno!
Copia este código en tu proyecto de Ren'Py y crea los archivos `.rpy` como te mostré. Prueba las dos rutas y asegúrate de que todo funcione correctamente. ¿Lograste crear tu primera novela visual completa? ¿Cómo te sentiste trabajando con múltiples archivos? Intenta los ejercicios y comparte tus resultados en los comentarios. En la próxima entrada, comenzaremos a explorar temas más intermedios para que lleves tus proyectos al siguiente nivel. ¡Nos leemos el 16 de abril!

Comentarios

Entradas más populares de este blog

Introducción a Ren'Py - Tu primer paso para crear novelas visuales

Importar un segundo personaje y hacer que interactúen en Ren'Py

Crear rutas alternas con el comando `if` en Ren'Py