Proyecto intermedio con múltiples archivos .rpy

¡Hola, creadores de novelas visuales! Bienvenidos a la decimonovena entrada de esta guía de Ren'Py en español. En el [post anterior] aprendimos a personalizar el menú de guardado para mejorar la interfaz de nuestro juego. Hoy vamos a unir todo lo que hemos aprendido en un **proyecto intermedio** que usa **múltiples archivos `.rpy`**. Crearemos una novela visual corta con Perrito y Gatita, organizada en diferentes archivos para personajes, rutas y finales, y usaremos un marcador de variables para decidir el final. ¡Este será un repaso general de todo lo que sabes, y te invito a participar en un ejercicio en masa para crear tu propio proyecto! Empecemos.

1. ¿Qué vamos a crear?
Vamos a hacer una novela visual corta donde Perrito y Gatita pasan un día en la playa. El jugador tomará decisiones que afectarán su amistad, y al final veremos un final bueno, neutral o malo según un marcador de variables (`puntos_amistad`). El proyecto estará dividido en cuatro archivos `.rpy`:
- `script.rpy`: Archivo principal que gestiona los fondos y llama a las escenas.
- `definiciones.rpy`: Define los personajes, música y variables iniciales.
- `rutas.rpy`: Contiene las escenas y diálogos.
- `finales.rpy`: Define los finales basados en `puntos_amistad`.

2. Preparativos
Antes de empezar, asegúrate de tener:
- **Fondos**: Usa `playa.png` y `cueva.png` (o cualquier fondo que tengas en la carpeta `game`).
- **Música y sonidos**: Usa `playa_musica.ogg` y `sorpresa.wav` (o tus propios archivos en `game/audio`).
- **Menú personalizado**: Asegúrate de tener el menú principal personalizado (como en el post del 12 de abril) y el menú de guardado (post del 17 de abril).

3. Estructura del proyecto
Crearemos cuatro archivos `.rpy` en la carpeta `game`. Aquí está lo que hará cada uno:
- **script.rpy**: Configura los fondos y llama al inicio del juego.
- **definiciones.rpy**: Declara personajes, música y la variable `puntos_amistad`.
- **rutas.rpy**: Contiene las escenas principales (inicio y decisiones).
- **finales.rpy**: Define los finales según `puntos_amistad`.

4. Código de cada archivo
A continuación, te muestro el código para cada archivo.

1. **script.rpy** (Archivo principal):
   ```
   label start:
       # Configurar el fondo inicial
       scene bg playa with fade
       # Llamar a las definiciones
       call definiciones
       # Llamar a las escenas
       call rutas
       # Llamar a los finales
       call finales
       return
   ```
   - Este archivo es simple: establece el fondo inicial y llama a los otros archivos en orden.

2. **definiciones.rpy** (Personajes y variables):
   ```
   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"

       # Definir variable de amistad
       default puntos_amistad = 0

       return
   ```
   - Aquí definimos los personajes, los archivos de audio y la variable `puntos_amistad`.

3. **rutas.rpy** (Escenas y diálogos):
   ```
   label rutas:
       play music audio.playa_musica loop
       show perrito at left
       show gatita at right
       narrator "Perrito y Gatita están en la playa, listos para pasar el día juntos."

       perrito "¡Hola, Gatita! ¿Qué quieres hacer primero?"
       menu:
           "Explorar una cueva.":
               $ puntos_amistad += 10
               scene bg cueva with dissolve
               narrator "Perrito y Gatita entran a una cueva oscura."
               perrito "¡Qué aventura!"
               gatita "Es un poco scary, pero contigo me siento bien."
               play sound audio.sorpresa
           "Jugar en la arena.":
               $ puntos_amistad += 5
               scene bg playa with dissolve
               narrator "Perrito y Gatita construyen un castillo de arena."
               perrito "¡Mira qué alto quedó!"
               gatita "¡Es el mejor castillo que hemos hecho!"

       perrito "¿Y ahora qué hacemos?"
       menu:
           "Compartir un helado.":
               $ puntos_amistad += 10
               narrator "Perrito y Gatita comparten un helado de vainilla."
               gatita "¡Qué rico! Gracias por compartir, Perrito."
           "Caminar solos por la playa.":
               $ puntos_amistad -= 5
               narrator "Perrito y Gatita caminan separados, cada uno en sus pensamientos."
               gatita "Está bien, pero me habría gustado estar más juntos..."

       return
   ```
   - Este archivo contiene las escenas principales y las decisiones que afectan `puntos_amistad`.

4. **finales.rpy** (Finales basados en variables):
   ```
   label finales:
       scene bg playa with fade
       show perrito at left
       show gatita at right
       narrator "El día en la playa termina. Veamos cómo les fue a Perrito y Gatita."

       if puntos_amistad >= 20:
           # Final bueno
           narrator "Perrito y Gatita se sienten más unidos que nunca."
           perrito "¡Este fue el mejor día de mi vida!"
           gatita "¡Sí, somos los mejores amigos!"
       elif puntos_amistad >= 5:
           # Final neutral
           narrator "Perrito y Gatita pasaron un día agradable, pero no tan especial."
           perrito "Fue un día divertido, ¿no?"
           gatita "Sí, estuvo bien."
       else:
           # Final malo
           narrator "Perrito y Gatita no se divirtieron mucho hoy."
           perrito "Bueno... tal vez otro día sea mejor."
           gatita "Sí, creo que sí..."

       return
   ```
   - Aquí definimos tres finales según el valor de `puntos_amistad`.

5. Probar el proyecto
1. Crea los cuatro archivos `.rpy` en la carpeta `game` y copia el código de cada uno.
2. Asegúrate de que los fondos (`playa.png`, `cueva.png`) y los archivos de audio (`playa_musica.ogg`, `sorpresa.wav`) estén en las carpetas correctas (`game` y `game/audio`).
3. Ejecuta tu proyecto en Ren'Py y juega las rutas. Verifica que:
   - Los fondos cambien correctamente.
   - La música y los sonidos se reproduzcan.
   - Las decisiones afecten `puntos_amistad`.
   - Los finales sean diferentes según tus elecciones.

6. Ejercicio en masa: ¡Crea tu propio proyecto!
Ahora te toca a ti. Usa esta estructura como base y crea tu propia novela visual corta. Aquí algunas ideas:
- **Cambia los personajes**: En lugar de Perrito y Gatita, usa tus propios personajes.
- **Nuevas rutas**: Crea decisiones diferentes (por ejemplo, "ir al bosque" o "ver un atardecer").
- **Personaliza los finales**: Añade más condiciones (por ejemplo, un final secreto si `puntos_amistad == 15`).
- **Usa tus assets**: Incorpora fondos, música y sonidos que hayas encontrado (como aprendimos en el post del 8 de abril).

Comparte tu proyecto en los comentarios o en redes sociales con el hashtag #RenPyEnEsp. ¡Quiero ver qué creas!

7. Consejos para trabajar con múltiples archivos
- **Organización**: Usa nombres claros para los archivos y `labels` (por ejemplo, `definiciones.rpy`, `escena_cueva`).
- **Prueba paso a paso**: Ejecuta el proyecto después de añadir cada archivo para detectar errores temprano.
- **Comentarios**: Usa comentarios (`#`) en cada archivo para recordar qué hace cada sección (post del 11 de abril).
- **Reutiliza código**: Si necesitas más rutas, copia y modifica las escenas de `rutas.rpy` en lugar de empezar desde cero.

8. ¡Tu turno!
Crea este proyecto en Ren'Py y prueba todas las rutas. ¿Lograste conectar los archivos `.rpy` correctamente? ¿Cómo te fue con los finales basados en `puntos_amistad`? Participa en el ejercicio en masa y crea tu propia versión de esta novela visual. En la próxima entrada, cerraremos abril con un tema intermedio que llevará tus proyectos al siguiente nivel. ¡Nos leemos el 19 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