sábado, 3 de mayo de 2008

Diseño de la Interfaz (de "El Ojo...")

Qué curioso, es la primera vez en años que cojo un papel y me pongo a diseñar y a escribir documentos que especifiquen el juego que voy a crear. Antes como El Clérigo Urbatain, creando Ficción Interactiva, jamás me había parado a diseñar "en serio", como mucho tomaba algunas notas a modo de borrador, pero ningún documento serio. Todo era improvisación, y teniendo las ideas claras en la cabeza, más de un año de trabajo duro para que la aventura fuese buena. Pero eso en el mundo de los gráficos es imposible.

Parto de la ventaja que en el libro "Técnica y práctica de los juegos de aventuras" tengo ya todos los algoritmos y diseño detallados. Aún así, esas técnicas del año 1985 en BASIC no tienen más remedio que ponerse al día, y yo, no tengo más remedio que documentarme bien, abstraer los algoritmos, y volver a reinterpretarlos con técnicas de programación más modernas.

Una de las primeras cosas que he detallado es el aspecto visual, y uso de la interfaz del usuario. Para que nos entendamos: la pantalla de juego. Este es el aspecto que presentaba en 1986 y que todavía podeis sufrir en vuestras carnes, jugando a "El Ojo del Guerrero de la Estrella" original en versión emulador Spectrum:


Está dividida en 3 secciones, una la pantalla de acción, mostrando la celda actual y donde se representan con gráficos el personaje jugador (ahí agazapado en el umbral para que la serpiente gigante no se lo meriende), el monstruo que guarda la sala, y el posible tesoro a ganar. A su derecha está la pantalla de estadísticas, mostrando lo obvio (cuando las heridas llegan a 3 se muere, cuando la fuerza llega a 0 se muere). Y ocupando toda la mitad inferior de la pantalla, el buffer de texto, donde se describe la sala, se escriben las acciones, y se muestra el resultado de estas. Además si se pide el mapa, se pintará en esta zona el mapa completo de la planta en la que estamos, una decisión de diseño bastante desacertada, y lenta, porque lo hace en tiempo real cada vez, teniendo que iterar por todas las celdas de la planta (100 iteraciones), y además, como usa el buffer de texto, nada más pulsar una tecla se pierde todo el mapa, con lo cual, consultarlo es más un engorro que una característica apreciable.

El juego se controla con los cursores para mover al personajillo por la celda actual. Si se llega a uno de los umbrales se desplaza por la mazmorra en la dirección adecuada, cambiando de habitación o celda. En cualquier momento podemos dejar de mover al personaje para escribir directamente con el teclado una orden, usando un parser bastante primitivo (de una sola palabra, a lo sumo dos). Por ejemplo para obtener un tesoro hay que situarse encima y escribir TAKE; para dejarlo habría que escribir DROP HOLY WATER. Todo eso con un parser lento como el basic del Spectrum, y mientras el monstruo se acerca a nosotros lento pero inexorable.

Si un monstruo entra en nuestro espacio vital, nos atacará y el programa lanza una INPUT una entrada de datos estándar del BASIC y nos pedirá que elijamos un arma para defendernos ("Es atacado, escoja su defensa" dice el libro, con la educación y pedantismo de aquellos tiempos). Así mismo si en un movimiento pisamos a un monstruo seremos nosotros quien tenga la iniciativa del ataque, y el INPUT del BASIC nos preguntará "Escoja un arma y ataque". Cuando terminamos el turno de ataque, le toca al monstruo y volveremos a escojer defensa. El bucle de lucha a vida o muerte se puede romper con un hechizo de Teleportación o huyendo en nuestro turno de ataque, con lo cual nos pedirá una dirección a laco cual huir (curiosamente aquí no nos pide que lo hagamos n los cursores de movimiento, sino que nos pedirá uno de los puntos cardinales principales, o N, o S, o E, u O, norte, sur, este, u oeste, como dirección para escapar. Inaudito, eso es lo que llamo yo una interfaz poco homogénea). Además en cualquier momento tanto en movimiento, como en rutina de lucha, podemos consultar el inventario, el mapa, lanzar un hechizo, o mirar de nuevo lo que hay en la habitación, para saber con qué bestia te estás jugando los cuartos.

El diseño de la pantalla de mi proyecto será así (haz click sobre ella para verla a máxima resolución):


Como ni en JPG, ni en GIF, la Web o Blogger obtiene óptimos resultados de visualización, troceemos la imagen para verla en detalle: la interfaz de usuario de mi reconstrucción tiene 5 zonas que serán buffers gráficos de la interfaz Java. El control se realizará tanto por ratón como por teclado. Se puede usar ambos a la vez, o se puede controlar completamente por teclado o completamente por ratón:


La ventana de acción se corresponde a la propia del juego original. Aqui se representa cada celda o habitación gráficamente. En un principio planeo hacerlo en 2D exactamente igual que el original pero con unos gráficos algo más elaborados. Con el tiempo y la experiencia podría plantearme el hacerla en isométrico con cierta perspectiva, o en un 3D con cámara cenital, pero en un principio lo que se ve, es lo que hay. El jugador controla el monigote con los cursores. Con el ratón se puede clickear en un punto cualquiera de la ventana, y el muñegote daría un paso en esa dirección. A su vez esto permite atacar a los monstruos, o incluso permitiría seleccionar algo en la ventana para su uso bajo un comando de acción.

La ventana de información produce un salto cualitativo respecto al original. Aquí aparte de mostrar la usual información de estadísticas del personaje, planeo mostrar el mapa, información de los monstruos, quizás información de los objetos y una vista en 3D falsa mostrando lo lejos o cerca que se encuentra el monstruo del jugador. Esto permitiría que el mapa se quedase ahí a disposición del jugador mientras este navega por la mazmorra. Además por la naturaleza del juego y de la forma de lucha y defensa (tema que trataré en otro capítulo) conviene mostrar estadísticas de los monstruos, lo cual aumentaría la jugabilidad. El mostrar imágenes de tesoros sólo aporta cualidad estética; mientras que mostrar al monstruo en un pseudo-3D sí que plantea nuevas posibilidades de interactividad: el monstruo en pantalla se mostrará a un tamaño proporcional a la distancia entre él y el jugador; mostrando algo de animación muy limitada al estilo Orc's and Elves. El jugador podrá clickear sobre el monstruo en cuestión para acercarse a él, y si está en la rutina de lucha y defensa, atacarle con el arma esgrimida, o usar el tesoro establecido como defensa para defenderse, mostrando esas armas a modo de FPS, de un shooter tipo quake; entonces se vería la mano derecha con la espada, y la mano izquierda con un escudo, por ejemplo, con sus correspondientes animaciones atacando o recibiendo un golpe. Esto, a pesar de ser un juego por turnos, consigue un combate muy dinámico.


La ventana de comandos mantienen en pantalla constantemente una lista de las acciones que puede realizar el jugador: Tomar (un objeto), Redescribe (la localidad), iNfo (presentar información de estadísticas), Cavar (un agujero para buscar un tesoro), Huir (del combate), Subir (unas escaleras), Dejar (un tesoro), Inventario, Esgrimir (blandir un arma), Beber (una poción), eXaminar (un objeto o monstruo), y Abajo (bajar unas escaleras). Estás tendrán resaltada una letra de cada palabra con lo cual indica la tecla del teclado que ejecuta esa acción, a modo de Roguelike (ahora comprendo porque estos últimos tienen comandos de teclado tan enrevesados, yo apenas tengo 12 comandos y me fue muy difícil encontrar la lista de teclas adecuada. Hoy por hoy, en inglés no lo he conseguido). Además el jugador podrá clickar directamente sobre cada una de las palabras para lanzar la acción de modo que el control sigue siendo tanto por teclado como por ratón. Quizás alguna acción requiera un objeto o entidad sobre la que aplicar la acción, por tanto quizás se requieran sucesivas pulsaciones de teclado o clickados de ratón para terminar la acción.


El buffer de texto es similar al del original pero mucho más sofisticado. En él no imprimiré ningún gráfico que interrumpa la lectura normal de la acción del juego. Acumularé ahí el texto constante y continuo, sin borrados (en un principio) y con un par de flechas para poder navegar arriba y abajo el buffer.


Y por último la zona del inventario. Se compone de un acceso directo por teclado e iconos seleccionables con ratón, de todo el inventario desde el 0 que sería las "manos desnudas" hasta el 9. De 1 al 5 se guardarán automáticamente (se distribuyen por primer espacio vacío para el tesoro recogido) los tesoros normales, armas, objetos mágicos, escudos, etc; desde el 6 al 9 se guardan hechizos varios. Como en ese rango de 10 huecos no caben todos los hechizos, se ha habilitado 2 iconos y teclas especiales dedicados a 2 hechizos importantes: hechizo Limbo (uno de los más poderosos) y el hechizo Teleporte. Además habrá un icono para el Mapa que tendrá la tecla M asociada. Otros dos huecos no tienen botón ni tecla de interfaz, una es el hueco para la mano del mago, un objeto mágico que funciona de forma automática, del cual hablaré en otra ocasión; y el hueco para engarzar el Ojo del Guerrero de la Estrella, el cual también es meramente informativo y estético, y sólo nos indica que estamos en posesión de la preciada joya y que nuestra misión toca a su fin.

Hecho en falta un icono más, quizás, y una acceso directo a objetos y monstruos desde el teclado, porque la acción de examinar, tengo pensado que pueda mostrar estadísticas de los monstruos. Con ratón lo tengo resuelto pues se puede elegir acción y luego clickar sobre la zona de acción encima del monstruo, o en la ventana de información, encima de gráfico del monstruo. Pero si no pongo control de eso con teclado, convierte a mi interfaz en una no homogénea, lo cual lo soluciono asignando una tecla única para todos los monstruos en pantalla, por ejemplo, la M si no estuviera el mapa, la E de enemigo sino estuviera la acción Esgrimir, la C de criatura sino estuviera Cavar... vamos que no es un tema fácil buscar una tecla apropiada, pero tendré que hacerlo algún día. En cuanto a los tesoros, bueno, el original requiere estar encima de los tesoros para poder tomarlos, y una vez en inventario tienen su espacio, icono y tecla asignados, así que no son problema; restrinjo que el jugador pueda interactuar con los objetos que estén en el suelo salvo para pasarlos al inventario.

Por cierto que planeo crear una ventana de juego de 800x600 pixels, sin pantalla completa, dejando atrás resoluciones en desuso. Lo que aún no he pensado es en adaptar esta interfaz a una posible versión de móvil, tengo varias ideas al respecto, pero habrá que detallarlo en lápiz y papel algún día de estos.

No hay comentarios: