Tutorial de Ren'Py
Bienvenid@ al Tutorial de Ren'Py. Ren'Py (Renobe Python) es un lenguaje de programacion muy parecido a Python, especialmente concebido para la creacion de novelas visuales. Estas son historias computarizadas con dialogos, imagenes y sonidos, que pueden contar con interactividad por parte del lector, constituyendo en aventuras con multiples hilos argumentales.
El proposito de este tutorial es demostrar como hacer un juego en Ren'py en unos pocos pasos.
Preparar Ren'Py
Instalar
Para empezar tendras que instalar el ambiente Ren'Py en tu sistema.
Lanzador Ren'py
El ambiente de programacion gira alrededor de un programa llamado Lanzador de Ren'Py ("Ren'Py Laucher"). Este te permitira crear, gestionar, editar, ejecutar y depurar distintos proyectos de Ren'Py.
Puesto que el lanzador esta traducido a varios idiomas, lo primero que deberas hacer es elegir un idioma. Tambien puedes escoger un idioma haciendo clic en Preferencias en la esquina inferior derecha, y eligiendo Espanol.
Elegir y lanzar un Proyecto
Primero revisemos que apariencia tiene la novela visual "The Question". Para reproducirla, en el panel izquierdo selecciona "The Question", y despues apreta Lanzar Proyecto para reproducir The Question.
Podes volver a la demo de Ren'Py de la misma forma, pero eligiendo "Tutorial" en lugar de "The Question".
Programar en Ren'Py
Vamos a crear un nuevo nuevo proyecto de Ren'Py.
Para ello tendremos siguiendo la sintaxis de Ren'Py. Esta funciona mayormente con palabras en ingles, y utilizan una sintaxis sencilla.
Crea un nuevo proyecto
En el Lanzador de Ren'Py elegi "Crear Nuevo Proyecto".
Si esta esa tu primera vez creando un proyecto, Ren'Py te pedira que elijas un Directorio de proyectos; este consiste en un directorio (tambien llamado carpeta) donde se almacenaran los nuevos proyectos que vayas creando. En la parte inferior del Lanzador de Ren'Py puede aparecer el Selector de Directorios; asegurate de revisarlo por si esta alli.
Se te solicitara que indiques un nombre de proyecto. Como nuestra novela visual estara en castellano, por ahora pongamosle algo como "Mi pregunta", y apretamos la tecla Intro para confirmar.
El Lanzador Ren'Py te solicitara que indiques la resolucion de pantalla del proyecto. 1280x720 es un buen compromiso entre tamano de juego y calidad de imagen. Para el proposito de este tutorial, elegi 1280x720 (ya que coincidira con el arte grafico de la novela visual de demostracion "The Question"), y apreta Continuar.
El Lanzador Ren'Py te pedira luego que escojas un esquema cromatico (un color de fondo y de acentos para la interfaz de usuario). En este momento no importa demasiado, elegi algun color lindo, y dale "Continuar".
Llegado este momento, el Lanzador Ren'Py procesara lo escogido, y creara por ti una plantilla simple para tu juego. Por ahora la plantilla usa arte y texto "generico", pero funcionara. Ademas, te creara automaticamente los botones tipicos de retroceder, cargar y guardar jugadas, etcetera.
Para ejecutar la plantilla de tu prototipo de novela visual, apreta "Lanzar proyecto".
Un juego simple para aprender
Para empezar a crear nuestra novela visual, haremos una version traducida al castellano de The Question (puesto que esto facilitara aun mas el aprendizaje).
¡Manos a la obra!
Para empezar, desde la parte superior del panel izquierdo del
Lanzador Ren'Py selecciona "My Question", y luego desde el sector
Editar Archivo, elegi el fichero que contiene el guion de la
obra: "script.rpy
".
Si es tu primera vez, Ren'Py pedira que elijas un Editor para trabajar - para los creativos novatos recomendamos Editra, pero podes usar tu editor de texto favorito. El Lanzador Ren'Py recurrira el editor que elijas, y abrira el fichero de guion de la obra con el editor que pediste.
Ahora bien, una vez que se abra el editor, borra todo el contenido de
script.rpy
: como empezaremos desde cero, no necesitaremos
nada del guion anterior. Pega el siguiente contenido en
script.rpy
, y guardalo.
label start:
"Silvana" "¡Como va! ¿Que tal estuvo la clase?"
"Yo" "Buena..."
"No puedo admitir que me entro por un oido y me salio por el otro."
"Yo" "¿Te vas a tu casa ahora? ¿Queres que volvamos juntos?"
"Silvana" "¡Dale!"
Este primer guion de juego sigue la sintaxis de Ren'Py, y como ves, es sumamente simple. Aun no le pusimos ninguna imagen ni nada de musica, pero al menos presenta una conversacion entre dos personajes, y una de las lineas es una narracion en off.
Ya estamos listos para ejecutar este guion de ejemplo. Volve al Lanzador Ren'Py y apreta "Lanzar Proyecto". Ren'Py lo ejecutara. Fijate como Ren'py pone directamente los menus que te dejan cargar y grabar una partida, asi como los de modificar las preferencias del juego.
Como vemos, este guion minimo ya incluye varias declaraciones muy comunes del lenguaje Ren'Py. Estudiemoslas.
La primer linea es una declaracion label
. La declaracion
label
se usa para etiquetar un lugar en el programa. En
este caso, creamos una etiqueta llamada start
; esta
etiqueta start
resulta especial, puesto determina el lugar
desde donde comenzara a ejecutarse los guiones de RenPy cuando apretas
Empezar Juego en el menu principal.
Las demas lineas constituyen lo que se llaman declaraciones
say
. Existen dos formas de declaracion
say
:
- Una forma usada para narracion en off o
pensamientos del personaje principal: consiste en
una cadena (comienza con comillas
"
, contiene caracteres, y termina con comillas"
, toda en una sola linea. - Una forma para dialogos: consiste en dos cadenas; la primer cadena es un nombre de personaje y la segunda cadena es lo que dice tal personaje.
Tene en cuenta que todas las declaraciones
say
van sangradas a 4 espacios. Esto se debe a que existe un bloque debajo de la declaracionlabel
. En Ren'Py, los bloques necesariamente deben estar sangrados en relacion a la declaracion anterior, y todas las declaraciones en un bloque deben estar sangradas por la misma cantidad de espacios.
En el caso que las cadenas contengan en si caracteres de
comillas ("
), estas deben ser escapadas con un
caracter de barra invertida (\
). Por ejemplo:
"Silvana" "¿Alguna vez oiste la famosa frase de Peron, \"El problema con las citas sacadas de Internet, es que muchas de ellas son truchas.\"?"
Aunque parezca que nuestra novela visual provista de este guion simple no tiene mucho efectismo, resulta un ejemplo que demuestra lo simple que es escribir algo que resulte funcional usando Ren'Py. En breve le agregaremos las imagenes, pero primero veamos como definimos los personajes de nuestra historia.
Personajes
Un problema que tiene este primer ejemplo es que fue necesario ingresar repetidamente el nombre de un personaje toda vez que el mismo habla (tal como si fuese un guion de una obra teatral). Si quisieramos escribir mucho dialogo en nuestra novela, hacer esto se volveria sumamente tedioso. Por suerte tambien podemos indicar los nombres de personaje al iniciar el guion. Para esto tenemos que definir los personajes por adelantado segun la sintaxis de Ren'Py. Gracias a ello, podremos asociar un nombre abreviado al personaje, y cambiar el color del nombre del personaje.
Altera el guion para que quede asi:
define s = Character('Silvana', color="#c8ffc8")
define m = Character('Yo', color="#c8c8ff")
label start:
s "¡Como va! ¿Que tal estuvo la clase?"
m "Buena..."
"No puedo admitir que me entro por un oido y me salio por el otro."
s "¿Te vas a tu casa ahora? ¿Queres que volvamos juntos?"
m "¡Dale!"
¡Ahora sera mas facil escribir el dialogo entre los dos personajes!. La primera y segunda linea definen al primero y el segundo personaje. Veamos:
La primer linea define un personaje con el nombre abreviado
de "s", y su nombre largo "Silvana
", con un
color de nombre verdoso (los colores se representan con
tripletes hexadecimales rojo-verde-azul, como lo hacen en las paginas
web).
La segunda linea crea un personaje con el nombre corto
"m
" y el nombre largo "Yo
". con el color de
nombre rojizo. Podes inventar otros personajes copiando una de las
lineas de definicion de personaje, y cambiandole su nombre
corto, nombre largo y el color.
Tambien modificamos las declaraciones say
para hacer uso
de los objetos Character
en lugar de recurrir a la tediosa
cadena de nombre para un personaje.
¡Este pequeno trabajo que nos tomamos, le permitira ahora a Ren'Py usar los personajes que le hemos definido de una forma mas abreviada y facil de escribir!
Ver manual: Defining Character Objects
Imagenes
No obtendremos una novela visual si no recurrimos a presentar imagenes en la pantalla. Aqui hay otra escena de "The Question". Esta tambien incluye declaraciones que muestran imagenes al jugador. Esto puede reemplazar completamente la seccion anterior del guion, si lo deseas probar.
define s = Character('Silvana', color="#c8ffc8")
define m = Character('Yo', color="#c8c8ff")
label start:
scene bg meadow
"A poco caminar, alcanzamos los prados justo al lado del vecindario donde vivimos."
"Es una vista muy linda a la que me fui acostumbrando. El otono es especialmente hermoso por estos lares."
"Cuando eramos chic@s, jugabamos mucho en estos campitos, estan llenos de recuerdos."
m "Ey... Umm..."
show sylvie green smile
"Gira hacia mi y sonrie. Parece tan a gusto que siento que mis nervios desaparecen."
"¡Le voy a preguntar...!"
m "Ummm... ¿Serias..."
m "¿Serias mi artista para una novela visual?"
show sylvie green surprised
"Silencio."
Este segmento de guion introduce dos declaraciones nuevas. La
declaracion scene
de la linea 6 borra todas las imagenes
y presenta solamente una imagen de fondo. Las declaraciones
show
de las lineas 16 y 26 hacen aparecer en pantalla un
sprite (una grafica activable) encima de la imagen de
fondo, y modifican este sprite, respectivamente.
En Ren'Py, cada imagen consta de un nombre. El nombre consiste de una etiqueta, y opcionalmente de uno o mas atributos. Tanto la etiqueta como los atributos deben empezar con una letra, y solo pueden contener letras, numeros y guiones bajos. Por ejemplo:
- En la declaracion
scene
de la linea 6, la etiqueta es "bg
" y el atributo es "meadow
". Por convencion, las imagenes de fondo usan la etiqueta "bg
" (por "background", o "fondo" en ingles). - En la primer declaracion
show
en la linea 16, la etiqueta es "sylvie
", y los atributos son "green
" y "smile
". - En la segunda declaracion
show
de la linea 26, la etiqueta es "sylvie
" y los atributos son "green
" y "surprised
".
En cada momento dado, solo puede aparecer una imagen con una etiqueta dada. Si se presenta una segunda imagen del mismo nombre, esta reemplazara a la primera (tal como sucede en la linea 26 del guion).
Ren'Py buscara el fichero de imagen en el directorio de imagenes, que puede localizarse seleccionando "Imagenes" en la seccion "Abrir Directorio" del Lanzador de Ren'Py. Ren'Py puede usar arte de personajes que se encuentren en formato PNG, WEBP, o AVIF, mientras que el arte de fondo puede estar en formato JPG, JPEG, PNG, WEBP, o AVIF. Tambien existe siporte para archivos SVG, aunque estos se utilizan fundamentalmente para personalizar la interfaz de usuario. Es muy importante el nombre de archivo - puesto que la extension no se usa, el nombre de archivos se convierte forzadamente a minusculas, y se emplea el resultado como nombre de la imagen.
Por ejemplo, los siguientes archivos - localizados en el directorio de imagenes - definen las siguientes imagenes:
"bg meadow.jpg" -> bg meadow
"sylvie green smile.png" -> sylvie green smile
"sylvie green surprised.png" -> sylvie green surprised
Puesto que los nombres de archivo estan en minuscula, tambien lo siguiente se mantiene:
"Sylvie Green Surprised.png" -> sylvie green surprised
Las imagenes tambien pueden ser colocadas en subdirectorios (subcarpetas) contenidas en el directorio de imagenes. El nombre de directorio resultara ignorado y solo se usara el nombre de archivo para definir el nombre de imagenes.
Ver manual: Displaying Images
Declaracion Hide
Ren'Py tambien soporta una declaracion hide
, que
oculta una imagen dada.
label irse:
s "¡Me voy a encargar ahora mismo!"
hide sylvie
"..."
m "¡No era eso a lo que me referia!"
En realidad es bastante raro usar hide
. Podes usar
show
cuando un personaje cambia de emociones, mientras que
scene
lo usas para el momento en que todos los personajes
se van. Solo es necesario usar hide
cuando un personaje
abandona la escena, pero el resto de la escena y los demas personajes
tienen que quedar igual.
Declaracion Image
A veces, puede que no quieras dejar que Ren'Py defina las imagenes
automaticamente por si mismo. Para esto se usa la declaracion
image
. Deberia estar en el nivel superior del fichero (sin
sangrado y antes de label start
), y puede usarse para
mapear un nombre de imagen a un fichero de imagen especifico. Por
ejemplo
image logo = "renpy logo.png"
image eileen happy = "eileen_happy_blue_dress.png"
La declaracion image
se ejecuta al tiempo de inicio,
antes que label start
y el resto del gion del juego que
interactua con el jugador.
La declaracion image
tambien puede ser utilizada para
llevar a cabo tareas mas complejas, pero esto se tratara aparte.
Transiciones
En el guion anterior, las imagenes aparecen y desaparecen de forma instantanea. Ya que cambiar la locacion y hacer que un personaje entre o salga de escena es importante, Ren'Py soporta transiciones, que permiten aplicarse cuando los personajes presentan modificaciones.
Las transiciones modifican lo que se muestra, desde el momento de lo
que sucedia al final de la ultima interaccion (dialogo, menu o
transicion - entre otras declaraciones) hasta la apariencia luego de que
se han ejecutado las declaraciones scene
, show
y hide
.
label start:
scene bg meadow
with fade
"A poco caminar, alcanzamos los prados justo al lado del vecindario donde vivimos."
"Es una vista muy linda a la que me fui acostumbrando. El otono es especialmente hermoso por estos lares."
"Cuando eramos chicos, jugabamos mucho en estos campitos, estan llenos de recuerdos."
m "Ey... Umm..."
show sylvie green smile
with dissolve
"Gira hacia mi y sonrie. Parece tan a gusto que siento que mis nervios desaparecen."
"¡Le voy a preguntar...!"
m "Ummm... ¿Serias..."
m "¿Serias mi artista para una novela visual?"
La declaracion with
recibe el nombre de la
transicion a emplear. La mas comun es dissolve
, que
disuelve de una pantalla a la siguiente. Otra transicion util
es fade
, que desvanece la pantalla a negro, y
luego la desvanece a la siguiente pantalla.
Cuando colocas una transicion tras multiples declaraciones
scene
, show
o hide
, se aplicara a
todas ellas a la vez. Si escribis:
scene bg meadow
show sylvie green smile
with dissolve
Tanto las imagenes "bg meadow
" y
"sylvie green smile
" se disolveran al mismo tiempo. Para
disolver una a la vez, es necesario programarlo usando dos declaraciones
with
:
scene bg meadow
with dissolve
show sylvie green smile
with dissolve
Esto primero disuelve el fondo del prado, y luego disuelve a Silvana. Si querias mostrar el prado instantaneamente, y luego presentar a Silvana, podias programarlo asi:
scene bg meadow
with None
show sylvie smile
with dissolve
Aqui se usa None
para indicar una transicion especial
que actualiza la idea de Ren'Py de que era la pantalla anterior, sin
mostrarle nada al jugador.
Ver manual: Transitions
Posiciones
Por defecto, las imagenes se muestran centradas horizontalmente, y con su borde inferior tocando el borde inferior de la pantalla. Esto usualmente esta bien para fondos y personajes unicos, pero cuando se muestra mas de un personaje en la pantalla, probablemente tenga mas sentido hacerlo en otra posicion. Tambien puede tener sentido reposicionar un personaje segun como venga el relato.
show sylvie green smile at right
Para hacer este reposicionamiento, agrega una clausula
at
a la declaracion show
. La clausula
at
recibe una posicion, y presenta la imagen en dicha
posicion. Ren'Py incluye varias posiciones predefinidas:
left
para el lado izquierdo de la pantalla,
right
para el lado derecho, center
para
centrarlo horizontalmente (el valor por defecto) y
truecenter
para que la centre horizontalmente y
verticalmente.
Los creadores puede incluso definir sus propias posiciones, y hacer eventos con movimientos complejos, pero esto cae por fuera de este tutorial rapido
Ver manual: Transforms
Musica y Sonido
La mayoria de los juegos de Ren'Py tienen musica de fondo. La musica
se reproduce con la declaracion play music
. La declaracion
play music
recibe un nombre de archivo que es interpretado
como un fichero de audio que debe ejecutarse. Los ficheros de audio se
interpretan en relacion al directorio de juego. Los ficheros de audio
deben estar en formato opus, ogg vorbis, o mp3.
Por ejemplo:
play music "audio/illurock.ogg"
Cuando se cambia la musica, uno puede indicar una clausula
fadeout
o fadein
, que se usan para desvanecer
el volumen de la antigua musica y aumentar el volumen de la musica nueva
(para hacer una transicion suave de musicas).
play music "audio/illurock.ogg" fadeout 1.0 fadein 1.0
La declaracion queue music
reproduce un fichero de audio
despues que el fichero de audio actual terminal
queue music "audio/next_track.opus"
Podes parar la musica con la declaracion stop music
, que
tambien puede recibir una clausula fadeout
opcional.
stop music
Los efectos de sonido pueden reproducirse con la declaracion
play sound
. A diferencia de la musica, los efectos de
sonido no tienen bucle (no se repiten indefenidamente).
play sound "audio/effect.ogg"
Cuando pones los archivo de audio en el directorio
game/audio
, y podes usar el nombre sin extension de
archivo, al estilo de una variable de Python (o sea, comienza con una
letra, y contiene solo letras, numeros y guiones bajos). En tal caso, te
sera posible reproducir dicho fichero sin poner las comillas.
Por ejemplo, si tenes el archivo de audio
game/audio/illurock.ogg
, podes programar:
play music illurock
Ver manual: Audio
Declaracion pause
La declaracion pause
hace que Ren'Py haga una pausa
hasta hacer clic con el mouse.
pause
Si le indicas un numero, la pausa finalizara sola cuando transcurran dicho numero de segundos.
pause 3.0
Finalizar el juego
Podes finalizar el juego con la declaracion return
, sin
tener que llamar a nada. Antes de hacere esto, es mejor poner algo en el
juego que indique que el juego termino, y tal vez dando un numero de
finalizacion o un nombre de finalizacion al usuario.
".:. Final Feliz."
return
Esto es todo lo que tenes que hacer para hacer una novela cinetica, un juego sin ningun tipo de opcion que seguir en el.
Menus, Etiquetas y Saltos
Ahora veremos lo que se necesita para hacer que un juego que presente menues con opciones para que el usuario elija interactivamente. Estas permiten trazar diferentes senderos o caminos, si es que queremos permitir seguir distintos desarrollos arbolados.
La declaracion menu
te permite presentar una opcion al
jugador:
s "Seguro, pero ¿que es una \"novela visual?\""
menu:
"Es un videojuego.":
jump juego
"Es un libro interactivo.":
jump libro
label juego:
m "Es como un videojuego que jugas en la computadora o en una consola."
jump casamiento
label libro:
m "Es como un libro interactivo que lees en una computadora o una consola."
jump casamiento
label casamiento:
"Y de esta manera, nos volvimos un duo creador de novelas visuales."
Este ejemplo presenta un menu que puede usarse con Ren'Py. La
declaracion menu
introduce una seleccion dentro del juego.
Requiere un bloque de lineas sangradas, cada una consiste en una cadena
seguida por dos puntos (:
). Estas seran las opciones del
menu, que se le presentaran al jugador. Cada opcion del menu requiere su
propio bloque de lineas sangradas, que se ejecutan cuando se eligen
dicha opcion del menu.
En este ejemplo, cada una de las dos opciones del menu ejecuta una
unica declaracion jump
. La declaracion jump
transfiere el control a la etiqueta definida a traves de la declaracion
label
. Luego del salto jump
, se ejecutan las
declaraciones del guion que siguen a la etiqueta label
determinada.
En el ejemplo anterior, luego de que Silvana realiza su pregunta, al
jugador se le presentara un menu que contiene dos opciones. Si el
jugador elige "Es un videojuego", se ejecuta la primer declaracion
jump
, y Ren'Py saltara a la etiqueta juego
.
Esto provocara que el Punto de Vista del personaje diga "Es una historia
con imagenes y musica", tras lo cual Ren'Py saltara a la etiqueta
casamiento
.
Si no hay una declaracion jump
al final del bloque
asociado con la etiqueta label
, Ren'Py continuara a la
siguiente declaracion. La ultima declaracion jump aqui es tecnicamente
innecesaria, pero se la incluye para hacer mas claro el flujo del
juego.
Pueden definirse las etiquetas label en cualquier archivo de juego
que este en el directorio game
, y termine con extension
.rpy. El nombre de archivo no importa en Ren'Py, solamente importan las
etiquetas contenidas en el. Podes pensar todos los archivos .rpy como si
fuese un unico archivo .rpy enorme, en el cual se usan los saltos para
transferir el control. Esto te da flexibilidad en la manera en la cual
organizas el guion de un juego muy largo.
Ver manual: In-Game Menus y Labels & Control Flow
Integracion de Python
Si bien podes hacer algunos juegos simples usando las declaraciones ya indicadas, ciertos juegos requieren una programacion mas compleja para almacenar datos para recabarlos luego. Por ejemplo, puede tener sentido que el juego recuerde una opcion escogida por el jugador, volver a una seccion comun del guion, y actuar mas adelante segun la opcion escogida anteriormente. Esta es una de las razones por la cual Ren'Py cuenta con soporte de Python incorporado.
Flags de apoyo usando las declaraciones Default, Python e If
Aprenderas aqui como almacenar un valor en un flag, que
contendra informacion sobre una eleccion escogida por el jugador a lo
largo de la trama. Para inicializar el flag, se usa la declaracion
default
, antes de la etiqueta label start
, por
ejemplo:
# True si el jugador ha decidido comparar las novelas visuales con un libro.
default libro = False
label start:
s "¡Como van! ¿Que tal estuvo la clase?"
De esta forma, el flag libro
comienza inicializado de
forma apagada (con al valor especial False
, recuerda que
como con el resto de Ren'Py, es importante definirlo usando la primer
letra en mayuscula). Esto significa que esta desactivada. Si el jugador
escoge la senda libro
, podemos poner el flag en
True
recurriendo una declaracion de asignacion de
Python, de la siguiente forma:
label libro:
$ libro = True
m "Es como un libro interactivo que lees en una computadora o un celular."
jump casamiento
Fijate que todas las lineas que comienzan con el caracter
$
son interpretadas como declaraciones de Python en lugar
de declaraciones de Ren'Py. La declaracion de asignacion de Python
que utilizamos aqui asigna un valor a una variable.
Ren'Py soporta otras formas para incluir Python, tales como las declaraciones multilineas (tuplas) de Python, que se discuten en otras secciones del manual. Ren'Py soporta Python 2.7, aunque recomendamos escribir Python que corra en Python 2 y Phyton 3.
Para revisar el valor que tiene almacenado el flag, recurrimos la declaracion if
:
if libro:
"Nuestro primer juego se baso en las ideas de Silvana, pero luego se me ocurrieron mis propias historias tambien."
Si la condicion es True
(verdadera), se ejecuta el
bloque del guion. Si no lo es, se la salteara. La declaracion
if
puede recibir una clausula else
opcional,
la cual introduce un bloque de guion alternativo que se ejecuta si la
condicion es False
(falsa).
if libro:
"Nuestro primer juego se baso en las ideas de Silvana, pero luego se me ocurrieron mis propias historias tambien."
else:
"Silvana ayudo con el guion de nuestro primer videojuego."
Las variables de Python no se limitan necesariamente a valores
simples True
/False
. Tambien podes usar
variables para almacenar el nombre del jugador, los puntajes, o para
cualquier otro proposito que se te ocurra. Ya que Ren'Py incluye la
habilidad de usar todo el lenguaje de programacion Python, es posible
hacer muchas cosas mas.
Un recurso tipico es el subgenero "simdate" o "juego de conquistas", donde las elecciones del jugador suman o restan puntaje de una o varias variables; de acuerdo al puntaje que vas sumando o restando, podes avanzar en determinadas sendas de la historia.
Ver Manual: Python Statements y Conditional Statements
Guion de La Pregunta
La Pregunta es una version traducida pero tiene los puntos basicos de este tutorial de Ren'Py.
Si queres, podes ver el guion completo de La Pregunta
aqui, pegarlo en el editor, y lanzarlo.
Ficheros en Plantilla
En la carpeta game
del tus proyectos creados, se
incluira las siguientes carpetas y ficheros:
script.rpy |
Este es el archivo pensado para incluir otros guiones que incluyen un escenario. Tambien podees agregar o borrar cualquier .rpy. |
*.rpyc |
Estos ficheros son resultados de la compilacion de cada fichero .rpy para reducir el tiempo de carga. No necesitas editar estos archivos sin borrar el fichero .rpy correspondiente. |
gui.rpy |
Las variables de GUI se definen aca. |
options.rpy |
Variables Config y Build, una parte de preferencias y una parte de la GUI de definen aca. |
screens.rpy |
Las pantallas se definen en este fichero. Deberias editar esto para customizar la GUI en un sentido mas avanzado. |
audio/ |
Este directorio esta pensado para incluir los ficheros de audio. |
cache/ |
Este directorio incluye los ficheros de cache. No necesitas editar estos ficheros. |
gui/ |
Este directorio incluye imagenes usadas por la GUI. |
images/ |
Esta carpeta esta pensada para incluir ficheros de imagenes. |
tl/ |
Este directorio incluye archivos de traduccion. |
Crear tu propio juego
Como ves, el ambiente Ren'Py es lo suficientemente sencillo como para poder recurrir a hacer tus propios personajes, historias, senderos de aventura, retruecanos y relatos.
Dibujar y escanear/fotografiar personajes es una manera sencilla de comenzar. Existen recursos de musica de licencias completamente libres para utilizar.
Gracias a todas las herramientas de software libre, recursos audiovisuales liberados ¡Podrias convertirte en desarrollador@ de juegos amateur!
Una vez que hiciste un juego, existen varias cosas que podes hacer antes de publicarlo:
Revisar tu guion
Desde la primer pagina del Lanzador, elegi "Revisar guion (Lint)". Esto depurara tu juego en busca de errores potenciales. Ya que algunos de estos errores solo afectan a usuarios de otras plataformas, es importante entender y usaurlmente corregir todos estos errores, incluso si no te dan problemas en tu computadora.
Revisar versiones nuevas de Ren'Py
Periodicamente se lanzan nuevas versiones de Ren'Py en base a correcciones de errores y nuevas funcionalidades. Antes de lanzarlas, querrias hacer clic en Actualizar en el lanzador de Ren'py para bajarte la ultima version. Tambien podes bajarte nuevas versiones y ver un listado de cambios en https://www.renpy.org/latest.html.
Raramente los cambios a Ren'Py requieren que hagas cambios en el guion de tu juego. Los cambios incompatibles se listan alli.
Compilar distribuciones
Desde la primer pagina del lanzador, elegi "Compilar Distribuciones".
Basado en la informacion indicada en option.rpy
, el
Lanzador Ren'Py compilara uno o mas ficheros de archivaje que contendran
a tu juego.
Probar el juego compilado
Lint no es substituto para las pruebas completas del juego. Es tu responsabilidad revisar tu juego antes de publicarlo. Considera pedirle a tus amig@s que te ayuden a testear la beta de tu juego compilado, puesto que a menudo un probador podra encontrar problemas que vos no viste.
Lanzamiento
Una vez que terminaste el juego y lo probaste, deberias postear el archivo compilado generado en una web donde alguien pueda verlo. Si ocupa poco espacio, ¡nuestra caja de texto-plano.xyz puede servirte!
Tampoco necesitas tener tu propio website, https://itch.io hospeda un monton de novelas visuales)
¡Felicitaciones! ¡Publicaste tu primer novela visual!
Conclusion
Este Tutorial apenas cubre lo basico de lo que es capaz de hacer Ren'Py. Para hacerlo facil y breve, omitimos muchas funcionalidades que soporta Ren'Py y simplificamos otras, enfocandonos en un conjunto minimo de funcionalidades necesarias para emprender una novela visual.
Si te interesa aprender mas, aprovecha para leer el Manual de Ren'Py.
¡Gracias por escoger el motor de novelas visuales Ren'Py!. ¡Queremos ver lo que creas con el!