Friday, April 12, 2019

Mientras tanto, en Plutón...

Después del atracón de disparadores vamos con una cosa más ligera, el contenido del archivo adventure.json.

Sí, empezamos por el medio

El contenido de adventure.json define características generales del juego que no tienen cabida en otros archivos y que serán almacenados en un objeto tipo Adventure.java contenido en la clase AdventureApplication.java, que hereda de la clase Application.java y será instanciada al lanzar la aplicación. El contenido del archivo adventure.json de La Aventura Original tiene este aspecto:

{
   "initialLocation":1,
   "introText":"¡La Gran Caverna! Origen de leyendas sobre fabulosas riquezas e inmensos peligros. ¿Mito o realidad?\n\nSiguiendo el borroso mapa que te dio un extraño (por cierto muy rico) a quien salvaste de las garras de unos trolls, has llegado a este apacible valle.\n\nPresientes que estás muy cerca, pero de repente el viejo mapa se deshace en tus manos mientras una cálida brisa te susurra: 'sólo los valientes que dominen la magia merecerán mis tesoros'...",
   "introButtonText":"COMENZAR LA AVENTURA",
   "introImage":"intro_image.png",
   "adventureName":"La Aventura Original",
   "inventoryLimit":7
}

La función que cumple cada elemento es bastante evidente:

  • initialLocation. El identificador de la localización inicial del jugador.
  • introText. El texto que se mostrará en la pantalla de introducción del juego si se quiere usar la pantalla por defecto.
  • introButtonText. El texto que se mostrará en el botón que permite iniciar la partida en la pantalla de introducción del juego. Del mismo modo que en el caso de introText, el diseñador puede optar por usar una pantalla de introducción personalizada.
  • introImage. Lo han adivinado, el nombre del archivo de imagen que se mostrará en la pantalla de introducción.
  • adventureName. El nombre del juego.
  • inventoryLimit. El límite de objetos que puede llevar el personaje. Lo más común es que los objetos tengan un peso de 1, lo que limitaría el número de objetos que el personaje puede cargar a 7, pero es posible hacer que un objeto ocupe más -o menos- espacio en el inventario tal y como hemos visto al hablar de los objetos.

En un futuro será en este archivo donde se definan los diferentes módulos que pueden formar la aventura, por ahora todos los objetos, localizaciones y otros elementos del juego se cargan en un sólo bloque.

Ale, a aventurear.

Saturday, April 06, 2019

Mientras tanto, en Plutón...

No sé si se acuerdan, pero cuando en su momento hablamos de las localizaciones nos quedaron pendientes un par de atributos que tenían relación con los disparadores y cuando hablamos de los propios disparadores había por ahí algún atributo cuyo funcionamiento no estaba implementado. A que no adivinan de qué vamos a hablar hoy.

Más diversión con localizaciones

Los atributos de la clase GameLocation que habían quedado pendientes son onEnterTriggers y onExitTriggers. Estos atributos contienen un array de objetos GameTrigger que se comprobarán cada vez que el jugador entre o salga de una localización en lugar de como respuesta a una acción realizada con un objeto. Aparte de esta diferencia en la condición de activación, el resto del funcionamiento de estos disparadores es idéntico al que explicamos en la entrada anterior cuando hablamos de las acciones.

El otro atributo es locationId, un atributo de la clase GameTrigger que especifica el identificador de la localización en la que el disparador puede ser activado. La implementación de esta funcionalidad fueron, literalmente, dos líneas de código, pero es la típica cosa que vas dejando atrás mientras te enfangas con cosas más críticas.

Y eso es todo por hoy. Ale, a cazar tesoros.

Thursday, April 04, 2019

Life in the Static

De tanto hablar de motores y jotasones corremos el riesgo de olvidar para qué estamos aquí: para perder el tiempo. Así pues, aquí les dejo un jueguete para perder 15 minutos de su vida.


De nada.