Ir al contenido principal

Back to work!

¡Hola! Estoy emocionado de anunciar que he retomado la actividad en mi blog "Jugando Haciendo Juegos" después de una pausa. En esta nueva etapa, el blog se centrará en proporcionar información valiosa desde dentro de la industria de los videojuegos, incluyendo trucos, curiosidades, herramientas, recursos y consejos sobre cómo crear videojuegos desde la comodidad de tu habitación utilizando Unity. El blog ya cuenta con varios artículos útiles que pueden servir como recursos iniciales. Por ejemplo, hay guías detalladas sobre cómo hacer copias de seguridad de tu código de Unity con GitHub, lo que es crucial para la gestión de versiones y el trabajo colaborativo. También encontrarás tutoriales sobre el diseño de interfaces de usuario, el desarrollo de controladores de personajes y cómo crear un PressKit para tu juego. Mi objetivo es compartir conocimientos prácticos y experiencias personales para ayudar tanto a principiantes como a desarrolladores más avanzados a mejorar sus hab

Los jugadores a través de la interfaz de usuario (Parte 1)

A partir del trabajo de Jesse Schell (The Art of Game Design) y Sean Baron (Cognitive Flow) me gustaría profundizar el mundo de las interfaces para videjuegos y que tener en cuenta cuando las diseñamos para nuestros juegos.

La interfaz de usuario es la herramienta que utiliza el jugador para comunicarse con el juego, es donde el jugador y el juego se unen. Cuando la interfaz falla, la experiencia que surge de la interacción jugador-juego no funciona. Es crucial entender cómo funciona nuestra interfaz de juego y hacerla tan robusta, y tan invisible como podamos.


El objetivo de una interfaz es hacer que los jugadores sientan el control de la experiencia de juego, además puede ser bonita y fluida, pero la sensación de usuario es lo primordial. En el diseño de juegos, la interfaz no es simple ni fácil de describir. Interfaz puede significar muchas cosas: un controlador de juego, un dispositivo de visualización, un sistema de manipulación de un personaje virtual, la forma en que el juego comunica información al jugador y muchas otras cosas. 

En este contexto la interfaz debe posibilitar que el jugador se comunique con el juego para conseguir sus objetivos. Cuando la habilidad para jugar es demasiado baja y el objetivo demasiado difícil, el jugador se vuelve ansioso. Alternativamente, si el objetivo es demasiado fácil y habilidad demasiada alta, el jugador se aburre. Sin embargo, cuando la habilidad y la dificultad son aproximadamente proporcionales, las personas entran en estados de flujo.

Flujo, el aburrimiento, y la ansiedad que se relacionan con dificultad de la tarea y el nivel de habilidad del usuario. 
Adaptado de Csikszentmihalyi, 1990.

Mientras el jugador esta en un estado de flujo se experimenta:
  1. Extrema atención en una tarea.
  2. Un sentido de control activo.
  3. Fusión de la acción y la conciencia.
  4. La pérdida de la conciencia de sí mismo.
  5. La distorsión de la experiencia del tiempo.
  6. La experiencia de la tarea de ser la única justificación necesaria para continuarlo.
Un diseñador de videojuegos debe conocer si la interfaz diseñada ayuda a mantener este estado entre el jugador y el juego. Cuando los jugadores usan la interfaz ¿hace lo que se espera? ¿Si no, porque no? ¿La interfaz es fácil de dominar o difícil de dominar? ¿Los jugadores sienten que tienen una fuerte influencia sobre el resultado del juego? Si no, ¿cómo puedes cambiar eso? 

Csikszentmihalyi también esbozó cuatro características que se encuentran en las acciones que llevan a un equilibrio entre la habilidad y dificultad, lo que aumenta la probabilidad de estados de flujo. En concreto, se trata de tareas que:
  1. Tener objetivos concretos con reglas manejables.
  2. Exigir acciones para alcanzar los objetivos que se ajustan dentro de las capacidades de la persona.
  3. Tener una retroalimentación clara y oportuna sobre el desempeño y el logro de metas.
  4. Disminuir la distracción ajena, facilitando de este modo la concentración.


La interfaz de usuario es la herramienta y mantener el estado de flujo del jugador es su objetivo. La interfaz es todo lo que hay entre ellos. Es forma en que el jugador toca algo para hacer cambios en el mundo. 

Si bien hay momentos en que la entrada y la salida físicas están conectadas directamente a elementos en el mundo del juego, hay otros momentos en que hay cierta cantidad de interfaz intermedia. La puntuación, los puntos de daño cuando atacamos un enemigo, la parte de mundo que visualizas a través de la cámara virtual en un juego 3D forman parte de una capa conceptual que existe entre la entrada/salida física y el mundo del juego. Esta capa se suele llamar interfaz virtual y tiene elementos de entrada (como un menú virtual donde el jugador realiza una selección) y elementos de salida (como una pantalla de puntuación).



A veces, la capa virtual es tan delgada que casi no existe, pero otras veces es muy densa, llena de botones virtuales, controles deslizantes, pantallas y menús que ayudan al jugador a jugar, pero no son parte del juego. Esta capa virtual debe manejarse con delicadeza, ya que, como señala el diseñador Daniel Burwen, mientras menos abstracción haya en una interfaz, más emocional será la conexión que sentimos con nuestro contenido.


Y eso hace una imagen bastante completa de los principales elementos de la interfaz involucrados en un juego. Además hay que plantearse como esta información pasa entre entre el jugador y el juego. El  mapeo consiste en diseñar como se transforman desde el jugador al juego y viceversa. 

Algunos ejemplos rápidos de los tipos de lógica que se pueden contener son los siguientes:

  1. Entrada física → Mundo: Si al presionar un pulgar, mi avatar se ejecuta, la asignación indica qué tan rápido se ejecutará y qué tan rápido se desacelerará si lo suelto. Si presiono el pulgar con más fuerza, ¿mi personaje corre más rápido? ¿Mi personaje acelerará con el tiempo? ¿Hacer "doble toque" en la barra de pulgar hará que mi personaje salte corriendo?
  2. Mundo → Salida física: Si no puedes ver todo el mundo a la vez, ¿qué partes puedes ver? ¿Cómo se mostrará?
  3. Entrada física → Interfaz virtual: En una interfaz de menú basada en el ratón, ¿para qué sirve hacer clic? ¿Qué hace doble clic? ¿Puedo arrastrar partes de la interfaz?
  4. Interfaz virtual → Mundo: Cuando el jugador manipula la interfaz virtual, ¿qué efecto tiene esto en el mundo? Si seleccionan un elemento en el mundo y usan un menú emergente para realizar una acción en él, ¿esa acción surte efecto inmediatamente o después de algún retraso?
  5. Mundo → Interfaz virtual: ¿Cómo se manifiestan los cambios en el mundo en la interfaz virtual? ¿Cuándo cambian las puntuaciones y las barras de energía? ¿Los eventos en el mundo llevan a ventanas emergentes o menús especiales o cambios de modo en la interfaz? Cuando los jugadores entran en una batalla, ¿aparecerán menús de batalla especiales?
  6. Interfaz virtual → Salida física: ¿Qué datos se muestran al jugador y a dónde van en la pantalla? ¿Qué colores será? ¿Qué fuentes? ¿Los puntos de golpe pulsarán o emitirán un sonido cuando estén muy bajos?
Interfaz física
De alguna manera, el jugador tiene una interacción física con su juego. Hay que  asegurarse de que la interfaz física se adapte bien al  juego teniendo las acciones que deberemos hacer, mapeando de la manera mas directa posible entre las acciones entre el dispositivo físico (teclado, ratón, gamepad, pantalla táctil de un dispositivo móvil, gafas de VR, interfaz personalizada...) y el mundo del juego. El objetivo final debería ser siempre un dispositivo de salida físico que haga que el mundo se vuelva más real en la imaginación del jugador.


El mundo de los videojuegos ocasionalmente atraviesa períodos secos en los que los diseñadores consideran que no es posible crear interfaces físicas personalizadas. Pero el mercado se nutre de la experimentación y la novedad, y, de repente, las interfaces físicas especialmente diseñadas, como la alfombra Dance Dance Revolution, la guitarra Guitar Hero o la Pokeball de Pokemon, le dan nueva vida a la vieja jugabilidad al brindar a los jugadores una nueva forma de interactuar con la mecánica de juego antigua.

Interfaces virtuales 
Diseñar interfaces virtuales puede ser muy complicado. Hecho mal, se convierten en un muro entre el jugador y el mundo del juego. Hecho bien, amplifican la potencia y el control que un jugador tiene en el mundo del juego. Debemos tener en cuenta qué información necesita recibir un jugador para que no sea obvia con solo mirar el mundo del juego, durante cuanto tiempo y como esta no debe interferir con las interacciones del jugador con el mundo del juego. El diseñador debe saber escoger que tipo de interfaz es mas adecuado en cada momento en función de la información a mostrar y teniendo en cuenta también el interfaz físico con el que se juega... los menús emergentes, por ejemplo, son una mala combinación para un controlador de gamepad.


El objetivo final es que mientras el jugador se encuentra en estado de flujo la imaginación del jugador se sumerge tanto en un juego, que ya no está presionando los botones y mirando una pantalla sino que está corriendo, saltando y blandiendo una espada.


Los jugadores se proyectan en juegos y, en algún nivel, ignoran que la interfaz está ahí, a menos que de repente se vuelve confuso. La capacidad de una persona para proyectar la conciencia en lo que está controlando es casi alarmante. Pero solo es posible si la interfaz se convierte en una segunda naturaleza para el jugador.

Comentarios

Entradas populares de este blog

El diseño de la interfaz de usuario

El estudio del diseño de interfaz de usuario en videojuegos es un tema que se ha estudiado en profundidad pero que muchos desarrolladores que empiezan no prestan mucha atención centrando su energía en las mecánicas del juego y especialmente el arte ya que muchas veces el éxito o el fracaso de un juego dependen de ello. Pero más lejos de la realidad la capacidad lúdica de un juego muchas veces también viene determinada por el diseño de la interfaz que hace de dialogo entre el jugador y el juego. Uno de los mejores análisis de las interfaces de usuario en videojuegos lo encontramos en los estudios realizados por Anthony Stonehouse y Marcus Andrews . El diseño de la interfaz de usuario en los juegos difiere de otro diseño de interfaz de usuario porque implica un elemento adicional: la ficción. La ficción involucra un avatar del usuario real, o jugador. El jugador se convierte en un elemento invisible, pero clave de la historia, como un narrador en una novela o película. Esta ficc

GitHub y Unity

Para el proyecto que estoy desarrollando voy a utilizar GitHub como repositorio de archivos y versiones. Aunque muchas veces uso el propio sistema de Unity, por el motivo que sea también vamos a utilizar un sistema general ampliamente utilizado por los desarrolladores de software. En primer lugar debemos tener una cuenta GitHub que nos podemos hacer gratuitamente. Una vez hecha vamos a utilizar un programa de gestión de versiones como es Sourcetree para gestionar el flujo de las versiones, ramas, etc. de nuestro juego. Una vez tenemos la cuenta de GitJub, si queremos utilizar SourcreTree necesitas una cuenta de Atlassian Bitbucket. Sin no disponemos de ella la podemos crear en el momento de la instalación o previamente a través de su página web. A partir de aquí solo tenemos que ejecutar Sourcetree y enlazar las cuentas. En el vídeo tenéis todo el proceso completo. Una vez tenemos en enlace hecho debemos enlazar con la cuenta de GitHub con la opción de Edit account

Como hacer copias de tu código de Unity con GitHub

Podriamos escribir un libro entero de las bondades de Git para el trabajo colaborativo y la gestión de versiones en un entorno como Unity. De hecho hay mucha literatura en internet para aprender a utilizar Git en todo tipo de entornos de programación. Así mismo para aquellos que empiezan seguramente lo primero que deberían aprender como hacer una copia de seguridad periódica de sus proyectos.. y ya habrá tiempo para, poco a poco aprender todo el potencial de una herramienta como esta. En su momento hice un tutorial para usar Git con una interfaz gráfica como SourceTree como punto de entrada al mundo de Git, pero en esta ocasión me gustaría explicar, paso a paso como utilizar GitHub para hacer copias de seguridad de tu proyecto en Unity. Para iniciar este proceso se deben hacer tres pasos: 1.- Crear una cuenta en GitHub En la pantalla principal de GitHub debemos crear una cuenta nueva (Sign up) y seguir el asistente para tener una cuenta gratuita con los parametros por defecto que nos