Uso de labels y sus funciones en Ren'Py
¡Hola, creadores de novelas visuales! Bienvenidos a la decimoquinta entrada de esta guía de Ren'Py en español. En el [post anterior] aprendimos a personalizar el estilo del texto y el cuadro de diálogo. Hoy vamos a hablar de un concepto fundamental para organizar tu historia: el **uso de `labels` y sus funciones**. Los `labels` te permiten dividir tu script en secciones y controlar el flujo de tu novela visual, algo esencial para crear escenas y rutas. ¡Empecemos!
1. ¿Qué son los `labels` y para qué sirven?
Un `label` en Ren'Py es como un marcador o una "etiqueta" que define una sección de tu script. Piensa en ellos como capítulos o escenas de tu historia. Los `labels` se usan junto con comandos como `jump` y `call` para moverte entre diferentes partes de tu juego.
**¿Por qué son importantes?**
- **Organización**: Dividen tu script en secciones claras (por ejemplo, "escena de la playa", "escena de la cueva").
- **Flujo narrativo**: Te permiten saltar de una escena a otra o reutilizar secciones de código.
- **Rutas y finales**: Como vimos en el post del 7 de abril, los `labels` son clave para crear rutas alternas.
2. Cómo crear y usar un `label`
1. **Definir un `label`**:
- Usa la palabra `label` seguida de un nombre y dos puntos (`:`). Por ejemplo:
```
label escena_playa:
scene bg playa
"¡Estamos en la playa!"
```
- El nombre del `label` (como `escena_playa`) debe ser único y no puede tener espacios.
2. **Saltar a un `label` con `jump`**:
- El comando `jump` te lleva a un `label` y no regresa al punto anterior. Es como ir a una nueva página de un libro.
- Ejemplo:
```
jump escena_playa
```
3. **Invocar un `label` con `call`**:
- El comando `call` te lleva a un `label` y luego regresa al punto donde estabas. Es como hacer una pausa para leer un capítulo y luego volver.
- Ejemplo:
```
call escena_playa
```
3. Diferencia entre `jump` y `call`.
- **`jump`**: Salta a un `label` y no regresa. Úsalo para moverte a una nueva escena o ruta sin volver atrás.
- **`call`**: Invoca un `label` y regresa al punto donde estabas después de terminar. Úsalo para secciones que quieres reutilizar (como un diálogo recurrente).
4. Ejemplo práctico: Estructurar una historia con `labels`.
Vamos a crear una historia corta con Perrito y Gatita, usando `labels` para organizar las escenas.
1. **Escena inicial y decisión**:
```
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
narrator "Perrito y Gatita están en la playa, planeando su día."
perrito "¡Hola, Gatita! ¿Qué quieres hacer hoy?"
menu:
"Explorar una cueva.":
jump escena_cueva
"Quedarnos en la playa.":
jump escena_playa
```
2. **Escena de la cueva**:
```
label escena_cueva:
scene bg cueva with dissolve
narrator "Perrito y Gatita entran a una cueva oscura."
perrito "¡Qué emocionante! Pero está muy oscuro aquí."
gatita "Sí, me da un poco de miedo..."
jump final
```
3. **Escena de la playa (reutilizable con `call`)**:
```
label escena_playa:
scene bg playa with dissolve
narrator "Perrito y Gatita deciden quedarse en la playa."
perrito "¡Me gusta sentir la arena en mis patas!"
gatita "Y a mí me gusta tomar el sol."
return
```
4. **Final de la historia**:
```
label final:
# Llamamos a escena_playa para que vuelvan a la playa
call escena_playa
narrator "Después de su aventura, Perrito y Gatita terminan el día juntos."
perrito "¡Fue un día increíble!"
gatita "Sí, me divertí mucho contigo."
return
```
5. Código completo.
Aquí está el código completo con los `labels`:
```
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
narrator "Perrito y Gatita están en la playa, planeando su día."
perrito "¡Hola, Gatita! ¿Qué quieres hacer hoy?"
menu:
"Explorar una cueva.":
jump escena_cueva
"Quedarnos en la playa.":
jump escena_playa
label escena_cueva:
scene bg cueva with dissolve
narrator "Perrito y Gatita entran a una cueva oscura."
perrito "¡Qué emocionante! Pero está muy oscuro aquí."
gatita "Sí, me da un poco de miedo..."
jump final
label escena_playa:
scene bg playa with dissolve
narrator "Perrito y Gatita deciden quedarse en la playa."
perrito "¡Me gusta sentir la arena en mis patas!"
gatita "Y a mí me gusta tomar el sol."
return
label final:
call escena_playa
narrator "Después de su aventura, Perrito y Gatita terminan el día juntos."
perrito "¡Fue un día increíble!"
gatita "Sí, me divertí mucho contigo."
return
```
6. Consejos para usar `labels`.
- **Nombres descriptivos**: Usa nombres claros para tus `labels`, como `escena_cueva` o `final_feliz`, para que sea fácil entender su propósito.
- **Usa comentarios**: Como aprendimos en el post del 11 de abril, agrega comentarios (`#`) para explicar qué hace cada `label`.
- **Evita bucles infinitos**: Asegúrate de que tus `jump` y `call` no creen un ciclo infinito (por ejemplo, saltar de un `label` a otro sin parar). Siempre lleva al jugador a un `return` o a un final.
7. Ejercicios para practicar.
Aquí tienes algunos ejercicios para que practiques el uso de `labels`:
1. **Añade una nueva escena**:
- Crea un nuevo `label` llamado `escena_atardecer` (con un fondo `atardecer.png` si lo tienes) y haz que el jugador pueda llegar a esta escena desde el menú inicial.
2. **Usa `call` para reutilizar**:
- Crea un `label` con un diálogo que se repita (por ejemplo, `label saludar:`) y llámalo con `call` en diferentes partes de tu historia.
3. **Combina con transiciones**:
- Añade transiciones (`with dissolve` o `with fade`) cada vez que saltes a un `label` con `jump`.
8. ¡Tu turno!
Copia este código en tu proyecto de Ren'Py y prueba los `labels`. ¿Lograste estructurar tu historia con diferentes escenas? ¿Entendiste la diferencia entre `jump` y `call`? Intenta los ejercicios y comparte tus resultados en los comentarios. En la próxima entrada, seguiremos explorando temas básicos para que termines tu primer proyecto completo. ¡Nos leemos el 15 de abril!
Comentarios
Publicar un comentario