En la clase anterior, habíamos aprendido como crear escenas (##) y como conectarlas con anclas ([hola](/soy-un-ancla)), además aprendimos que toda ficción interactiva empieza por un bloque historia (#) y cuyo contenido no debe contener ningún ancla, la primera escena debe de anclarse en el título.

Habíamos también dejado un ejercicio pendiente que era este:

Crear un juego donde dependiendo de tu sexo, el texto te de un nombre de acuerdo a tu género. Ejemplo: En el texto puedes preguntarle ¿Eres hombre o mujer? Si el lector elije hombre, el texto dirá que se llama Pedro, si elije que es mujer el texto debe decir que se llama Matilda.

Quizás hiciste algo como esto:

# [Sexos](/elige-tu-sexo)

Una ficción interactiva creada por Billy Fernandez que te da un nombre según tu sexo. A continuación elige.

## Elige tu sexo

¿Qué eres? ¿[hombre](/hombre) o [mujer](/mujer)?

## Hombre

Tu nombre es Pedro

## Mujer

Tu nombre es Matilda

Si lo corres en ficdown.com/playground Notarás que pasa algo que no habíamos visto en la clase anterior. Cuando El juego llega a una escena que no tiene anclas, él automáticamente interpreta que es el final de la historia.

Una historia puede tener más de un final. En otra clase más adelante analizaremos las estructuras multitrama, así que no te preocupes por eso. Tampoco te preocupes por el texto que sale al inicio (Click to start..) para comenzar a jugar o el que sale al final (Click here to start over) para reiniciar el juego por el hecho de que estén en inglés, en próximas clases también veremos como modificarlos. Por ahora aguantemos esa forma bilingüe.

Para el ejercicio tuvimos que crear tres escenas, pero, ¿No podría simplificarse más? Claro que sí, si usamos el estado del jugador. Esto se refiere a una colección de variables o interruptores que se asignan al jugador y que pueden ser rastreables a lo largo de la historia. Usando esto es como sabemos si el usuario ha echo click o no sobre un enlace, si ha entrado o no a una escena, si ha visto o no ha visto determinado texto… Por ende, una variable en ficdown solo puede tener dos valores: verdadero o falso (si lo ha hecho o no lo ha hecho, si está encendido o apagado, etc). En otros motores de ficción interactiva existen variables mucho más complejas que estas, pero lo que aprendas aquí podrás aplicarlo en todos ellos.

Por defecto, todos las variables están “apagadas”, para encenderlas debemos usar una palanca en el ancla. Si vamos al ejemplo anterior, para saber si el jugador ha hecho click en “mujer”, reconstruiríamos el ancla de la siguiente forma:

## Elige tu sexo

¿Qué eres? ¿[hombre](/hombre) o [mujer](/mujer#var-mujer)?

Cuando la persona haga click sobre mujer, la variable “var-mujer” se encenderá. La verdad es que podemos ponerle el nombre que queramos a la variable, yo solo lo puse así para que se entendiera, igual podríamos llamarle “#pepito” o “#ameba-desparasitada”, pero recuerda, una buena práctica es usar nombres que te ayuden a saber para qué sirve dicha variable. Los nombres de variables deben ser en minúsculas, sin espacios o usando guión para separar las palabras, es decir, el mismo concepto de normalización de los nombres para las escenas que se usan en los anclajes.

Ahora, ¿cómo podemos evaluar si una variable ha sido activada? Vamos a valernos de las condicionales. Para insertar una condicional en un ancla, envolveremos un texto que queremos que se muestre solo si la variable “var-mujer” ha sido activada, de esta forma:

Tu nombre es [Juliana Alcántara](?var-mujer)

El texto encerrado en el ancla en este caso no es clickeable, lo que en realidad pasará aquí es que si en la escena anterior se ha clickeado “mujer”, entonces se activará la variable “var-mujer”. Cuando entre en esta escena, el ancla evalúa si var-mujer está activado, si es así, el texto “Juliana Alcántara” será mostrado, en caso de que no se haga click, la variable no será activada, por lo tanto el texto no será mostrado. Esto nos ayuda a reducir la cantidad de escenas del ejercicio a tan sólo dos. Vamos a fusionar las dos últimas escenas, y la llamaremos “tu nombre”. Así quedaría:

# [Sexos](/elige-tu-sexo)

Una ficción interactiva creada por Billy Fernandez que te da un nombre según tu sexo. A continuación elige.

## Elige tu sexo

¿Qué eres? ¿[hombre](/tu-nombre#var-hombre) o [mujer](/tu-nombre#var-mujer)?

## Tu nombre

Tu nombre es [Pedro](?var-hombre)[Matilda](?var-mujer)

Lo corremos en el playground, ¡y funciona igualito que el anterior! Pero con menos. Es esencial que siempre busquemos la forma mas simple y funcional de hacer las cosas en la ficción interactiva. Incluso, podemos simplificar mucho más nuestra historia si incluimos un carácter de barra | en una ancla que contenga una condicional, por ejemplo:

[hombre|mujer](?sexo-hombre)

El texto a la izquierda de la barra aparecerá solo cuando la variable “sexo-hombre” esté activada, de lo contrario, si no está activada, saldrá el texto de la derecha. Sabiendo esto, podemos economizarnos una variable en el ejercicio:

# [Sexos](/elige-tu-sexo)

Una ficción interactiva creada por Billy Fernandez que te da un nombre según tu sexo. A continuación elige.

## Elige tu sexo

¿Qué eres? ¿[hombre](/tu-nombre#var-hombre) o [mujer](/tu-nombre)?

## Tu nombre

Tu nombre es [Pedro|Matilda](?var-hombre)

Notas que solo puse una palanca en “hombre” y en “mujer” no puse nada. ¿Por qué? Porque cuando el usuario haga click en “mujer”, la variable “var-hombre” no será encendida, por ello, el texto que se mostrará en la escena “tu nombre” será Matilda. En el caso que presionemos en “hombre”, var-hombre será activada y en vez de mostrarse Matilda en la siguiente escena, será Pedro.

¡Pruébalo! Verás que hace exactamente lo mismo que la primera vez que hicimos el ejercicio, pero con mucho menos texto en el código. Hay varias razones por las cuales debemos optimizar siempre nuestro juego, pero para ya concluir esta clase solo resaltaré dos:

  1. La mayor parte de tu tiempo no lo pasarás escribiendo, sino leyendo lo que ya has escrito. Mientras más compacto sea el código, mientras más nombres con sentido uses en escenas y variables, mucho más fácil te será entender que objetivo tenías al crear tal escena o tal variable.
  2. El otro asunto es que mientras más escenas y variables uses más recursos del dispositivo donde corra la historia necesitarás. Es cierto que hay dispositivos muy potentes tanto en computadoras como en los smarthphones, pero existen otros tipos de dispositivos como los ereaders donde el espacio en disco es muy pequeño y la memoria reducida. Recordemos que uno de los objetivos de este curso es lograr la multiplataforma, y eso solo lo lograremos con un buen diseño y optimizando lo más que podamos las variables y condicionales que usemos.

Ejercicios propuestos

Crear un juego donde el jugador sea un boxeador que se enfrenta a su enemigo y deba descubrir su punto débil. Si el jugador falla y es golpeado por el enemigo, muere.


<<CLASE ANTERIOR
CLASE SIGUIENTE>>


¿Quieres saber más? ¡Déjate atrapar por las redes!

Comparte este artículo: