This page is out of date

You've reached a page on the Ren'Py wiki. Due to massive spam, the wiki hasn't been updated in over 5 years, and much of the information here is very out of date. We've kept it because some of it is of historic interest, but all the information relevant to modern versions of Ren'Py has been moved elsewhere.

Some places to look are:

Please do not create new links to this page.


Manual de Comienzo rápido

Bienvenido al manual de comienzo rápido de Ren'Py. El propósito de este manual es demostrar como puedes hacer un juego con Ren'Py desde cero, en unos pocos y sencillos pasos. Para ello realizaremos la contrucción de un simple juego, llamado The Question, desde cero. Este manual contiene un numero de ejemplos, que estan incluidos como parte de la demostración.

El lanzador de Ren'Py

Antes de comenzar a hacer el juego, debes primero tomarte algo de tiempo en aprender como funciona el lanzador de Ren'Py. El lanzador te permitirá crear, gestionar, editar y ejecutar tus juegos Ren'Py.

Comenzando. Para comenzar deberás descargar Ren'Py y descomprimirlo. Debes entonces iniciar el lanzador ejecutando el programa Ren'Py.

Eligiendo un proyecto. Para poder ver primero que tal se ve el juego completo The Question deberás iniciar el lanzador de Ren'Py y elegir "Seleccionar Proyecto". Un listado de proyectos disponibles aparecerá. Elige "the_question" en la lista. Regresarás al menu principal, y podrás ahora elegir "Ejecutar" para empezar a jugar The Question.

Puedes regresar a la demostración de Ren'Py haciendo lo mismo, pero eligiendo "demo" en lugar de "the_question".

Creando un nuevo Proyecto. Crea un nuevo proyecto eligiendo "Nuevo Proyecto" en el lanzador. El lanzador te pedirá introducir una plantilla. Elige "plantilla". El lanzador te preguntará ahora por el nombre del proyecto. Como "the_question" ya está usandose deberás introducir algo distinto, como "my_question". El lanzador preguntarña ahora por un tema de colores para el proyecto. No importa lo que elijas en este momento, sólo elige uno que te guste. regresarás al menu principal del lanzador con tu nuevo juego seleccionado.

Un Juego Simple

label start:
    "Se lo preguntaré..."

    "Yo" "Um... ¿Querrías..."
    "Yo" "¿Querrías ser mi artista para una una novela visual?"

    "Silencio."
    "Ella permanece sorprendida, y entonces..."

    "Silvia" "Claro, ¿pero qué es una \"novela visual\"?"

Este es quizás uno de los más simples juegos posibles. No incluye ninguna imagen ni nada así, pero muestra una conversación entre dos personajes.

Para probarlo, ve al lanzador, ve al proyecto "My Question", y elige "Editar Script". Esto abrirá los archivos de script en un editor de texto. Elige el archivo script.rpy, y borra todo lo que hay en el. Empezaremos desde cero, así que no necesitaremos lo que hay ahí. Copia el ejemplo de arriba en script.rpy, y grábalo.

Ahora estás preparado para ejecutar este ejemplo. Regresa al lanzador y haz click en Ejecutar. Ren'Py se ejecutará. Fíjate como Ren'Py ha añadido menús que te permitan cargar, grabar y cambiar las opciones del juego, sin que hayas tenido que hacer ningún trabajo extra. Cuando estés listo pulsa "Comenzar juego", y prueba este juego de ejemplo.

Este ejemplo muestra algunos de los comandos más comunes de Ren'Py.

La primera linea es un comando de etiqueta. Esto es empleado para dar nombre a una posición en el programa. En este caso, hemos creado una etiqueta llamada "start". La etiqueta start es especial, ya que es ahí donde los scripts de Ren'Py comienzan a ejecutar el juego cuando el usuario pulsa en "Comenzar Juego" en el menu principal.

Las otras lineas son comandos say. Hay dos formas para realizar un comando say. La primera es empleando una cadena de texto (marcada entre comillas) por sí sola en una linea, que es usada para narrar y para pensamientos del personaje principal. La segunda forma consiste en dos cadenas. Se emplea para diálogos, con la primera cadena siendo el nombre del personaje y la segunda siendo lo que el personaje está diciendo.

Fíjate que todos los comandos están precedidos de cuatro espacios. Esto es porque se forma un bloque tras poner el comando de etiqueta. En Ren'Py los bloques deben estar precedidos de espacios según el comando anterior, y todos los comandos de un mismo bloque deben estar a la misma altura.

Cuando quieres que dentro de una cadena aparezcan unas comillas (") esas comillas deben estar precedidas por una barra invertida (\). Tal como se ha hecho en la última linea de nuestro ejemplo.

Si bien este sencillo juego no es gran cosa, es un ejemplo de lo fácil que es conseguir algo que funcione en Ren'Py. Empezaremos a añadir imágenes en breve, pero antes vamos a ver como declarar personajes.

Personajes

Un problema del primer ejemplo es que requiere escribir repetidamente el nombre completo del personaje cada vez que este hable. En un dialogo de un juego largo esto se traduce en mucho tiempo para escribir. A demás para mostrar los nombres de ambos personajes se utilizara el mismo método, y también justamente el mismo y aburrido texto blanco. Para solucionar esto Ren'Py permite definir previamente a los personajes. Esto permite asociar un nombre corto a un personaje, y a su vez cambiar el color del nombre del personaje.


define s = Character('Silvia', color="#c8ffc8")
define y = Character('Yo', color="#c8c8ff")

label start:
    "Se lo preguntaré..."

    y "Um... te gustaría..."
    y "¿Te gustaría ser mi artista para una novela visual?"

    "Silencio."
    "Ella se sorprendió, y entonces..."

    s "Claro, ¿pero que es una \"novela visual?\""

La primera y la segunda linea definen a los personajes. La primera linea define a un personaje con el nombre corto de "s", para el nombre largo "Silvia", con un nombre que se muestra de color verdoso. (Los colores son rojo - verde - azul hexadecimales, usados en las paginas web.)

La segunda linea crea un personaje con el nombre corto de "y", para el nombre largo de "Yo", con un nombre que es mostrado de un color rojizo. Se pueden añadir mas personajes simplemente copiando la linea de los que ya han sido creados y cambiando su nombre corto, su nombre largo, y su color.

También hemos cambiado la manera de usar personajes usando una letra en lugar de una cadena con el nombre del personaje. Esto hace que Ren'Py use los personajes que hemos declarado en el primer bloque.

Imágenes

Una novela visual no tiene mucho de visual sin imágenes. Vamos a añadir algunas imágenes a nuestro juego.

image bg pradera = "pradera.jpg"
image bg uni = "uni.jpg"

image silvia sonriendo = "silvia_sonriendo.png"
image silvia sorprendida = "silvia_sorprendida.png"    

define s = Character('Silvia', color="#c8ffc8")
define y = Character('Yo', color="#c8c8ff")

label start:
    scene bg pradera
    show silvia sonriendo

    "Se lo preguntaré..."

    y "Um... te gustaría..."
    y "¿Te gustaría ser mi artista para una novela visual?"

    show silvia sorprendida

    "Silencio."
    "Ella se sorprendió, y entonces..."

    show silvia sonriendo

    s "Claro, ¿pero que es una \"novela visual?\""

La primera cosa nueva que hay que hacer es declarar las imágenes, usando la declaración de imágenes en las lineas 1, 2, 4 y 5 dentro del primer bloque. Estas declaraciones dan un nombre a las imágenes y el nombre del archivo en el que se encuentran para que Ren'Py las reconozca y pueda usarlas.

Por ejemplo, la linea 4 declara una imagen llamada "silvia sonriendo", la cual se encuentra en el archivo "silvia_sonriendo.png".

Tenemos una declaración de escena en la linea 11. Esta declaración elimina el fondo negro y muestra en su lugar la imagen "bg pradera" como nuevo fondo. La siguiente linea es una declaración para mostrar una imagen, en este caso se muestra la imagen "silvia sonriendo" en pantalla.

La primera parte del nombre de la imagen sera la etiqueta de la imagen. Si se esta mostrando una imagen en pantalla y se pide a Ren'Py que muestre otra imagen con la misma etiqueta la primera imagen que este en pantalla sera reemplazada por la nueva imagen. Esto ocurre en la linea 19, en la segunda declaración "show". Por que la linea 19 se ejecuta cuando esta en pantalla la imagen "silvia sonriendo". Cuando se ejecuta la linea 19 esa imagen es reemplazada por "silvia sorprendida", debido que ambas imágenes comparten la misma etiqueta "silvia".

Para que Ren'Py pueda encontrar las imágenes es necesario que estas se encuentren en el mismo directorio en el que se encuentre el proyecto del juego. El directorio del juego puede encontrarse en "/game/", o haciendo clic en el boton "Game Directory" del lanzador de Ren'Py. Probablemente quieras copiar las imágenes desde el directorio "the_question/game/" al directorio "my_question/game/", para poder ejecutarlo y explorar este juego de ejemplo.

Ren'Py no hace distinción entre imágenes de personajes e imágenes de fondo, por que ambas cosas son imágenes. Generalmente los personajes necesitan tener un fondo transparente, lo cual significa que el formato de imagen que se debe usar es PNG. Para los fondos se pueden usar archivos de imágenes como JPEG o PNG. Por conveniencia las imágenes de fondo empiezan con la etiqueta "bg" pero se puede usar cualquier otro nombre como por ejemplo "fondos".

Declaración Hide. Ren'Py también tiene soporte para las declaraciones de "hide", lo cual hace que una imagen también se pueda ocultar.

    s "¡Y yo seré su quien la dirija!"

    hide silvia

    "..."

    y "¡Tampoco quería decir eso!"

En principio es raro que se tenga que hacer uso de "hide". Se puede usar "show" por ejemplo cuando un personaje cambia sus expresiones, o para mostrar a un nuevo personaje, mientras que "scene" se usa por ejemplo para cambiar de fondo cuando todos los personajes se han ido. Solo es necesario usar "hide" cuando un personaje se va y la escena quede igual que antes.

Transiciones

Es aburrido tener imagenes que solamente aparecen y desaparecen, por eso Ren'Py tiene una implementación de transiciones para poder mostrar cambios en pantalla que sean mas interesantes. Las transiciones hacen cambios de pantalla tras la ultima interacción de: (diálogos, menús, o transiciones), a lo que aparecerá tras estos con las declaraciones "show" y "hide".

label start:
    scene bg uni
    show silvia sonriendo

    s "Oh, hola, damos un paseo juntos?"
    y "Si..."
    "Le respondí con voz temblorosa."

    scene bg prado
    with fade
    
    "Llegamos a un prado que se encontraba a las afueras de la ciudad."
    "El otoño era precioso en aquel lugar."
    "Cuando eramos niños solíamos jugar aquí."
    y "Eh... ummm..."

    show silvia sonriendo
    with dissolve
    
    "Ella se volvió hacia mi con una sonrisa."
    "Se lo preguntare..."
    y "Ummm... te gustaría..."
    y "¿Te gustaría ser mi artista para una novela visual?"

La declaración "with" toma el nombre de la transición que se usara. La mas común es dissolve la cual disuelve una imagen en la siguiente imagen, generando así una transición mas suave. Otra transición bastante común es fade que hace que la escena se difumine y desaparezca en un fondo negro y que reaparezca una nueva escena en pantalla.

Cuando una transición se coloca tras varias declaraciones "show" o "hide" esta transición se aplica a todas por igual. Por lo tanto si se escribe:

    scene bg prado
    show silvia sonriendo
    with dissolve

Ambos "bg pradera" y "silvia sonriendo" serán disueltos al mismo tiempo. Para disolverlos por separado, es necesario escribir dos declaraciones, una para cada imagen:

    scene bg prado
    with dissolve
    show silvia sonriendo
    with dissolve

Así primero se disolverá la imagen de fondo "prado", y después se disolverá la imagen "silvia". Si se quiere mostrar directamente el fondo "prado" y después mostrar la imagen de "silvia" habría que escribir:

    scene bg prado
    with None
    show silvia sonriendo
    with dissolve

Aquí "None" se usa para indicar una transición especial, en realidad no hace nada pero es necesario para que así Ren'Py se haga una idea de las transiciones que se van a usar y en el orden en el que se van a mostrar.

Posiciones

Por defecto las imágenes son mostradas en el centro de la pantalla horizontalmente, y con su borde inferior tocando tocando el borde inferior de la pantalla. Esto esta bien para fondos con un único personaje, pero cuando hay que mostrar a mas de un personaje en pantalla es probable que haya que usar otra posición mas para poder mostrarlo correctamente. Esto también puede ser útil para cambiar a un personaje de sitio por algún motivo representativo de la historia.

    show silvia sonriendo at right

Para hacer esta recolocación, hay que añadir una clausula "at" a la declaración "show". La clausula "at" toma el nombre de la posición y así la imagen se coloca en esa posición, en este caso es "right" y por lo tanto la imagen "silvia sonriendo" se desplazara hacia la derecha. Ren'Py incluye varias posiciones predefinidas: left para mostrar una imagen a la izquierda, right para mostrar una imagen a la derecha, center para mostrar una imagen centrada horizontalmente (por defecto), y truecenter para centrar una imagen horizontalmente y verticalmente.

El mismo usuario puede definir sus propias posiciones, pero esto queda fuera del alcance de este manual de inicio rapido.

Musica y Sonido

La mayoría de los juegos tienen musica de fondo. En Ren'Py los archivos de musica se reproducen hasta que esta es detenida por el usuario. Se puede reproducir musica haciendo la declaración "play music".

    play music "illurock.ogg"

Para cambiar o detener la musica se puede aplicar la clausula "fadeout" o "fadein". Se usa "fadeout" para que la musica se desvanezca lentamente, y "fadein" para que la musica aparezca lentamente. Tras la clausula "fadeout" y "fadein" se colocan dos números separados por un punto, el primer numero son los segundos y el segundo numero son las milésimas de segundo.

    play music "illurock.ogg" fadeout 1.0

Se puede detener la musica con la declaración "stop music", la cual opcionalmente también puede tener una clausula "fadeout".

    stop music

Se pueden reproducir efectos de sonido usando la declaración "play sound":

    play sound "effect.ogg"

Ren'Py tiene soporte para varios formatos de sonido, pero OGG Vorbis es el principal. Al igual que las imágenes, los archivos de musica y sonidos del juego deben estar en el directorio en el cual se encuentre del juego.

Terminando el Juego

Para terminar el juego, se puede usar la declaración "return", sin tener que llamar a ningún otro evento. Para hacer esto es conveniente poner algo que indique que el juego ha terminado, y quizás dar al usuario un numero final o algún nombre propio de un final.

    ".:. Buen Final."

    return

Eso es todo lo que necesitas para poder hacer una novela cinética. Hasta ahora este es un juego sin preguntas ni opciones para elegir. A continuación vamos a ver que se necesita hacer para poder mostrar menús al usuario.

La declaración "menu" permite hacer que el usuario tenga que tomar una decisión en algún momento clave de la historia.

    s "Claro, ¿pero que es una \"novela visual?\""

menu:
    "Es una historia con imágenes.":
         jump vn

    "Es un juego hentai.":
         jump hentai

label vn:    
    m "Es una historia con imágenes y musica."
    jump marry

label hentai:
    m "Por que es un juego con mucho sexo."
    jump marry

label marry:
    scene black
    with dissolve

    "--- años después ---"

Este ejemplo muestra como se usan los menús en Ren'Py.

La declaración "menu" introduce un juego de menus. La declaración "menu" toma un bloque de lineas, cada una consta de un texto seguido de dos puntos ":". Estas serán las elecciones que tendrá el jugador a través de este menú. Tras cada elección en el menú debe haber un bloque con una un o mas declaraciones para que Ren'Py sepa que hacer tras elegir una de las opciones del menú. Entonces cuando se elija una opción Ren'Py usara las declaraciones que estén expuestas, en este ejemplo Ren'Py saltaría de una etiqueta a la declarada bajo cada opción, "vn o hentai" en el primer ejemplo y finalmente a en ambos casos saltaría a la etiqueta "casarse".

En este ejemplo cada elección en el menú usa una declaración "jump". La declaración "jump" pasa de una etiqueta a otra definida usando la declaración de etiquetas, y el código que se encuentre en esa etiqueta sera el código que se ejecute.

En este ejemplo de arriba, después de que Silvia hace una pregunta se le presenta al usuario un menú con dos opciones. Si el usuario selecciona "Es una historia con imágenes..", la primera declaración "jump" se ejecuta, y se pasa el control a la etiqueta "vn". En este caso esto hará que el personaje "Yo" diga "Es una historia con imágenes y musica.", y después que el control lo tome la etiqueta "casarse".

Las etiquetas "labels" tienen que estar definidas dentro del directorio del juego, y terminando con la extensión ".rpy". El nombre del archivo no sera importante para Ren'Py, solo las etiquetas "labels" contenidas en este. Una etiqueta solo puede estar en un archivo.

Python y Declaraciones If

Puede ser simple (a la vez que complejo) crear juegos que solo tenganmenus y declaraciones de salto "jump", pero llegados a un punto se puede hacer necesario dar opciones a usuario en variables, para volver a tener acceso a ellas mas tarde. Es por esto que Ren'Py tiene soporte para el lenguaje de programación Python.

Se puede acceder al soporte de Python de dos maneras. Mediante una linea precedida por el símbolo del dolar "$", lo que haya tras el símbolo del dolar representara una orden en Python, también se puede escribir "python:" y tras esto las ordenes en Python, este otro metodo se usa para crear bloques de declaraciones en Python que requieran varias lineas.

Python hace sencilla la provisión de "flags" en respuesta a los que el usuario responda. Primero se inicia el "flag" al principio del juego:

label start:
    $ bl_game = False

Y después esta opción se puede cambiar, por ejemplo en función a lo que el usuario elija en un menú:

label hentai:

    $ bl_game = True

    m "Why it's a game with lots of sex."
    s "You mean, like a boy's love game?"
    s "I've always wanted to make one of those."
    s "I'll get right on it!"

    jump marry

Y comprobar su valor mas tarde:

    "And so, we became a visual novel creating team."
    "We made games and had a lot of fun making them."

    if bl_game:
        "Well, apart from that boy's love game she insisted on making."

    "And one day..."

Obviamente las variables de Python so se limitan solo a poder hacer declaraciones de valores True/False. Pueden ser valores arbitrarios de python. Se pueden usar para almacenar el nombre del jugador, para almacenar puntos de nivel, o para muchos otros propósitos. Desde que Ren'Py incluye la capacidad de usar todo el poder de Python, se pueden hacer muchas cosas.

Publicando tu Juego

Una vez que hayas terminado de crear tu juego hay una serie de cosas que deberás hacer antes de publicarlo:

Editar options.rpy. El archivo options.rpy creado cuando creas un nuevo juego contiene una serie de configuraciones que posiblemente quieras personalizar. Algunas de ellas son definir la altura y la anchura del juego en pantalla, es conveniente hacer esto antes de empezar a hacer el juego. Y otras opciones, por ejemplo el titulo de la ventana, el titulo de la ventana se puede cambiar por el nombre del juego por ejemplo.

Hacer publicidad de Ren'Py. Esto es totalmente opcional, pero si tu juego tiene créditos, quisiéramos que hicieses mención de Ren'Py en ellos. Sugerimos algo así como "Creado con el motor de novelas visuales Ren'Py.", pero esto es solo una sugerencia, tu eres quien escribe.

Creemos que los juegos creados con Ren'Py por la gente son nuestra mejor publicidad, y por ello tenemos la esperanza de que incluyendo esto ayudes a que mas gente aprenda como crear su propia novela visual con Ren'Py.

Crear un archivo LEEME. Posiblemente quieras incluir un archivo LEEME.txt en la carpeta principal de tu proyecto (es decir, el directorio superior en el que se encuentra el juego). Ren'Py incluye un archivo de muestra, el cual puedes personalizar para adaptarlo a tu proyecto. También deberá elegir una licencia para distribuir el juego, una que determine como podrá distribuirlo la demás gente.

Comprobar si hay una nueva versión de Ren'Py. Ren'Py lanza nuevas versiones regularmente, para reparar "bugs" y añadir nuevas características. Puedes visitar la página de descarga para ver si una nueva versión ha sido recientemente liberada. También podrán verse las correcciones de errores efectuados de esa nueva versión en esa misma pagina.

Comprobar el Script. En el lanzador de Ren'Py, en la pagina "Tools", se puede ejecutar la ccion "Check Script (Lint)". Esto comprobara si hay algún error en el juego que pueda afectar a algunos usuarios. Estos errores podrían por ejemplo afectar solo a usuarios de Mac y Linux, por ello es importante reparar todos esos posible errores aunque nosotros no veamos ningún error en nuestro ordenador.

Construir Distribuciones. En la pagina "Tools", haz click en "distribute". El lanzador de Ren'Py volverá a comprobar el script de tu juego y te hará algunas preguntas, y entonces creara un ejecutable para que puedas distribuir tu juego.

Test. "Lint" no es sustituto de una buena revisión. Es tu responsabilidad comprobar el estado del juego antes de publicarlo.

Publicarlo. Ahora ya puedes enviar los archivos generados (para Windows, Mac, y Linux) a alguna web para publicarlos, y anunciar a todo el mundo donde podrán descargarlo. ¡Felicidades, tu juego ha sido publicado!

Si lo deseas, puedes informarnos de ello en Lemma Soft forums.

Script de The Question

El script de The Question se puede ver aqui.

¿Hacia donde vamos desde aquí?

Este inicio rápido apenas a rozado la superficie de lo que realmente puede llegar a hacer Ren'Py. Por motivos de simplicidad se han omitido muchas características que soporta Ren'Py. Para comprender mas o menos lo que realmente Ren'Py es capaz de hacer te recomendamos jugar toda la demo que trae Ren'Py y que sea Eileen quien te demuestre todas estas características a ti.

Para aprender mas a cerca del uso de Ren'Py, te sugerimos que empieces por los tutoriales de Ren'Py. El Cookbook contiene recetas que muestran como cumplir tareas especificas con Ren'Py, desde las mas simples hasta las mas complejas. El manual de referencia es complejo, pero contiene hasta el mas mínimo detalle de las cosas que se pueden hacer con Ren'Py.

Si tienes alguna pregunta, te sugerimos que nos la hagas en el foro de Lemma Soft, el foro oficial de Ren'Py. este es el eje central de la comunidad de Ren'Py, en la cual serán bienvenidos todos los nuevos usuarios que deseen registrarse y las preguntas que tengan para nosotros.

Gracias por elegir Ren'Py como motor para tus novelas visuales. Esperamos ver lo que puedas llegar a hacer con el!

<!--

Bold text