Creando con Renpy — Solo contra el Wendigo

Autor Yuyu

Bueno creo este espacio para todos aquellos que deseen participar o simplemente ver como desarrollo un proyecto basado en un novela visual.

Voy a subir ciertas imágenes y comienza un proyecto colectivo para quien se desee sumar a el o como punto de partida para crear el suyo propio, cada cual elije.

Me animo a crear un pequeño proyecto con la idea de presentar este programa que si bien entre los usuarios del anime si tiene su espacio, nosotros desde la visión de jugadores de juegos de mesa podemos adaptar para crear nuestra novela Solo contra el Wendigo.

RENPY
El motor de novela visual Ren’Py es un motor de juego libre que permite crear novelas visuales, un tipo de historia interactiva a través de ordenador.

Caracteristicas
Ren’Py incluye todas las opciones básicas de todo motor de novela visual, como por ejemplo historias ramificadas, opción de guardar partida y cargar, diferentes transiciones entre imágenes y la posibilidad de retroceder en la historia. Adicionalmente también puede usar código Python para que los usuarios mas avanzados puede dar mas opciones al juego. Ren’Py esta escrito en Python y Pygame y esta disponible oficialmente para Windows, Mac OS X y Linux.

descargar sdk   http://www.renpy.org/latest.html

version en español http://www.imprimiryjugar.com/index.php?topic=464

Bueno si tenéis ya descargado el programa el resto es muy sencillo, Renpy no necesitara ningún extra y se puede compilar para diferentes plataformas incluida Android, pero ese sera otro tema y desde aquí solo comenzaremos mostrando un programa muy sencillo y asequible a todos los usuarios.
Con el programa en marcha crearemos un nuevo proyecto…..
ese nuevo proyecto lo denominaremos como más nos guste….y pulsamos Enter para continuar…
elegimos el interface que más nos guste, por ejemplo Theme(Austen) y Favorite Jeans para el color y forma de las ventanas, botones etc…
una vez elegidos las opciones anteriores, ya podemos editar los scripts donde ira contenido todo el texto del juego, así como unas sencillas reglas y pautas para la toma de decisiones dentro del juego.
para acceder a sus archivos hacemos click sobre “All script files” y ya tenemos a nuestra disposición los textos de los que por el momento solo nos interesa el ” script.rpy”.
algo importante y a tener en cuenta es donde el creador de Renpy crea nuestro juego, y ese sera el lugar donde luego incluiremos nuestras imágenes, sonido y demás extras que incluyamos más adelante.Si no tenemos muy claro donde lo guardó, podemos hacer click en “game” debajo de la solapa de “Open Directory” y nos muestra el directorio donde Renpy guarda el proyecto en curso.

de momento lo dejo aquí para preparar el siguiente tema y escribir el inicio de nuestra aventura conversacional….

Prefacio:Antes de empezar necesitaremos como puede ser comprensible el material que recoge el texto del juego y quizá alguna cosa más…

La mejor calidad de escaneo es la de la biblioteca de Pnakotos, como está en formato de Bitmap incrustado necesitaremos convertirlo, pero quizá viendo el caso más difícil podéis haceros una idea…

enlace .- http://labibliotecadepnakotos.blogspot.com.es/2007/05/solo-contra-el-wendigo.html

también tenemos enlaces pero con mucha menor calidad en formato pdf y otros de la Llamada que pueden servirnos para crear y dar propiedades a nuestro personaje.

http://immadon.mforos.com/1383824/6625782-la-llamada-de-cthulhu/

con los archivos descargados la segunda parte constara en extraer el texto de los pdf con bitmap incrustados para lo que os remito a un anterior programa ya hace tiempo presentado en imprimiryjugar.

Como extraer texto de PDF con Bitmap incrustados.

http://www.imprimiryjugar.com/index.php?topic=70.0

ahora buscaremos unas imágenes que estén libres de derechos de autor para incluir en nuestro juego.

Principalmente los personajes que llevan el peso de la historia serán:

Narrador, no necesita imagen del personaje.

Doctor Nadelmann, protagonista.

Charlie Cola de Caballo, guía indio que si aparece en gran número de respuestas.

Para crear este juego, no voy a crear hoja de personaje por lo que se podrá jugar con la que propone el juego en formato pdf y tampoco voy a incluir tiradas de dados, por lo que deberéis jugar con la hoja de papel y los dados solicitados en cada momento, esto lo hago así para que resulte muy fácil crear el juego y no tener que liarnos a programar en Phyton para crear los menús necesarios que si que tendrían su peso de programación.

—————————————————————————————————
Bien lo primero que vamos hacer es cambiar la pantalla de Inicio de Renpy para poner una imagen que nos guste.

Si lanzamos el proyecto, comprobamos que la pantalla de inicio es neutra y no contiene ninguna imagen, vamos a cambiar esto para incluir la nuestra, pero antes vamos a crear un directorio que llamaremos “imagenes” donde vamos a ir incluyendo las que necesitemos para el juego y además queda más organizado.

Crear un directorio llamado imagenes

Para esto, hacemos click en “game” que está debajo de la solapa “Open Directory”.

Cuando estemos en el directorio “game” > botón derecho crear carpeta, renombrarla como “imagenes” sin las comillas.

Ahí incluiremos las imágenes del juego, como el proyecto se va a crear a 800×600 ese deberá ser el tamaño de las imágenes que usaremos para las pantallas y fondos. Podéis arrastrar y soltar esta:

Editando el fichero “options.rpy”

De nuevo volvemos a Renpy y editamos el archivo “options.rpy” haciendo click debajo de la pestaña “Edit File” , que es donde el programa contiene la ruta para cargar la pantalla de inicio.

este sera el aspecto del fichero y solo resta cambiar la linea ( mm_root = “#b0b8ba” ) por la siguiente ( mm_root = “imagenes/Inicio.jpg” )

Código:
mm_root = "imagenes/Inicio.jpg"

y ya esta…
ya tenemos realizados los cambios necesarios, Guardamos los datos y lanzamos el proyecto, si todo fue bien deberemos ver la siguiente imagen:

sencillo verdad ?… en el siguiente ejemplo incluiremos un Prefacio igual que en el libro original y poco a poco incluiremos al narrador y el resto de personajes.

—————————————————————————————————
La primera ventana El PrologoComo el texto original recoge un prologo, con Renpy vamos a crear una ventana especial para el contener el texto del prologo antes de empezar con el juego.

Acciones:
* Crearemos un Archivo Nuevo con el editor de texto
* Modificamos el archivo Script.rpy para incluir la llamada al texto para prologo
* Guardamos y lanzamos proyecto

* Incluir una imagen de fondo para el prologo

Crearemos un Archivo Nuevo con el editor de texto

Cuando los usuarios del juego pulsen sobre “Star Game”, les posicionaremos en una ventana donde incluiremos el texto del prologo que recoge el archivo “venarrador.rpy” .

El archivo desde el que vamos a realizar la llamada es “Script.rpy” que lo usaremos a modo de guión y desde ahí conduciremos el código para poner en marcha los eventos y textos del juego.

Crearemos un Archivo Nuevo con el editor de texto

Con el editor de texto que estemos usando para editar los archivos del programa, creamos un nuevo archivo y lo guardaremos como “venarrador.rpy”, es importante que lo guardemos dentro de la carpeta “game” del juego

ahora vamos a incluir el texto del prologo, podéis copiar y pegar el código incluido, notareis que lleva  diversos \n estos corresponden a los saltos de linea y el resto del texto para el prologo,  de nuevo con el editotr de texto editamos el archivo “venarrador.rpy”  copiamos y pegamos el código para ahorrar tiempo y guardamos los cambios.

Código:
label prologo:
"\n""A ti, el doctor L.C. Nadelmann, siempre te ha fascinado la prehistoria de Norteamérica, y particularmente los Grandes Bosques del Norte. Tan inexploradas como la cuenca del Amazonas, las tierras salvajes del Canadá, se dice que (si hay que hacer caso a cazadores, tramperos y buscadores de oro) que aún se ocultan tribus aborígenes desconocidas para la ciencia.\n\nAhora bien, la posible veracidad de esas historias queda enmascarada tras una toda una colección de relatos fantasiosos sobre valles prehistóricos perdidos, demonios indios, razas de pigmeos y otras fantasías igualmente increíbles.\n\nParece ya momento de hacer que la luz critica de la ciencia brille sobre los Grandes Bosques, puesto que la verdad oculta allí, bien es verdad que desbarataría las fantasías de algunos viajeros, pero podría ser al mismo tiempo de inestimable valor.\n\nDurante mas de un año le has dado la lata a tu Jefe de Departamento para que éste financie un modesto viaje exploratorio al Territorio del Noroeste del Canadá.\n\n\n"
"\nAhora, por fin, se han concedido los fondos y te preparas para partir a finales del semestre de primavera. La mayor parte de tus alumnos de ultimo año quieren ir, pero solo puedes llevarte a los tres mas prometedores.\n\nHas escogido explorar el valle del Hanninah del Norte. En el dialecto local de los indios Sarcee, ’Hanninah’ significa “el río del poder mágico” los creadores de historias sobre los grandes bosques se han prodigado en leyendas sobre el río, que se dice acechan presencias invisibles misteriosas cazadores de cabezas.\n\nUna parte del Valle donde se halló decapitado a un grupo de prospectores se conoce aun como La Cañada del Verdugo.\n\nTu pequeña expedición coge el tren hasta el centro del Canadá, allí aborda una lancha alquilada que os lleva hasta el lago Great Slave , para desde allí bajar por el río MacKenzie hasta el fuerte McDonald, donde un puesto avanzado de la Real Policía Montada del Canadá representa el único poder de la civilización en varios miles de kilómetros cuadrados de montañas, lagos, taiga y pantanos.\n\n\n"
"\nFuerte McDonald es un puesto comercial para indios y tramperos.\n\nSe os ha reservado una canoa de corteza, de excelente manufactura, así como todo el equipo básico que requiere vuestro viaje veraniego.\n\nLos oficiales de la Montada os dicen que los guías nativos no tienen muchas ganas de aventurarse por el valle del Hanninah del Norte.\n\nLos indios han evitado siempre la región y la mayoría de los hombres blancos que osaron adentrarse en el “río del poder mágico” nunca volvieron.\n\nDespués de mucho buscar, consigues localizar a un rudo guía profesional, mestizo, llamado Charlie Cola de zorro, que necesita desesperadamente el elevado salario que ofreces, puesto que tiene que enviar a su mujer a Winnipeg para una costosa operación.\n\n\n\nPor fin esta todo a punto, para empezar la aventura.\n\n\n"

return

Modificando el Script.rpy

Cuando el juego se lanza después de cargar los controladores básicos para Renpy, el programa empieza por este archivo.

como el programa acaba de empezar no tiene mucho prácticamente texto, pero nosotros vamos a definir una ventana para contener el texto del prologo y cuando el código lance “label start:” prepararemos las llamadas precisas.

Código:
# Aqui defino las diferentes variables que utilizara el juego 
# venarrador > Ventana especial

define prologo = Character(None,window_yfill=True,window_xmargin=20,window_ymargin=30)

# El juego comienza aqui en la label start:
label start:
# Lo primeros que hacemos es llamar al prologo por eso
# usamos el termino CALL
    call prologo
    return

Bien, si ahora observamos el código por lineas :

cualquier caracter depues de # el programa no los leerá y saltara a la siguiente linea, estos textos nos sirven para incluir ayudas o referencias y nunca son ejecutados.

define prologo = Character(None,window_yfill=True,window_xmargin=20,window_ymargin=30)

con estas linea definimos crear un carácter, y define unos margenes para el texto que estará incluido en el.

label start:

una vez que el programa empieza se desplaza a esta linea comenzando a leer desde aquí.

call prologo

como esta es la primera linea después de label start, lo que hará el código es llamar a la etiqueta “prologo” y si os fijasteis como  empieza el archivo venarrador.rpy, encontramos:

label prologo: en el archivo venarrador.rpy

de forma que con una llamada call label nombre: podemos llamar a diferentes textos incluidos en diferentes archivos, donde poder dividir el texto por capítulos, nos facilitará mucho el trabajo y tendremos organizados los cerca de 600 textos que incluye “Solo contra el Wendigo”.

pero la pantalla queda un poco sosa, y queremos que tenga un fondo para mejorar la presentación.

así que busque un mapa de la zona de Canadá donde se desarrolla la aventura y que nos puede servir como fondo, ya sabéis que la podéis arrastrar y soltar en el directorio “imagenes”.

ahora modificamos “Script.rpy” para incluir la imagen…

Incluir una imagen de fondo para el prologo

Código:
# Aqui defino las diferentes variables que utilizara el juego 
# venarrador > Ventana especial

define prologo = Character(None,window_yfill=True,window_xmargin=20,window_ymargin=30)

#IMAGENES
image mapa = "imagenes/Mapa.jpg"

# El juego comienza aqui.
label start:
    show mapa
    call prologo
    return

guardamos los cambios y si lanzamos Renpy cuando pulsemos sobre “Start Game” nos debe salir el prologo con nuestra imagen de fondo.

observando el código vemos:

image mapa = “imagenes/Mapa.jpg”

con este código incluyo una imagen al juego que la llamare mapa y que se encuentra  en el directorio indicado.

show mapa

observar que la linea la coloque antes de llamar al “call prologo” para que la imagen se cargue antes de que aparezca el texto, formando parte del fondo.

con Show llamamos a las imágenes que tengamos definidas en el juego y poco más, recordad que es importante mantener las tabulaciones de los textos.

—————————————————————————————————
Creando el cuerpo del juego.Después de que el prologo concluya, Solo contra el Wendigo está compuesto por unos textos que tienen su numeración y según indique el texto o la tirada de dados correspondiente, nos mandara a otro indicando el número que corresponda.

La historia comienza por el indicador 1, un pequeño texto del “narrador” y aparecen en escena el “Profesor” y “Charlie” el indio.

La idea es que los textos estén separados por bloques del 1 al 100, del 100 al 200 etc, están mejor organizados y nos permite manejar cualquier problema de una forma mas concreta al estar separados por bloques.

Acciones:

* Crear un nuevo archivo de texto y llamarlo “wendigo1.rpy” sin comillas
* Incluir textos para “Script.rpy”
* Personajes, toma de decisiones y saltos dentro del código

Crearemos un Archivo Nuevo  wendigo1.rpy

Con el editor de texto que estemos usando para editar los archivos del programa, creamos un nuevo archivo y lo guardaremos como “wendigo1.rpy”, es importante que lo guardemos dentro de la carpeta “game” del juego

este es el verdadero contenedor del texto del juego, como ya sabemos que utilizando llamadas CALL y apuntando a etiquetas LABEL Nombre: podemos llamar a diferentes textos en diferentes paginas, solo nos queda preparar para la toma de decisiones.

Código:
label wen1:
"La mejor ruta al Valle del Hanninah del Norte es remontar en canoa la rama occidental del MacKenzie desde el fuerte McDonald, hasta la boca del tributario que buscas. El agua baja mas rápido en la intersección y las montanas Ram se perfilan grises en la distancia. El sol calienta tu cara incómodamente y el aire es bochornoso. Las noches son tan cortas en estas latitudes tan al Norte que la oscuridad no da tiempo a los ríos para enfriarse."
"Cada día de remo da a los alumnos mas practica para seguir el ritmo que mareáis Charlie y tu. Vuestra reserva de gasolina es limitada por lo que no utilicéis el motor fuera borda mas que lo imprescindible. 
El Hanninah del Norte es un río mas duro que su rama occidental Su curso esta obstruido por barreras de arena, montículos de madera a la deriva, islas de guijarros y bosques de arboles muertos clavados en el fango, la corriente hace que todo ello apunte río abajo, como si se tratara de flechas que os indican que volváis atrás. 
El Harininah del Norte corre a través de esta desolación a lo largo de un laberinto de canales grandes y pequeños. Delante, oís el rugido creciente de unos rápidos."
show rapidos
c "Este ser lugar donde aguas dividirse dice Charlie.\nEscoger Camino correcto y nosotros pasar sin problemas; si escoger equivocado ... Se encoge de hombros."
n "El guía eres tu!, protestas. ¿Cual es el camino bueno?" 
c "Río estar vivo. Cada día renovarse, responde."

return

Como se puede apreciar el texto del “narrador” esta incluido entre unas comillas ” ” y para los textos de los otros personajes vamos a definir estos en el archivo Script.rpy y darles alguna propiedad, de momento observar que los textos de Charlie cola de zorro empiezan con la letra “c” y los del Profesor Nadelmann con una letra “n”, también se incluye una nueva imagen show rapidos justos antes de que empiece hablar Charlie cola de Zorro y por ultimo mencionar la etiqueta que recoge todo esto que se llama: label wen1:

de esta forma mantendremos la estructura del juego label wen1: corresponderá al texto 1 del “Solo contra el Wendigo” y lo mismo ocurrirá  por ejemplo con label wen225:, por eso crearemos diferentes archivos para sus correspondientes numeraciones.

Modificar Script.rpy

Vamos a modificar el archivo Script.rpy para incluir a los dos personajes la imagen de fondo cuando empiece hablar Charlie, además de incluir las llamadas necesarias.

Código:
# Aqui defino las diferentes variables que utilizara el juego 
# venarrador > Ventana especial

define prologo = Character(None,window_yfill=True,window_xmargin=20,window_ymargin=30)
define n = Character('Profesor', color="#c8ffc8")
define c = Character('Charlie', color="#c8ffc8")

#IMAGENES
image rapidos = "imagenes/rapidos.jpg"
image mapa = "imagenes/Mapa.jpg"

# El juego comienza aqui.
label start:
    show mapa
    call prologo
    call wen1
    return

observando el código:

define n = Character(‘Profesor’, color=”#c8ffc8″)

con esta linea definimos como sera el personaje del Profesor Nadelmann, la n se refiere a este carácter y cualquier texto que lo incluya hará referencia a este personaje.

define c = Character(‘Charlie’, color=”#c8ffc8″)

lo mismos para el personaje de Charlie pero le adjudicamos la letra c

#IMAGENES
image rapidos = “imagenes/rapidos.jpg”

como en la anterior ocasión definimos “rapidos” como una imagen que estará incluida en el directorio “imagenes”

label start:
show mapa
call prologo
call wen1

Cuando el juego comience llamara al “show mapa” y carga la imagen para el prologo, cuando este termine, volverá a lanzar una nueva llamada “call wen1”, donde reside el fuerte del código para el juego.

Personajes, toma de decisiones y saltos dentro del código

Guardamos los cambios y lanzamos el juego nos quedara:

una vez acabe el prologo el “narrador” continua con el texto hasta que empiece Charlie.

la imagen cambio cuando empezó a hablar Charlie y además el texto apunta al personaje que habla en ese momento.

cuando le responde el Profesor, el texto también indica quien es.

Legado un momento el juego nos pedirá un lanzamiento de dados o superar alguna tirada de algún tipo, para nuestro juego le daremos la posibilidad al jugador de tomar decisiones según el resultado ¿ cómo?, ahora lo vemos…

menu:
“Éxito o Pares”:
jump wen2
“Fracaso o Impares”:
jump wen3

sirviéndonos de el comando “menu:” mostraremos en la pantalla 2 botones para que el jugador pueda elegir, si elige “Éxito o Pares”: el código saltara “jump” a ” label wen2:” o por el contrario hacia “label wen3”, con esta posibilidad iremos dando cuerpo a la trama según las diferentes llamadas que se puedan producir.

así el jugador podrá elegir el camino que desea elegir o según la tirada de dados el que elija, el código modificando  “wendigo1.png” queda como a continuación:

Código:
label wen1:
"La mejor ruta al Valle del Hanninah del Norte es remontar en canoa la rama occidental del MacKenzie desde el fuerte McDonald, hasta la boca del tributario que buscas. El agua baja mas rápido en la intersección y las montanas Ram se perfilan grises en la distancia. El sol calienta tu cara incómodamente y el aire es bochornoso. Las noches son tan cortas en estas latitudes tan al Norte que la oscuridad no da tiempo a los ríos para enfriarse."
"Cada día de remo da a los alumnos mas practica para seguir el ritmo que mareáis Charlie y tu. Vuestra reserva de gasolina es limitada por lo que no utilicéis el motor fuera borda mas que lo imprescindible. 
El Hanninah del Norte es un río mas duro que su rama occidental Su curso esta obstruido por barreras de arena, montículos de madera a la deriva, islas de guijarros y bosques de arboles muertos clavados en el fango, la corriente hace que todo ello apunte río abajo, como si se tratara de flechas que os indican que volváis atrás. 
El Harininah del Norte corre a través de esta desolación a lo largo de un laberinto de canales grandes y pequeños. Delante, oís el rugido creciente de unos rápidos."
show rapidos
c "Este ser lugar donde aguas dividirse dice Charlie.\nEscoger Camino correcto y nosotros pasar sin problemas; si escoger equivocado ... Se encoge de hombros."
n "El guía eres tu!, protestas. ¿Cual es el camino bueno?" 
c "Río estar vivo. Cada día renovarse, responde."

menu:
    "{color=#000}Éxito o Pares{/color}":
        jump wen2
    "{color=#000}Fracaso o Impares{/color}":
        jump wen3

label wen2:
"Tu fatigado grupo se pasa el día abriéndose camino a través de la enmarañada red de canales, viéndose forzado a veces a retroceder para encontrar un camino mas fácil, y a veces acercándose demasiado a algún rápido y siendo arrastrado por el. En algunos puntos hay que llevar la canoa a mano, con agua hasta la cintura.Pasáis laberintos de islas boscosas, rápidos y madera a la deriva, hasta que finalmente escogéis un remanso apacible para amarrar y acampar durante la noche."

return

el resto es ir tejiendo la telaraña de forma que unas llamadas apuntaran a otras que a su vez apuntaran a otras y de sea forma se teje el resto de la aventura.

Lo dejamos ahí, se podría crear la aventura completa con los métodos aquí expuestos, pero nosotros incluiremos unas mejoras que cambiaran sustancialmente el juego.

—————————————————————————————————
MejorasAlgo que sin duda es interesante seria la posibilidad de incluir una imagen para cuando hablan los personajes, se asocia mucho mejor el texto con la imagen del personaje que en ese momento está hablando.

Personajes

Por orden de aparición comienza Charlie y para darle un aspecto más realista ponemos una imagen que lo relacione, para hacer esto lógicamente deberemos incluir la imagen de Charlie en la carpeta “imagenes” que creamos para el juego y luego modificar Script.rpy para que incluya la imagen.

Código:
define c = Character('Charlie',
                color="#c8ffc8",
                window_left_padding=160,
                show_side_image=Image("imagenes/Charlie.png", xalign=0.0, yalign=1.0))

Observando el codigo:

define c = Character(‘Charlie’,

Definimos c como un personaje cuyo nombre sera Charlie.

color=”#c8ffc8″,

Podemos cambiar el color de la etiqueta de Charlie

window_left_padding=160,

Referencia a la ventana donde aparecera

show_side_image=Image(“imagenes/Charlie.png”, xalign=0.0, yalign=1.0))

asociamos una imagen y donde queremos que aparezca.

Con el profesor Nadelmann haremos lo mismo y el código queda como:

Código:
define n = Character('Nadelmann',
                color="#c8ffc8",
                window_left_padding=160,
                show_side_image=Image("imagenes/Profesor.png", xalign=0.0, yalign=1.0))

No os preocupéis por el código de momento, al final incluyo un archivo RAR con todo el proyecto imágenes y sonido incluidos, ahora solo explico como hacer ciertas cosas con Renpy y luego con el archivo completo podéis probar a variar cosas o incluir otras que os gusten.

Tirada de dados

Para realizar una simple tirada de dados incluí unas imágenes para crear un botón que se encarga de realizar esto.

Comenzamos aquí con conceptos más basados en Variables, números aleatorios y otros que debido a que vamos a llamar al dado en repetidas ocasiones, merece crear un archivo nuevo que recoja el código para el lanzamiento de dados, ahorrando mucho código que tendríamos que escribir cada vez que lanzáramos los dados.

dadoswen.rpy

Código:
label dados:
show expression Text(_("{image=imagenes/redados.png}{p}Lanza los dados y suerte ..."), size=22, yalign=0.0, xalign=0.1, drop_shadow=(2, 2)) as text

python:
    ui.frame(xalign=0.1,yalign=0.3)
    ui.imagebutton("imagenes/minidados.png", "imagenes/minidadosbn.png", clicked=ui.returns("Suerte"))
    result = ui.interact()
if result == "Suerte":
    show expression Text(_("{image=imagenes/resultados.png}{p}Puntos tirada de Dados = [d20]"), size=22, yalign=0.0, xalign=0.1, drop_shadow=(2, 2)) as text

return

revisando el código:

label dados:

como en otras ocasiones, el código se inicia cuando hacemos una llamada “call dados”

show expression Text(_(“{image=imagenes/redados.png}{p}Lanza los dados y suerte …”), size=22, yalign=0.0, xalign=0.1, drop_shadow=(2, 2)) as text

este texto nos permite informar al usuario para que lance los dados incluye una imagen al texto y lo posiciona en pantalla.

python:
ui.frame(xalign=0.1,yalign=0.3)
ui.imagebutton(“imagenes/minidados.png”, “imagenes/minidadosbn.png”, clicked=ui.returns(“Suerte”))
result = ui.interact()
if result == “Suerte”:

este código debe ser entendido como un código especial que nos sirve para mostrar el botón sobre el que el usuario pulsara para obtener un resultado, incluye dos imágenes, la primera es la que se ve en un primer momento y la segunda cuando el usuario pone encima el puntero del ratón.

el resultado puede ser cotejado si el resultado fuera diferente, para este caso no es necesario y salta al ultimo texto del código.

show expression Text(_(“{image=imagenes/resultados.png}{p}Puntos tirada de Dados = [d20]”), size=22, yalign=0.0, xalign=0.1, drop_shadow=(2, 2)) as text

por ultimo muestra en pantalla el resultado de la tirada acompañando al texto con una imagen para mejor referencia, es importante observar que el código finaliza con “return” lo que hace que el código vuelva al lugar donde fue llamado en caso contrario quedaría perdido en el limbo informático.

Los {p} son saltos de linea para textos en general.

Puntos tirada de Dados = [d20], cuando queremos incluir la información de una variable en un texto deberemos introducir la variable en cuestión dentro de unas llaves “[d20]“.

Pero, ¿ de donde sale el resultado del número aleatorio ?, para esto debemos editar el archivo Script.rpy para que en el apartado de definiciones incluyamos el código que genera el numero aleatorio y u correspondiente llamada desde “label start:”

Script.rpy

Código:
# Aqui defino las diferentes variables que utilizara el juego 
# venarrador > Ventana especial

define prologo = Character(None,window_yfill=True,window_xmargin=20,window_ymargin=30)

define c = Character('Charlie',
                color="#c8ffc8",
                window_left_padding=160,
                show_side_image=Image("imagenes/Charlie.png", xalign=0.0, yalign=1.0))
define n = Character('Nadelmann',
                color="#c8ffc8",
                window_left_padding=160,
                show_side_image=Image("imagenes/Profesor.png", xalign=0.0, yalign=1.0))
[b]define d20 = 0[/b]
define pmit = 0
define origen = 0
define destino = 0
label start:
    [b]$ d20 = renpy.random.randint(1, 100)[/b]
    $ pmit = 0
    #play music "sonido/wendigo.ogg"
    show mapa
    call prologo
    call wen1

    return

define d20 = 0

Con esta linea definimos a “d20” como una variable numerica que contendrá resultados numéricos.

label start:
$ d20 = renpy.random.randint(1, 100)

y aquí la primera llamada adjudicando a “d20” el número aleatorio obtenido entre el 1 y el 100 ya que nos basaremos en tiradas de porcentaje.

ya queda poco, por ahora no tengo más tiempo lo dejo aquí y cuando pueda lo termino…..

———————————————————————————————–
Mejoras continuación…Podríamos evitarnos poner la pantalla de dados ya que solo aparecen para avisarnos de que debemos lanzar esos dados, ya sea para una tirada de Suerte como de otro tipo, yo las incluí para que tuvierais la referencia necesaria, pero podríamos evitar al usuario hacer la tirada incluyendo solo el resultado obtenido por el D100 y que decida que opción desea si está jugando con la Hoja del Personaje o sin hoja y eligiendo aleatoriamente la dirección que desea elegir.

de esta forma los usuarios podrían jugar sin tener que hacer click extras.

¿ Os acordáis del comando menu ?

Pues ese comando sera el encargado de presentar las posibles elecciones que pueden elegir los jugadores, vamos a ver como es el código y donde incluirlo. Editando “wendigo1.rpy”

Código:
label wen2:
$ pmit += 1
show expression Text(_("{image=imagenes/origendestino.png}{p}Punto origen  > [origen]{p}Lugar destino > [destino]{p}"), size=22, yalign=0.0, xalign=0.1, drop_shadow=(2, 2)) as text
"Tu fatigado grupo se pasa el día abriéndose camino a través de la enmarañada red de canales, viéndose forzado a veces a retroceder para encontrar un camino mas fácil, y a veces acercándose demasiado a algún rápido y siendo arrastrado por el. En algunos puntos hay que llevar la canoa a mano, con agua hasta la cintura.Pasáis laberintos de islas boscosas, rápidos y madera a la deriva, hasta que finalmente escogéis un remanso apacible para amarrar y acampar durante la noche."
call dados
$ origen = 2
menu:
    "Tira un dado si obtienes un número par elige Éxito/Par de lo contrario Pifia/Impar;"
    "{color=#000}Éxito o Pares{/color}":
        hide expression Text(_(""), size=12, yalign=0.1, xalign=0.1, drop_shadow=(2, 2)) as text
        $ destino = 4
        jump wen4
    "{color=#000}Pifia o Impares{/color}":
        hide expression Text(_(""), size=12, yalign=0.1, xalign=0.1, drop_shadow=(2, 2)) as text
        $ destino = 5
        jump wen5

observando el código:

$ pmit += 1

lo veremos luego con más calma cuando hable de variables, de momento saber que suma 1 punto a los Mitos de Hanninah, cada lectura del libro original otorga unos puntos y según avancemos en la lectura se sumaran los que llevemos conseguidos. Hay parrafos que incluyen  puntos y otros que no, además hay otros que proporcionan puntos a los Mitos Cthulhu, pero estos no los voy a contabilizar para esta aventura.

call dados

ya lo vimos en su momento sirve para realizar una llamada a “dados”, cuyo código lo escribimos dentro del archivo dadoswen.rpy.

$ origen = 2

esta variable indica de donde venimos, para tener una referencia real con el libro, cada cambio de párrafo nos mostrara el origen y el destino de los párrafos por los que viajaremos en nuestra aventura.

menu:
“Tira un dado si obtienes un número par elige Éxito/Par de lo contrario Pifia/Impar;”

Lo primero que nos advierte el menú, es que según la tirada obtenida tenemos un par de caminos para elegir, si queremos minimizar el número de click para nuestra aventura podemos saltarnos la llamada a los dados e incluir la información pertinente en esta linea del comando menú.

os pongo un ejemplo…

menu:
“Obtienes un  [d20] … puedes elegir Éxito/Par o Pifia/Impar;”

solo incluí la referencia al número aleatorio [d20] y cambie el texto para presentarlo.

“{color=#000}Éxito o Pares{/color}”:

este sera el texto que saldrá en el primer botón del menú, podemos cambiar los colores modificando {color=#000}.

hide expression Text(_(“”), size=12, yalign=0.1, xalign=0.1, drop_shadow=(2, 2)) as text

esta linea la utilizamos para ocultar la linea de texto anterior que salio en la pantalla anunciando el resultado de los dados, no hace nada más que no sea borrar la anterior linea de texto.

$ destino = 4

esta variable indica a donde vamos, para tener una referencia real con el libro, cada cambio de párrafo nos mostrara el origen y el destino de los párrafos por los que viajaremos en nuestra aventura.

jump wen4

una vez el programa leyó lo anterior, con esta linea le mandamos a otro párrafo, por eso la importancia de que los párrafos vengan numerados como “wen000”.

En definitiva dentro del archivo “wendigoXX.rpy” se repetirá la misma secuencia para cada párrafo:

— Etiqueta con numero
— Puntos de Mitos Hanninah que proporciona el párrafo
— “código origen destino..”
— Texto del párrafo coincidente con el libro
— Llamada dados si es necesario
— Asigno a la variable origen un valor
— Menú, que nos saltara a otra linea wen000

————————————————————————–
Mejoras finales…Para terminar, he decidido que me gustaría que cierta parte de información aparezca cuando le indicamos al jugador el Origen y Destino dentro del juego, así como también los puntos de Mitos de Hanninah obtenidos.

Puedo incluir más o menos información y creo que el mantener un cierto equilibrio puede ser lo mas sensato para no saturar de información a los jugadores o por defecto que no tengan ninguna.

Para incluir esta sencilla información editamos “wendigo1.rpy” y cada cual que elija si desea dar más o menos información, este tipo de cosas es más bien los gustos de cada creador y como desee que esa informacion llegue a los jugadores.

Código:
label wen2:
$ pmit += 1
show expression Text(_("{image=imagenes/origendestino.png}{p}Punto origen  > [origen]{p}Lugar destino > [destino]{p}{image=imagenes/libropuntos.png}{p}Puntos Mitos Hanninah = [pmit]"), size=22, yalign=0.0, xalign=0.1, drop_shadow=(2, 2)) as text
"Tu fatigado grupo se pasa el día abriéndose camino a través de la enmarañada red de canales, viéndose forzado a veces a retroceder para encontrar un camino mas fácil, y a veces acercándose demasiado a algún rápido y siendo arrastrado por el. En algunos puntos hay que llevar la canoa a mano, con agua hasta la cintura. Pasáis laberintos de islas boscosas, rápidos y madera a la deriva, hasta que finalmente escogéis un remanso apacible para amarrar y acampar durante la noche."
#call dados
$ origen = 2
menu:
    "Dado lanzado elegir, Par/Impar;"
    "{color=#000}Par{/color}":
        hide expression Text(_(""), size=12, yalign=0.1, xalign=0.1, drop_shadow=(2, 2)) as text
        $ destino = 4
        jump wen4
    "{color=#000}Impar{/color}":
        hide expression Text(_(""), size=12, yalign=0.1, xalign=0.1, drop_shadow=(2, 2)) as text
        $ destino = 5
        jump wen5

Os muestro la etiqueta “label wen2” al completo para que veáis como quedara conformada cada una de las etiquetas que podemos usar en la creación del juego, pero podéis modificar a vuestro gusto lo que deseéis.

observando el código:

show expression Text(_(“{image=imagenes/origendestino.png}{p}Punto origen  > [origen]{p}Lugar destino > [destino]{p}{image=imagenes/libropuntos.png}{p}Puntos Mitos Hanninah = [pmit]”), size=22, yalign=0.0, xalign=0.1, drop_shadow=(2, 2)) as text

{image=imagenes/origendestino.png}{p}Punto origen  > [origen]{p}Lugar destino > [destino],,, con esta primera parte incluyo una imagen y dos texto que indican de donde venimos y hacia donde vamos.

{p}{image=imagenes/libropuntos.png}{p}Puntos Mitos Hanninah = [pmit] y con esta segunda parte, después de un salto de linea incluyo los punto de Hanninah obtenidos.

y ya está, ¿ que tal un poco de música para ambientar…?

Para dar un poco más de ambiente podemos incluir la música y efectos que creamos oportunos, no estaría mal que cuando Charlie empieza a hablar además de la musica de fondo se oyera el sonido de esos rápidos como efecto complementario, yo solo puse musica pero ahí queda la idea y sin duda enriquece mucho más la lectura creando ese tipo de ambientes que nos ayudan a imaginar como es nuestra propia aventura.

Si deseáis incluir sonidos, es totalmente aconsejable crear una carpeta como antes hicimos con las “imagenes” que incluya los que usareis en el juego y dar un nombre como por ejemplo “sonido”, en el archivo que incluyo a continuación puse una música que encontré por ahí, seguro que se puede mejorar, como todo en general, pero eso lo dejo para quien lo desee pueda explorar otra aventura paralela como es la de crear un juego con Renpy.

Enlace proyecto Solo contra el Wendigo by Yuyu.-

https://www.box.com/s/n5w34jqasl1bsg5mlnev

Recordar que si lo deseáis podéis participar aportando un texto, entre todos es más fácil y para uno solo casi una misión imposible.

Estoy realizando unas cuantas modificaciones en el juego para incluir más datos.La hoja de personaje y la toma de decisiones son algo esencial para que los jugadores dispongan de todos los datos del Profesor Nadelmann para jugar.

de esta forma tenemos la información necesaria para nuestra toma de decisiones.

Por ejemplo, en una tirada de Suerte los dados arrojan 61, podemos consultar en Características del personaje, observando que Nadelmann tiene suerte 70, como la cifra de los dados es menor que la suerte de Nadelmann, pasa la prueba eligiendo el color propuesto.

Si preferís jugar por libre, siempre podréis pulsar el botón que más os guste.

Podríamos decir que hemos creado una hoja de personaje muy simple a la par que eficaz, los datos son suficientes y a la vista, un sistema de elección por colores con los dos botones de selección y una ventana de texto que aparece en el inferior de la ventana con los datos para resolver el dilema planteado en cada caso.

Anuncios


  1. Hola, primero déjame felicitarte por el gran trabajo que haz hecho no solo por el juego,sino por tomarte la molestia de compartirlo, actualmente esto aprendiendo sobre este programa y me fue de mucha ayuda la información que expones. Muchas gracias.

    1. Pues muchas gracias, me alegro que te sirva aunque sea solo para empezar, puede que con el tiempo te animes a ampliar el contenido.

      Un saludo y P&P.

  2. Buenas! La verdad muy completo para comenzar con el programa, me lo baje hoy y estuve tocando un poco de todo, no soy muy bueno con la programación pero con páginas como estas se hace más llevadero! Espero que sigas con el proyecto y lo vayas explicando paso a paso, saludos!

  3. Disculpa, estoy creando mi propia novela y cuando intento situar a mi personaje como lo hiciste con “Charlie”, utilizo el mismo código pero la imagen queda en el medio y me tapa el texto, Si sabes cómo arreglarlo te lo agradecería.

    1. define c = Character(‘Charlie’,
      color=”#c8ffc8″,
      window_left_padding=160,
      show_side_image=Image(“imagenes/Charlie.png”, xalign=0.0, yalign=1.0))

      Recuerda que el código debe escribirse en el *.rpy correspondiente y que el orden de aparición es importante. Generalmente el 80% de los errores son por escribir mal el código.

      Sin mas datos no te puedo decir mas. Saludos y suerte.

  4. hola estoy empezando con este programa, por el momento quiero empezar poniendo la imagen del titulo.
    pero me da error al poner en la siguiente linea, después de poner esto: mm_root = “imagenes/Inicio.jpg”

    me da error en: gm_root = “#b0b8ba”,

    1. Hola David

      Observa que hay una coma al final de la linea y debe estar colocada en el codigo.
      Otro motivo de error suelen ser las rutas, asegurate de que es la adecuada y la imagen corresponde con la ruta del codigo, por ultimo revisa que el nombre de la imagen corresponde con la indicada.

      Un saludo.

  5. Excelente web, este tutorial ha sido de lo más útil. Gracias por mostrarnos estos scripts que permite más interacción entre el usuario y la novela visual.

    1. Me alegro que os guste, hay mucho trabajo detras de este tutorial y me congratulo de que os sirva en vuestros proyectos.

      Saludos

  6. ¡Muchas gracias por esto! Lo andaba buscando.
    Pero, ¿cómo guardo mi novela para luego subirla a Interne o algún otro sitio?
    ….

    1. De nada un placer.

      El archivo compilado por Renpy es auto ejecutable, puedes subirlo algún servidor gratuito para descargar.

  7. Muy buen trabajo e impresionante manejo de código, mis respetos.
    Tengo una seria duda y no pierdo nada preguntándole,
    Hay forma de guardar el proyecto final en un archivo .exe ?

    1. Renpy ya crea un ejecutable valido para los diferentes S.O. soportados.

      Saludos

  8. En si, ya tengo mi novela visual pero quiero publicarlo en una pagina web que estoy haciendo, en si como lo publicaria o mejor dicho como hago para q la novela sea online ? o solo se puede hacer un ejecutable ?

    1. Hola Yovana

      Para que fuera online, el servidor tendría que estar posibilitado para correr la librerías de RenPy, deberás buscar un servidor con estas capacidades, la otra forma de distribuirlo gratis y mas popular, es alojar el archivo en un gestor de descargas y compartir el enlace en webs, blogs etc…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


Archivos

Categorías

  • No hay categorías

Categorías

  • Categorías
    • No hay categorías

A %d blogueros les gusta esto: