¡Esta es una revisión vieja del documento!
Tutorial de Ren'Py
Bienvenid@ al Tutorial de Ren'Py. El propósito de este tutorial es demostrar como hacer un juego en Ren'py en unos pocos pasos.
El lanzador de Ren'Py
Antes de empezar a hacer un juego, primero hay que tomarse el tiempo de aprender como funciona el lanzador de Ren'Py. El lanzador te deja crear, gestionar, editar y ejecutar los proyectos de Ren'Py.
Empezar
Para empezar tendrás que instalar Ren'Py.
Lanzador Renpy
El lanzador está traducido a varios idiomas. Para elegir uno, elegí preferencias en la esquina inferior derecha, y elegí Español.
Elegir y lanzar un Proyecto
Primero deberías ver que apariencia tiene el juego The Question. Para hacer esto, empezá con el lanzador renpy, y elegí The Question desde la primer pantalla. Elegí Lanzar Proyecto para ejecutar The Question.
Podés volver a la demo de Ren'Py haciendo lo mismo, pero eligiendo “Tutorial” en lugar de “The Question”.
Iniciar un Proyecto Nuevo
Crea un nuevo proyecto
Podés crear un nuevo proyecto eligiendo “Crear Nuevo Proyecto” en el lanzador de RenPy.
Si esta esa tu primera vez creando un proyecto, Ren'Py puede pedirte que elijas el directorio de proyectos. Este será el directorio (también llamado carpeta) donde se crean los nuevos proyectos, y se lo revisará para buscar proyectos ya existentes. El Selector de directorios puede apracer debajo de RenPy, de modo que asegurate de revisarlo por si está allí.
El lanzador pedirá un nombre de proyecto. Elegiremos algo como “Mi Opción”, y apretamos Enter.
Acto seguido el lanzador preguntará la resolución del proyecto. 1280×720 es un buen compromiso entre tamaño de juego y calidad de imagen. Para el proósito de este tutorial, le elegimos 1280×720 para que coincida con el arte del juego “The Question”, y apretamos Continuar.
El lanzador pedirpa que elijamos un esquema cromático (un color de fondo y de acentos para la interfaz de usuario). No importa en este momento, así que elegí algún color lindo, y dale “Continuar”.
En este momento RenPy procesará lo indicado, y te dará una plantilla simple de juego. La plantilla usa arte y texto “de quita y pon”, pero funcionará, y soporta las funcionalidades esperadas como retroceder, cargar, y guardar jugadas. Elegí “lanzar proyecto” para ejecutarlo.
A Simple Game link
label start:
"Sylvie" "Hi there! How was class?"
"Me" "Good..."
"I can't bring myself to admit that it all went in one ear and out the other."
"Me" "Are you going home now? Wanna walk back with me?"
"Sylvie" "Sure!"
Este es un juego de renpy muy simple. No incluye ninguna imagen ni música, pero muestra una conversación entre dos personajes, y una línea de narración.
Para probarlo, desde la parte superior de la pantalla selcciona “My Question”, y lueego elegí “script.rpy” desde Editar Archivo. Si es tu primera vez, RenPy pedirá que selecciones un Editor (recomendamos Editra para los creadores iniciales) y descargará el editor que elijas). Luego abrirá el archivo de gion en el editor.
Una vez que se abra el editor, borra todo en script.rpy. Vamos a empezar de cero, de modo que no necesitamos nada de lo que tiene escrito. Copiá el ejemplo de arriba en script.rpy y grabalo.
Ahora estamos listos para correr este ejemplo. Volvemos al lanzador y elegimos “Lanzar Proyecto”. RenPy comenzará. Fijate como - sin ningún trabajo extra - Renpy te da los menús que te dejan cargar y grabar la partida, y cambiar varias preferencias. Cuando estamos listos, apretamos “Lanzar Proyecto” y jugamos este juego de ejemplo.
Este ejemplo muestras algunas declaraciones comunes del lenguaje Ren'Py.
La primer línea es una declaración label. La declaración label se usa para dar etiquetar un lugar en el programa. En este caso, creamos una etiqueta llamada start. La etiqueta start es especial, porque determina donde empiezan los guiones de RenPy al presionar Empezar Juego en el menú principal.
Las otras líneas son declaraciones say. Existen dos formas de declaración say:
- una cadena (comienza con comillas
“, contiene caracteres, y termina con comillas”, todo en una sola línea. Esta se usa para narración o énsamientos del personaje principal. - dos cadenas, usadas para diálogos, donde la primer cadena es un nombre de personaje y la segunda es lo que dice dicho personaje.
Tené en cuenta que todas las declaraciones say están sangradas 4 espacios. Esto es porque hay un bloque debajo de la declaración label. En Ren'Py, los bloques deben estar sangrados en relación a la declaración anterior, y todas las declaraciones en un bloque deben estar indentadas por la misma cantidad.
Cuando las cadenas contienen caracteres de “ en sí, estos caracteres tienen que ser escapados con una barra invertida /. Por ejemplo:
"Sylvie" "Did you ever hear Lincon's famous saying, \"The problem with Internet quotations is that many of them are not genuine.\""
Si bien este juego simple no tiene mucho para ver, es un ejemplo de cuán fácil es lograr algo funcional en Ren'Py. Agregaremos las imágenes en breve pero primero, veamos cómo definir los personajes.
Enlace de Personajes
Main article: Defining Character Objects
Un problema del primer ejemplo es que necesita que ingresemos repetidamente el nombre de un personaje cada vez que el tipo habla. En un juego con mucho diálogo, esto se hace muy pesado. También, se presentan ambos nombres del personaje de la misma manera, con el color de acento elegido al iniciar el juego. Para solucionarlo, Ren'Py te deja definir los personajes por adelantado. Esto permite asociar un nombre corto con el personaje, y cambiar el color del nombre del personaje.
define s = Character('Sylvie', color="#c8ffc8")
define m = Character('Me', color="#c8c8ff")
label start:
s "Hi there! How was class?"
m "Good..."
"I can't bring myself to admit that it all went in one ear and out the other."
s "Are you going home now? Wanna walk back with me?"
m "Sure!"
La primera y segunda línea definen personajes. La primer línea define un personaje con el nombre abreviado de “s”, y su nombre largo “Sylvie”, con un nombre de color versoso (los colores son representados en triples hexadecimales rojo-verde-azul, como en las páginas web).
La segunda línea crea un personaje con el nombre corto “m” y el nombre largo “Me”. con el nombre indicado en color rojizo. Otros personajes pueden feinidse copiando una de las líneas del personaje, y cambiando el nombre corto, largo y el color.
También cambiamos las declaraciones say para usar objetos personaje en lugar de una cadena de nombre de un caracter. Esto le dirá a RenPy usar los caracteres que definimos.
Enlaces de Imagenes
Main article: Displaying Images
Una novela visual no lo es tanto sin imágenes. Aquí hay otra escena de “The Question”. Esta también incluye declaraciones que muestran imágenes al jugador. Esto puede reemplazar completamente la sección anterior del guión, si lo deseas probar.
define s = Character('Sylvie', color="#c8ffc8")
define m = Character('Me', color="#c8c8ff")
label start:
scene bg meadow
"After a short while, we reach the meadows just outside the neighborhood where we both live."
"It's a scenic view I've grown used to. Autumn is especially beautiful here."
"When we were children, we played in these meadows a lot, so they're full of memories."
m "Hey... Umm..."
show sylvie green smile
"She turns to me and smiles. She looks so welcoming that I feel my nervousness melt away."
"I'll ask her...!"
m "Ummm... Will you..."
m "Will you be my artist for a visual novel?"
show sylvie green surprised
"Silence."
Este segmento de guion introduce dos nuevas declaraciones. La declaración scene en la línea 6 limpia todas las imágenes y muestra una imagen de fondo. Las declaraciones show de las líneas 16 y 26 presentan un strpite encima del fondo, y cambian el sprite presentado, respectivamente.
En RenPy, cada imagen tiene un nombre. El nombre conssite de una etiqueta, y opcionalmente de uno o más atributos. Tanto la etiqueta como los atributos deben comenzar con una letra, y contener letras, números y guiones bajos. Por ejemplo.
En la declaración scene de la línea 6, la etiqueta es "bg", y el atributo es "meadow". Por conveción, las imágenes de fondo usan la etiqueta ''bg''.
En la primer declaración ''show'' en la línea 16, la etiqueta es "sylvie", y los atributos son "green" y "smile".
En la segunda declaración ''show'' de la línea 26, la etiqueta es "sylvie" y los atributos son "green" y "surprised".
Sólo una imagen con una etiqueta dada puede aparecer en un momento dado. Cuando se muestra una segunda imagen con el mismo nombre, reemplazará a la primer imágen (tal como sucede en la línea 26 del guión).
Ren'Py buscará el fichero de imagen en el directorio de imágenes, que puede localizarse seleccionando “Imagenes” en la sección “Abrir Directorio” del lanzador. Ren'Py espera que el arte de personajes se encuentre en formato PNG, WEBP, o AVIF, mientras que el arte de fondo de estar en JPG, JPEG, PNG, WEBP, o AVIF. También están soportados los archivos SVG, pero fundamentalmente se los utiliza para personalizar la interfaz. Es muy importante el nombre de archivo - ya que la extensión no se usa, el nombre de archivos se convierte forzadamente a minúsculas, y eso se usa como nombre de la imagen.
Por ejemplo, los siguientes archivos - localizados en el directorio de imágenes - definen las siguientes imágenes:
"bg meadow.jpg" -> bg meadow
"sylvie green smile.png" -> sylvie green smile
"sylvie green surprised.png" -> sylvie green surprised
Ya que los nombres de archivo están en minúscula, también se mantiene lo siguiente:
"Sylvie Green Surprised.png" -> sylvie green surprised
Las imágenes también pueden ser puestas en subdirectorios (subcarpetas) contenidas en el directorio de imágenes. El nombre de directorio se ignorará y sólo el nombre de archivo se usa para definir el nombre de imágenes.
Declaración Hide
Ren'Py también soporta una declaración hide, que oculta una imagen dada.
label leaving:
s "I'll get right on it!"
hide sylvie
"..."
m "That wasn't what I meant!"
