domingo, 12 de abril de 2020

Ren'py (II) - Un sencillo diálogo

Intro

Vamos a ver cómo construir una historia en Ren'py. Va a ser una historia lineal con imágenes. De estos hay mil tutoriales por ahí, pero no quería empezar con un nivel intermedio, así que vamos a ver esto...

Ya vimos en el episodio anterior como crear un proyecto nuevo. Para este proyecto necesitaremos además dos imágenes:

Una imagen de fondo que será formato JPG ya que es la que ocupa menos espacio y una imagen PNG con fondo transparente que la pondremos sobre el fondo.

¿Dónde guardamos las imágenes?

Desde el menú de Ren'py podemos abrir directamente la carpeta de imágenes y guardar ahí las mismas.

Estructura proyecto en Ren'Py

Si en el menú pulsamos sobre script.rpy veremos el código que nos ha generado automáticamente en Ren'py. 


Vemos que hay dos partes:
  • La parte roja que es la de las declaraciones de los personajes e imágenes.
  • La parte amarilla es la que incluye el código, en este caso nuestro minidiálogo.
Para hacer este ejercicio eliminaremos lo que en la imagen anterior está recuadrado en rojo y en amarillo. Obsérvese que dejamos label start: y return.

Definir personaje

Se define, oh sorpresa, en la parte de definiciones o lo que hemos marcado en rojo. 
Pondremos:

define s = Character("Samantha")

Esto no hace nada y hace todo. A este nivel lo que hace es que yo me pueda llamar a mi personaje como s en lugar de como Samantha con lo que me ahorro de escribir,

Escribir diálogo

Ahora sí, vamos a escribir el código de este apasionante diálogo, así que escribimos en la zona amarilla, entre el label start: y el return.

NOTA: Veremos más adelante que podemos tener tropecientosmil label, pero es el start el que SIEMPRE se ejecutará primero.

Si os fijáis en la captura de código original, la etiqueta 'label start:' es un bloque. Sabemos lo que incluye un bloque porque está sangrado. Esto es que empezamos a escribir las líneas cuatro espacios más a la derecha.

Por tanto escribimos identando (que bonito palabro) cuatro espacios los siguientes líneas:


La primera línea, es un diálogo sin más, sin hacer referencia a ningún personaje. Esto es porque se trata del narrador. En el juego veremos algo asín:


En la segunda frase, hacemos referencia a Samantha. Si recordáis hemos relacionado la simple 's' con el carácter Samantha en la selección de definiciones:

define s = Character("Samantha")

Esto hace que el diálogo se vea así:


Mostrar imágenes

Las imágenes se definen así:


Esto lo ponemos en la sección de definiciones, dónde hemos puesto la definición de personajes.

Sin embargo hay dos tipos de imágenes:

Fondos:
Un fondo es un fondo, y como tal se mantendrá siempre ahí hasta que mostremos un nuevo fondo que sustituirá al anterior.
Lo suyo es que sea un .jpg porque ocupa menos espacio en disco y deberá siempre tener el tamaño que hemos definido del juego. En el ejemplo anterior se trata del colegio. 
Si os fijáis, en el ejemplo anterior lo asociamos a la imagen bg school.jpg .  La partícula bg que precede al nombre es una convención. Por convención todos los fondos se llamarán bg algo.jpg.

Lo mostraremos así:

scene colegio

Imágenes:
Las imágenes se colocarán sobre el fondo. Y si muestro otra imagen sobre la anterior. El hecho de que se muestren sobre otras requiere que el fondo sea transparente, con lo que usaremos imágenes ".png". Se muestra así:

show imagen

Ejemplo

Y con esto ya estamos en condiciones de escribir una historia lineal.
Os copio aquí todo el código de mi ejemplo en el que he añadido un nuevo personaje:


# Coloca el código de tu juego en este archivo.

# Declara los personajes usados en el juego como en el ejemplo:

define s = Character("Samantha")
define r = Character("Ron")

image colegio = "bg school.jpg"
image samantha = "samantha.png"
image ron = "ron.png"

# El juego comienza aquí.

label start:

    scene colegio
    "Hola, ¿cómo estamos? os presento a Samantha"
    show samantha
    s "Holi. Soy Samantha"
    show ron
    r "Muy buenas... y tan buenas..."
    return

Esto se verá así:





Como veis Ron se monta sobre Sam (más querría él). Lo suyo sería que una imagen saliera a la derecha y la otra a la izquierda. Pero eso ya lo veremos.

Nota final y chin pum.

Sólo decir que si colocamos las imágenes en la carpeta que tenemos predeterminado para ello y no usamos caracteres raros (ni mayúsculas) en la nomenclatura, no hará falta definirlas. Basta con llamarlas por su nombre sin extensión.

Así que:

image colegio = "bg school.jpg" scene colegio
Podía haberse sustituido sólo por:

scene bg school
Si queréis ver esto en un tutorial de YouTube os aconsejo éste del gran Sedac, en el que me he basado para hacer este pequeño tutorial.

Un besi.

No hay comentarios:

Publicar un comentario