class_10

La App Makers

Que tal todos? Tardé en hacer este post porque intentaba reparar un bug que creé sin querer en el código de mi juego xD. La estupidez a veces me abunda jsjsjs.
Espero que estén muy bien para recibir este post, ya que trabajaremos con algo que es bastante interesante para implementar en nuestro Juego/Novela Visual! Con esto, damos el puntapié inicial hacia las Declaraciones y Manejo básico de Variables en el juego!
Abre tu editor de texto y ponte manos a la obra!


1. QUÉ SON LAS VARIABLES EN GENERAL? (PROGRAMMING)

Para empezar a introducirnos con esto, las variables en el entorno informàtico, son elementos que intentan guardar un tipo de información en el almacenamiento del sistema. Estas variables pueden ser volátiles para que cambien solo cuando el programa está funcionando, o si necesitas que ese cambio en la variable se guarde, se puede crear una variable no volátil. En el caso de los juegos hechos con Ren’Py, los estados o contenido de las variables que no sean volátiles, se almacenan en un “Archivo Persistente”.

Puede que en este punto aún te estés imaginando que estamos hablando de las Variables de Matemáticas, pero en el mundo de la programación en general, una variable no es seudónimo de una ecuación matemática, sino que también podemos trabajar con el almacenamiento de texto (por ejemplo el Nickname de Jugador), el almacenamiento de un estado lógico/booleano que cambie ciertos sectores de nuestro código, o bien, algún dígito que se nos ocurra, con el que podamos llamarlo con un nombre simbólico o etiqueta.

Uff… Creo que con eso, ya ha quedado un poco claro de qué va todo esto. A partir de ahora, pondremos en práctica las variables en algunas características que podemos añadir a nuestro juego!


2. ADVERTENCIA!!!. ANTES DE OPERAR UNA VARIABLE, HAY QUE INICIALIZARLA!!!

Hay algo que debemos tener en cuenta antes de usar las variables. Antes de operar a una variable, debemos declararla o inicializarla dentro del código, que esto significa dejar a esta variable en un estado neutral o vacío. Por cierto, debemos asignar un “nombre simbólico” o “etiqueta” a nuestra variable, para poder usarla en el código.
Si no inicializamos la variable y la ocupamos directamente con un valor o un estado, recibiremos un lindo error en la consola de arranque de nuestro juego, así que más te vale seguir las instrucciones xD.
Para declarar/iniciar una variable, podemos hacerlo de dos formas en el entorno de Ren’Py. Una, es definiendola como por defecto de esta forma :

default respuesta_1 = None

O bien, podemos simplemente usar el símbolo de dólar, de esta forma :

$ respuesta_1 = None

Con esto ya hecho, la variable está inicializada y lista para ser operada dentro del código. Luego de esto podemos usar variables que actualicen el estado actual de esa variable, a un nuevo estado que provocará ciertos efectos en nuestro programa. Esas variables que cambian/actualizan estados, son conocidas en Ren’Py con el apodo de “Flags” (banderas).

Ya con esto finalizado, debemos seguir con otro asunto que va de la mano con las variables. Con esto me refiero a las condiciones para que se ejecute cierta acción dentro del programa, respecto de lo que dice una variable.
Las condiciones están conformadas por if, elif y else, de las cuales se utilizan para lo siguiente :

  • if: Si esa variable cumple con “X” condición, el programa debe hacer “A” acción.
  • elif : Si esa misma variable cumple con “Z” condición, el programa debe hacer “B” acción.
  • else: Si esa misma variable no cumple con ninguna condición, el programa debe hacer “C” acción.

Dentro del código podemos usar solo if y else si solo tratamos con dos acciones, pero si nuestro código desea hacer 3 o más acciones, debemos usar elif para describir las condiciones para las acciones adicionales de nuestro programa.

Con esto entendido y tomado como base, podemos continuar con el siguiente ítem, ya que ahí, les enseñaré a ocupar de lleno una variable. Vamos allá!


3. PONIENDO EN PRÁCTICA UNA VARIABLE DENTRO DE NUESTRO JUEGO

Este ítem lo he hecho con el principal objetivo de mostrarles algunas de las cosas en que podemos utilizar las variables dentro de nuestro juego!. El ítem anterior se relaciona fuertemente con este ítem ya que vamos a tratar con declaración de variables, actualización de una variable y por supuesto, revisar si una variable cumple con las condiciones para ejecutar acciones dentro de nuestro juego/programa.
A continuación, les enseñaré a ocupar 3 tipos de variables, junto con un ejemplo donde puedes poner en práctica en el código!

3.1 USANDO ESTADOS LÓGICOS/BOOLEANOS COMO VARIABLE :

[Screenshot de una Toma de Decisiones en el Proyecto TTFL!]

Una de las formas más primitivas en las que podemos usar variables en programación, es usando estados lógicos para poder cambiar ciertos sectores de nuestro código. Lo llamo primitivo porque todo sistema de cómputo funciona a base de un mecanismo binario (0 como falso y 1 como verdadero). En este caso le diremos explícitamente al programa si el estado es verdadero (True) o es falso (False).
Dentro de nuestro juego, podemos usar este tipo de variables para crear rutas dentro de nuestra novela en el caso de que la Toma de Decisiones solo contenga dos opciones para elegir. En este caso, una variable con estados lógicos va a ser suficiente. Mira el paso a paso!

[Screenshot Paso 1]

Paso 1 : Antes que todo, se debe declarar la variable para comenzar a operarla dentro del código. Una variable debe contener un nombre con el que lo llamaremos en algún punto de nuestro código.
Para declararla, debemos hacerlo de la siguiente forma :

$ respuesta_1 = None


[Screenshot Paso 2]

Paso 2 : Luego de haber declarado la variable, debemos encontrar una característica que necesite operar con este tipo de variables. Por ejemplo, yo llamé a la variable como “respuesta_1” porque quiero usarla en un menú de elección donde el jugador va a tomar una decisión. Como esta decisión tiene dos opciones, el usar estados lógicos nos va a venir perfecto.
Este es el menú de toma de decisiones en donde ocuparé variables “Flags” con estados lógicos para actualizar el estado por defecto de cuando la variable fue declarada. El efecto de estas variables se hará presente cuando el jugador haga click en uno de los botones de decisión, haciendo que la historia se desenvuelva en una de las dos rutas. Mira a continuación :

menu:

    player “Qué debo responder a Kaori?…”

    “Amanecí con todas mis energías!…”:
       $ respuesta_1 = True

    “Tengo mucho sueño…”:
        $ respuesta_1 = False

Como pudiste ver, las dos alternativas de elección, poseen un Flag que actualiza la variable actual, pasando de estado None a True, o bien, de estado None a False.


[Screenshot Paso 3]

Paso 3 : Lo que sigue del menú, es declarar las condiciones para esta variable que estamos tratando. Las condiciones, tendrán la función de dirigir la historia por una u otra ruta.
En este punto haremos uso del if (si la variable es True) y else (si la variable es False). Pon atención :

if respuesta_1:
    kaori “Genial!.”

else :
    kaori “Eso te pasa por quedarte despierto hasta tarde…”

NOTA : else no requiere de que agregues nuevamente la etiqueta.

Recuerdas que en el ítem 2 señalé para qué servía if, elif y else?. En este caso if nos dice que si respuesta_1 es True, nos mostrará a Kaori diciendo “Genial!.”, pero else nos dice que si respuesta_1 no es True, nos mostrará otro diálogo de Kaori.
Esta es una de las cosas en las que puedes ocupar variables de estado lógico!. A medida que transcurra el tiempo, se te puede ocurrir más cosas en las que puedes implementar este tipo de variables!.


3.2 USANDO CIFRAS NUMÉRICAS Y OPERACIONES ARITMÉTICAS PARA EL CONTROL DE UNA VARIABLE :

[Ejemplo del Proyecto TTFL donde se usaron variables numéricas para las calificaciones del protagonista, respecto de un minijuego]

Acá nos pondremos más serios. Este tipo de variables se puede usar para fines estadísticos de nuestro juego. Dos ejemplos comunes que se dan en las Novelas Visuales y Juegos de citas, son las vidas que te queda como jugador, o bien, puntos de “afectividad” en el caso de un juego de estilo romántico. Esas características son comúnmente manipuladas por variables numéricas, que se van actualizando respecto del comportamiento del jugador.
Sin salirnos demasiado del margen de la aritmética, los símbolos que se utilizan para las operaciones aritméticas básicas en variables, son los siguientes :

  • + : Adición (Suma).
  • – : Sustracción (Resta).
  • * : Multiplicación.
  • / : División.
  • == : Es igual a.

A continuación, te daré como ejemplo, un contador de Puntos de Afectividad que puedes implementar en un juego de estilo romántico. Pero hey! No te estoy obligando a hacer un juego romántico xD. Solo te estoy dando una idea de como usar variables numéricas.

[Screenshot Paso 1]

Paso 1 : Como siempre, debemos declarar/iniciar la variable. Como en este caso la variable será para indicar puntos de afectividad, la llamaremos como love_points. Por cierto, como trabajaremos con números, podemos reemplazar el None, por el numero cero :

$ love_points = 0

Si queremos mostrar la variable como texto visible para el jugador, debemos escribir la variable en una cadena de texto, encerrando su nombre en corchetes para interpolar el valor en la cadena. Tú eliges si mostrarlo con un objeto text o en el cuadro de diálogos. Esto nos quedará en el código de esta forma :

$ love_points = 0
“Tus puntos de afectividad actuales son : [love_points]

Y eso se nos verá así al arrancar el juego :


[Screenshot Paso 2]

Paso 2 : Ahora si quieres aumentar los puntos de afectividad, podemos usar la aritmética de suma, por lo que podemos sumar una cantidad X y actualizar la variable con esa nueva cantidad.
Por ejemplo, le sumaré 3 a la variable actual, agregando el simbolo “+” justo antes del símbolo “=” :

$ love_points = 0
$ love_points += 3
“Tus puntos de afectividad actuales son : [love_points]

Y entonces, 0 + 3 es igual a :

Y si le sumamos 2 :

$ love_points += 2

Nos va a dar como resultado :

Por otro lado, también podemos poner en práctica las condiciones respecto de una variable numérica!. Mira el Paso 3.


[Screenshot Paso 3]

Paso 3 : Si queremos que el juego reaccione de una forma diferente respecto de cuál es el valor final de una variable numérica, podemos hacer que haya una condición para esa variable. Por ejemplo, si tenemos “X” puntos de afectividad, podemos mostrar un diálogo diferente. Aquí ocuparemos if, elif y else ya que vamos a escribir más de 2 condiciones!. Pon atención :

Si love_points equivale a 1, mostrará el siguiente diálogo :

if love_points == 1:
    “Parece que ya está comenzando a fluir todo esto…”

Si love_points equivale a 3, mostrará el siguiente diálogo :

elif love_points == 3:
    “Voy por buen camino…”

Si love_points equivale a 5, mostrará el siguiente diálogo :

elif love_points == 5:
“Definitivamente me está comenzando a gustar…”

Si love_points equivale a 100, mostrará el siguiente diálogo :

elif love_points == 100:
    “Siento que es un buen momento para confesarme…”

Pero si love_points no equivale a ninguna de las condiciones anteriores (es decir, igual a cero), mostrará el siguiente diálogo :

else:
    “Mierda… No tengo ni una pizca de química con ella…”

Con la última condición me fuí a la mierda xD. En este caso, else aplica si la variable love_points equivale a 0, queriendo decir que el jugador no ha acumulado puntos de Afectividad.


3.3 USANDO UNA CADENA DE TEXTO EN UNA VARIABLE :

Es probablemente lo más fácil que encontraremos en este punto del post ya que haremos que una variable exprese una cadena de texto, la cual no es tan útil a menos de que se trate de registrar el Nickname de Jugador.

[Screenshot para todos los pasos]

Paso 1 : Para este tipo de variables, debemos declarar la variable y actualizarla al instante. La variable la declararemos en estado None, seguido de una variable que actualice el estado None a una cadena de texto. Esta variable tendrá el nombre de “cadena_de_texto” :

$ cadena_de_texto = None
$ cadena_de_texto = “Hola mundo!”

Paso 2 : Como es una cadena de texto, simplemente podemos dar la utilidad de hacer la interpolación a otra cadena de texto, de un objeto text o del cuadro de diálogos, por ejemplo :

[cadena_de_texto]

De la cual se verá así en nuestro juego :

#OffTopic : Sigo insistiendo que este tipo de variable es inútil, a menos que se trate de registrar o interpolar el Nickname de Jugador xD.


4. VARIABLE NO VOLÁTIL : ALMACENAR LOS DATOS DE UNA VARIABLE DE FORMA PERMANENTE

Las variables no volátiles, son las que guardan información de forma permanente en nuestro programa. En Ren’Py, se tratan dos tipos de archivos que almacenan el progreso del jugador : Los archivos save, que contienen las partidas guardadas del juego, y los archivos persistent que se dedican a almacenar los datos de variables no volátiles.
Recuerdas que en el ítem anterior hicimos un contador de puntos de Afectividad?. Lo ideal es de que el juego guarde la cantidad de puntos de Afectividad del jugador, de otro modo, el jugador perderá el progreso, y terminará por eliminar el juego, cosa que no queremos de ningún modo.

Una variable volátil (No guarda datos), es como esta :

$ love_points += 150

Y una variable no volátil (Guarda los datos), es como esta :

$ persistent.love_points += 150

Lo notaste? Viste que agregué “persistent.” antes del nombre de la variable?
Esto indicará a Ren’Py que debe guardar los datos de esta variable en el archivo persistente.

Si la variable es persistente, y quieres usarla en una condición, debes agregar también el “persistent.” antes del nombre de la variable, por ejemplo :

if persistent.love_points == 150

De otro modo, si la declaración y el flag que actualiza a esa variable son persistentes, pero no agregas el “persistent.” en la condición, recibirás un lindo error de análisis en el código xD.
En la interpolación también debes agregar el “persistent.” ya que si solo colocas [love_points] tendrás otro lindo error de análisis xD. Debes interpolar como [persistent.love_points].


Bien señores, declaro a este post como finalizado!. Insisto, si todavía te quedan dudas, hazmelo saber en los comentarios!

NOTA : Es posible que la App Makers no pueda redireccionar correctamente a un link, o puede que no esté preparado para descargar archivos. Intenta abrir los siguientes links en un navegador como Google Chrome.

Entra a la web de Ren’Py y descarga la última versión del motor!

Cada vez me queda menos para terminar de desarrollar mi novela visual! Entra al Gameblog y entérate de mi bitácora de desarrollo!

Todavía tienes dudas acerca de este post? Comenta este post o bien, hablame al interno por Telegram!

Siguiente post? Comenzaremos a ver algunas personalizaciones básicas para poder modificar la interfaz de juego. Si ya empezaste a hacer tu proyecto, creo que ya has notado que la interfaz por defecto de Ren’Py, es una m***** xD. Me despido muchachos! Hasta la próxima!


Navega entre los posts de este hilo!

<< Ir al Post #9Ir al Post #11 >>

<< Eres nuevo? Click aquí para ir al Post #1 >>


ElectroBasicsYT – CharlieFuu69 Creations!

  • Tutorial
  • Programación | Programas, aplicaciones
0 Comentarios

Contesta

CONTACTANOS

Esta es su red social de tecnología para compartir tus ideas y proyectos .Puedes enviarnos un correo si tienes dudas.Nos vemos

Enviando

Nuevo informe

Cerrar

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account