Crear rutas alternas con el comando `if` en Ren'Py
¡Hola, creadores de novelas visuales! Bienvenidos a la octava entrada de esta guía de Ren'Py en español. En el [post anterior] aprendimos a usar Lint para detectar errores antes de correr nuestro proyecto. Hoy vamos a explorar cómo crear **rutas alternas** en nuestra historia usando solo el comando `if`. Este método es más simple que usar variables (como lo hicimos hace unos días), pero requiere que planifiquemos cuidadosamente las decisiones del jugador para llevarlo a diferentes finales o rutas. ¡Empecemos!
1. Configurar la escena base
Como siempre, usaremos el fondo de la playa y los personajes Perrito y Gatita. Si no tienes los archivos, revisa los posts anteriores para descargarlos.
1. Abre tu archivo `script.rpy` y asegúrate de tener los personajes declarados:
```
define perrito = Character("Perrito", color="#00B7EB")
define gatita = Character("Gatita", color="#FF69B4")
```
2. Configura la escena inicial:
```
label start:
scene bg playa
show perrito at left
show gatita at right
```
2. Crear la primera decisión
Vamos a crear una historia corta donde Perrito y Gatita tienen un día en la playa. El jugador tomará dos decisiones clave que determinarán el final de la historia. Usaremos solo `if` para manejar las rutas, sin variables.
1. Añade el primer diálogo y un menú con dos opciones:
```
perrito "¡Hola, Gatita! ¿Quieres explorar la playa o quedarte aquí a descansar?"
menu:
"Exploremos la playa juntos.":
jump explorar
"Prefiero descansar aquí.":
jump descansar
```
- `jump` nos lleva a un `label` diferente dependiendo de la elección del jugador.
- Vamos a crear dos rutas: una donde exploran (`explorar`) y otra donde descansan (`descansar`).
3. Definir las rutas con `label` e `if`
Ahora, definamos las dos rutas. En cada ruta, el jugador tomará una segunda decisión que llevará a un final específico.
1. **Ruta 1: Explorar la playa**
```
label explorar:
perrito "¡Qué divertido! Mira, encontré una cueva. ¿Entramos o seguimos caminando?"
menu:
"Entremos a la cueva.":
perrito "¡Genial, vamos!"
gatita "¡Qué emocionante! Mira, hay un tesoro escondido aquí."
"Final 1: Perrito y Gatita encontraron un tesoro y se hicieron grandes amigos."
jump fin
"Sigamos caminando por la playa.":
perrito "Buena idea, sigamos."
gatita "Me gusta caminar contigo, Perrito. La playa es hermosa."
"Final 2: Perrito y Gatita disfrutaron un paseo tranquilo y fortalecieron su amistad."
jump fin
```
2. **Ruta 2: Descansar en la playa**
```
label descansar:
perrito "Está bien, descansemos aquí. ¿Quieres tomar un helado o solo relajarte?"
menu:
"Tomemos un helado juntos.":
perrito "¡Buena idea! Voy por los helados."
gatita "Gracias, Perrito. Este helado está delicioso."
"Final 3: Perrito y Gatita compartieron un helado y pasaron un día relajante."
jump fin
"Solo quiero relajarme.":
perrito "Entiendo, relajémonos entonces."
gatita "Hmph, eres un poco aburrido, Perrito..."
"Final 4: Perrito y Gatita descansaron, pero no se divirtieron mucho."
jump fin
```
3. **Finalizar la escena**
```
label fin:
return
```
- El `label fin` es un punto común para cerrar la escena y regresar al menú principal.
#### 4. Código completo
Aquí está el código completo con las rutas alternas:
```
define perrito = Character("Perrito", color="#00B7EB")
define gatita = Character("Gatita", color="#FF69B4")
label start:
scene bg playa
show perrito at left
show gatita at right
perrito "¡Hola, Gatita! ¿Quieres explorar la playa o quedarte aquí a descansar?"
menu:
"Exploremos la playa juntos.":
jump explorar
"Prefiero descansar aquí.":
jump descansar
label explorar:
perrito "¡Qué divertido! Mira, encontré una cueva. ¿Entramos o seguimos caminando?"
menu:
"Entremos a la cueva.":
perrito "¡Genial, vamos!"
gatita "¡Qué emocionante! Mira, hay un tesoro escondido aquí."
"Final 1: Perrito y Gatita encontraron un tesoro y se hicieron grandes amigos."
jump fin
"Sigamos caminando por la playa.":
perrito "Buena idea, sigamos."
gatita "Me gusta caminar contigo, Perrito. La playa es hermosa."
"Final 2: Perrito y Gatita disfrutaron un paseo tranquilo y fortalecieron su amistad."
jump fin
label descansar:
perrito "Está bien, descansemos aquí. ¿Quieres tomar un helado o solo relajarte?"
menu:
"Tomemos un helado juntos.":
perrito "¡Buena idea! Voy por los helados."
gatita "Gracias, Perrito. Este helado está delicioso."
"Final 3: Perrito y Gatita compartieron un helado y pasaron un día relajante."
jump fin
"Solo quiero relajarme.":
perrito "Entiendo, relajémonos entonces."
gatita "Hmph, eres un poco aburrido, Perrito..."
"Final 4: Perrito y Gatita descansaron, pero no se divirtieron mucho."
jump fin
label fin:
return
```
#### 5. Ventajas y desventajas de usar solo `if`
Este método es simple, pero tiene sus pros y contras:
**Ventajas**:
- No necesitas variables, lo que hace que el código sea más fácil de entender para principiantes.
- Tienes control directo sobre cada ruta y final.
**Desventajas**:
- El código puede volverse muy largo si tienes muchas decisiones. Por ejemplo, con solo dos decisiones, ya tenemos cuatro finales. Si añades una tercera decisión, podrías tener ocho finales, y el código crecería mucho.
- Necesitas planificar bien tus rutas con un "mapa mental" o un diagrama para no perderte.
**Consejo**: Si tu historia tiene muchas decisiones, considera usar variables (como aprendimos en el post del 5 de abril). Son más eficientes para proyectos grandes.
#### 6. Ejercicios para practicar
Aquí tienes algunos ejercicios para que experimentes con rutas alternas:
1. **Añade una tercera decisión**:
- En la ruta `explorar`, después de encontrar el tesoro, agrega una nueva decisión (p. ej., "¿Compartimos el tesoro o lo guardamos para nosotros?") que lleve a dos finales diferentes.
2. **Cambia los finales**:
- Modifica los diálogos de los finales para que sean más emocionantes o tristes, según el contexto.
3. **Crea una nueva ruta**:
- Añade una tercera opción en el primer menú (p. ej., "Vamos a nadar en el mar") y escribe una nueva ruta con dos finales posibles.
7. ¡Tu turno!
Copia este código en tu proyecto de Ren'Py y prueba las diferentes rutas. ¿Qué final obtuviste? ¿Lograste seguir el "mapa" de decisiones? Intenta los ejercicios y comparte tus resultados en los comentarios. En la próxima entrada, aprenderemos a posicionar personajes en diferentes lugares de la pantalla. ¡Nos leemos el 8 de abril!
Comentarios
Publicar un comentario