en Ren'Py

Tutorial de Ren’Py – Screens

*toma aire*

Tenemos una Visual Novel que muestra quien dice qué, que recuerda información del jugador, que muestra imágenes y que reproduce sonidos.

Todo está perfectamente bien, podrían sacar una Visual Novel solo con esa información… pero no sería realmente nada impactante. Digamos que queremos agregar menús personalizados, un texto que cambie, barras que indiquen el porcentaje de algo… si bien no detallaremos todo eso ahorita, si hablaremos del elemento que permite hacer esto, las screens.

Podemos pensar en que cada screen es un objeto, más específicamente cada screen es el nombre que se le da a un conjunto de objetos, esto significa que podemos tener un conjunto de objetos llamados «lu» y otro conjunto llamado «li» cada uno con botones con una función especifica (Esto significa que cada screen no debe necesariamente ocupar solo un objeto).

Cada screen puede declararse en cualquier parte del codigo (Fuera del flujo del juego por supuesto), su estructura es la siguiente:



screen nombre:

    objeto:
        posición
        parametros
        acción (Si aplica)


Luego de que hacemos un screen con un nombre, le agregamos un objeto dentro de el, nótese que la posición de dicho elemento va dentro del objeto y no es dependiente del screen en si. Cada objeto (Botones, barras, etc) tiene diversas propiedad referentes a cada uno y varios de ellos ejecutan una acción especifica.

Los screen pueden usarse de modo similar a como se controlan los labels. Si decimos…



show screen nombre


…entonces se mostrará el screen y todo lo que en el esté involucrado en paralelo al juego normal. Pero si decimos:



call screen nombre


Entonces todo el control del juego pasará a ese screen. Eso significa que no habrá dialogo que avance y fuera de imágenes mostradas con show/scene lo único en pantalla será el screen provisto (Esto es porque los dialogos del juego de hecho estan en un screen llamado «say» y call screen reemplaza todas las screens en pantalla por la provista, lo cual interesantemente no afecta screens mostradas con show screen) hasta que el control pase a otro label (Con la acción Jump()) a otro screen (Con ShowMenu()) o se termine la interacción (Con Return()).

Pero en fin, veamos un poco de que podemos incluir en un screen.