4.3 DESARROLLO DEL JUEGO «PIANO»

Sin valoraciones

4.3 DESARROLLO DEL JUEGO "PIANO"

Para entender bien como se ha desarrollado el serious game, lo primero de este apartado será explicar cómo funciona Unity y, tras ello, la integración del Leap Motion en él. Se añaden en el tercer apartado los diagramas de flujo y en el último se describirán los scripts que se han programado para el correcto funcionamiento del juego.

4.4.1. CÓMO FUNCIONA UNITY

Como podemos observar en la figura 39, la pantalla de Unity se divide en las siguientes pestañas:

  • Scene View (vista de la escena). En ella podremos ver los distintos objetos que se han incorporado a la escena y, directamente sobre ella, se pueden variar las posiciones, orientaciones, tamaños, etc.
  • Game View (vista de juego). El desarrollador puede visualizar en esta pantalla cómo se verá la escena cuando juegue el usuario. Cuando se pulsa el icono de play que se encuentra arriba, se puede incluso simular el juego, pudiendo hacer mientras variaciones en la vista de la escena que se verán inmediatamente reflejadas en el juego.
  • Hierarchy (jerarquía). En esta pestaña aparecerán todos los elementos de la escena: cámaras, objetos, scripts, botones, textos, etc.
  • Project (proyecto). Aquí aparecerán todos los recursos que podamos necesitar para el proyecto: imágenes, audios, materiales, texturas, escenas, scripts, prefabricados, etc. En la figura 39, por ejemplo, podemos ver la lista de escenas que se han utilizado para el serious game, siendo la lista de elementos que aparecen en la jerarquía los pertenecientes a la escena en que se adapta el teclado al usuario (Level1_Ajuste).
  • En esta pestaña aparecen todas las propiedades del elemento seleccionado en la jerarquía. Contiene su posición, tamaño, materiales, texturas… y se incluyen, scripts, audios, etc.

4.3 DESARROLLO DEL JUEGO "PIANO"

Figura 39: Pantalla de trabajo de Unity.

4.42 LEAP MOTION EN UNITY

Para empezar, hay que añadir el controlador del Leap Motion a la escena y así poder interactuar con él durante el juego. Para ello, siguiendo las instrucciones que se encuentran en la documentación en la página oficial de Leap Motion [35], hay que descargarse el paquete de recursos e importarlo desde Unity.

En la pestaña Project, dentro de los recursos, aparecerán tres nuevas carpetas relativas al Leap Motion como podemos observar en la figura 40 (LeapC, LeapMotion y Plugins). Dentro de la carpeta LeapMotion encontraremos el controlador y los prefabricados que representarán las manos del usuario durante el juego. Estas deben ser añadidas a la jerarquía de la escena como, de nuevo, podemos observar en la figura 40, de modo que durante el juego aparecerán las manos que se muestran en la game view de la imagen.

videojuegos

Este diseño de las manos viene perfectamente desglosado con sus dedos y estos a su vez fraccionados en sus tres falanges. Esto permite sacar el máximo partido de ellas, por ejemplo, a la hora de sacar datos o agregarle una funcionalidad, como en este proyecto, añadirle luz a la falange distal para señalizar con qué dedo se debe pulsar la tecla.

4.3 DESARROLLO DEL JUEGO "PIANO"

Figura 40: Prefabricado de las manos del Leap Motion en Unity.

4.4.3. DIAGRAMAS DE FLUJO

ESCENA 0: Pantalla inicial

4.3 DESARROLLO DEL JUEGO "PIANO"

ESCENA 1: Pantalla de ajustes

4.3 DESARROLLO DEL JUEGO "PIANO"

ESCENAS 2, 3 Y 4: Juego

4.3 DESARROLLO DEL JUEGO "PIANO"

ESCENA 5: Pantalla de resultados

4.3 DESARROLLO DEL JUEGO "PIANO"

Como se explicó en el apartado anterior, los botones de «salir», «configuración», «escena siguiente» y «escena anterior» están disponibles durante el juego y pueden ser pulsados en cualquier momento, si esto ocurre se interrumpirá el diagrama que esté actuando y ocurrirá lo siguiente:

4.3 DESARROLLO DEL JUEGO "PIANO"

Los scripts utilizados para realizar las acciones de los diagramas son los que se exponen a continuación. Se explicarán brevemente en el siguiente apartado (4.4.4.) y se puede encontrar el código completo en los anexos.

(1) GetInput

(2) Sliders

(3) ConfTeclas

(4) Colores

(5) Tecla_(cada tecla tendrá su propio nombre y código)

(6) Botones

(7) BarChart

4.4.4 DESCRIPCIÓN DE LOS SCRIPTS

A continuación se incluye una breve descripción de los scripts que se han utilizado para la elaboración del serious game. La lista se encuentra ordenada según su aparición en el juego. El código completo de cada uno de ellos se incluye en los anexos.

4.3 DESARROLLO DEL JUEGO "PIANO"

Figura 41: Listado de scripts en Unity.

GetInput

Se utiliza en la pantalla inicial para:

  • Recoger la ruta donde se desea guardar el documento con los resultados.
  • Recopilar e imprimir en dicho documento los datos del usuario que se introducen por teclado (nombre y apellido, mano afectada y motivo de la rehabilitación).
  • Toma del ordenador la fecha y la hora en la que se está realizando la sesión y la anota en el documento.
  • En el caso de que sea la primera vez que el paciente juega, se creará un archivo CSV que tendrá por nombre el nombre y apellidos introducidos. Este archivo CSV puede ser fácilmente importado a Excel.
  • En cambio, si el paciente ya ha jugado alguna vez, el programa reconocerá el documento con su nombre y añadirá los resultados de la sesión junto con los anteriores.

MenuScript

Se usa en la primera escena para comenzar el juego, es decir, pasar a la siguiente pantalla, en el caso de que se presione el botón de play o finalizar el juego si se pulsa el botón de salir.

Sliders

Este script se encarga de regular el tamaño y posición de las teclas y de las manos virtuales en la escena 1. Puesto que se recurrirá a esta pantalla tanto antes de comenzar el juego como en cualquier momento en que el usuario desee variar algo del diseño, lo primero que hace el código es situar los elementos tal y como se colocaron previamente o mantenerlos en la posición inicial que viene por defecto.

Cuando el usuario haga uso de los deslizadores para adaptar las teclas y las manos a su gusto o a la necesidad de la terapia, el script colocará las teclas según la distancia entre ellas, su grosor y la altura de las manos requeridas. Esta información se guardará en variables públicas para ser leídas por los scripts que manejan a las otras escenas y mantener el mismo diseño en ellas.

Este mismo script será el encargado de salir del juego, en el caso de que el usuario así lo requiera pulsando el botón de salir, y de cambiar de escena. En el caso de que se encuentre en la fase previa al juego, al pulsar la flecha hacia la derecha la siguiente pantalla será la escena 2 en que se realiza el juego con tan solo la mano derecha. Pero si nos encontramos en esta pantalla porque se ha pulsado el botón de configuración durante el juego, al pulsar la flecha hacia la derecha el programa recordará a través de la variable pública level (figura 42) desde qué escena (o nivel, como entiende Unity) fue llamado y volverá a él.

4.3 DESARROLLO DEL JUEGO "PIANO"

Figura 42: Código para el cambio de escena.

ConfTeclas

El nombre de este script viene de «configurar las teclas». Será lo primero que se lea al iniciar cualquiera de las escenas de juego (2, 3 ó 4) para utilizar la distancia, grosor y altura de las teclas según se adaptaron en la pantalla de configuración. El programa reconocerá en qué nivel se encuentra y dependiendo de ello colocará centradas tan solo las cinco teclas de la derecha para jugar con la mano derecha, las cinco de la izquierda para jugar con la mano izquierda o las diez teclas para jugar con ambas manos.

Colores

Esta secuencia de comandos tiene la tarea de llevar a cabo el juego y recopilar los tiempos. Tras reconocer en que escena se encuentra, se ejecutarán cuatro series de pulsaciones de la/s mano/s que correspondan, las dos primeras serán ordenadas como ya se explicó en el apartado 4.2. y las dos siguientes serán aleatorias.

videojuegos

Como se indicaba en el diagrama de flujo se realizarán las siguientes tareas:

  • Se ilumina la falange distal del dedo para señalizar al jugador con cuál debe pulsar la tecla.
  • Se habilita el sonido de la tecla de la que es el turno para que se pueda reproducir el sonido cuando sea pulsada.
  • La tecla que corresponda se coloreará de negro para señalizar que es la que hay que presionar.

En este momento se iniciará un cronómetro y el código quedará a la espera de que la tecla sea pulsada. Cuando esto ocurra, se guardará el tiempo en la variable que le pertenezca y se reiniciará el cronómetro. Por último, se deshabilitará el sonido de esa tecla.

IgnoreCol

Su nombre hace referencia a «ignorar colisiones». Este script es el responsable de indicar entre qué componentes deben ignorarse las colisiones, es decir, entre todos los huesos de cada dedo y las teclas que no se correspondan.

En el ejemplo de la figura 43 se muestra el código que ordena que se ignore la colisión entre la tecla correspondiente al pulgar derecho (TPD) con los tres huesos de los dedos índice, corazón, anular y meñique, pero no del pulgar ya que esa colisión es la permitida.

4.3 DESARROLLO DEL JUEGO "PIANO"

Figura 43: Código que permite que se ignoren las teclas con los dedos que no le corresponden.

Tecla_X

Existe un código con este nombre para cada tecla, siendo X el nombre del dedo de cada mano (por ejemplo, Tecla_PulgarD para el dedo pulgar derecho y Tecla_PulgarI para el dedo pulgar izquierdo). Al colisionar la tecla con su respectivo dedo se comprobará si el audio está habilitado y en caso afirmativo se reproducirá. Además, si la tecla es negra por ser su turno de ser pulsada, al presionarla volverá a su color blanco inicial para indicar que el ejercicio ya se ha realizado correctamente.

Botones

Es el encargado de detectar si alguno de los botones de la pantalla («salir», «configuración», «siguiente escena» o «escena anterior») ha sido seleccionado por el usuario. En tal caso realizará la acción que le corresponda:

  • Salir: de haberlos, guardará los resultados que se hayan realizado hasta el momento en el archivo y saldrá de la aplicación.
  • Configuración: detectará en qué nivel se encuentra y lo guardará en la variable pública level que se mencionaba en la descripción de Sliders para saber a qué escena debe regresar.
  • Escena siguiente o anterior: de haberlos, guardará los resultados que se hayan realizado hasta el momento en el archivo y pasará a la escena solicitada.

BarChart

Se calculará la media aritmética de los ocho tiempos empleados con cada dedo: los cuatro pertenecientes al ejercicio que se realiza con una mano más los cuatro empleados en el ejercicio con ambas manos. Si algún ejercicio no se realiza o no se termina, esos tiempos nulos serán descartados del cálculo de la media.

En la pantalla aparecerá un diagrama de barras donde cada barra de color pertenece a uno de los dedos de la mano izquierda o derecha y su altura corresponde al tiempo medio que se explicaba en el párrafo anterior.

Con este diagrama es fácil realizar una comparativa visual de con qué mano y con qué dedos le está resultando más difícil al paciente realizar los ejercicios.

TextOverButton

Se encarga de hacer aparecer bajo los botones, al pasar el ratón por encima, un texto explicativo de su función.

4.4 TRABAJOS PREVIOS

Con el mismo software y hardware de este proyecto se realizaron otros dos juegos que se quedaron en versiones iniciales pero sirvieron de ejemplo para que los terapeutas pudiesen ver el funcionamiento del Leap Motion y cómo se puede trabajar con él.

videojuegos

El primero de ellos trabaja los movimientos laterales y el alcance. En este juego aparecen unos cubos a distintas alturas y distancias y el paciente deberá ser capaz de tocarlos. Cada vez que se consiga tocar un cubo, este cambiará de color y caerá al suelo para indicar que se ha logrado. El paciente tendrá el reto de tirar todos los cubos poniendo a prueba el alcance y movimientos de su hombro.

4.3 DESARROLLO DEL JUEGO "PIANO"

Figura 44: Juego de los cubos antes de tocar ninguno.

4.3 DESARROLLO DEL JUEGO "PIANO"

Figura 45: Juego de los cubos tras alcanzar uno de ellos.

El segundo juego lleva a la realidad virtual un ejercicio que se realiza en pacientes que padecen de negligencia visuoespacial. Estas personas no ven lo que se encuentra en el lado opuesto a la lesión cerebral, es por ello que en el ejercicio que aparece en la figura 46, donde se les pide cancelar todas las líneas que aparecen en la hoja, tan solo en uno de los lados se encuentran líneas tachadas ya que ignoran las que aparecen en el otro lado.

4.3 DESARROLLO DEL JUEGO "PIANO"

Figura 46: Test de cancelación de líneas.

Se ha creado un videojuego con este mismo ejercicio con la variante de que se pueden colocar las líneas a distintas profundidades. El paciente deberá tocar todas aquellas que estén en su campo de visión y se irá llevando una cuenta (véanse los marcadores en la parte superior de la pantalla de las figura 47 y 48) de cuántas líneas se han tirado de cada lado.

4.3 DESARROLLO DEL JUEGO "PIANO"

Figura 47: Test de cancelación antes de comenzar a jugar

4.3 DESARROLLO DEL JUEGO "PIANO"

Figura 48: Test de cancelación tras tirar dos líneas de cada lado.

Las líneas solo reaccionarán al colisionar con la punta del dedo índice para evitar que puedan ser derrumbadas sin querer con cualquier otra parte de la mano o brazo al intentar alcanzar otra más lejana.

Compártelo en tus redes

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest

Valore este curso

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestra web. Si sigues utilizando este sitio asumimos que estás de acuerdo. VER