jueves, 23 de abril de 2009

Pruebas de concepto sobre El Anillo (primera parte)

Este asunto es uno de esos de los que uno no sabe qué fue primero, si el huevo o la gallina. Así que empezaré como se dice, empezaré por el principio de los tiempos.

Yo siempre he querido plasmar la interactividad y el modelo de mundo de las AC (Aventuras Conversacionales o Ficción Interactiva) en un juego gráfico convecional. De hecho mis futuras publicaciones a través de este nick Ruber Eaglenest estarán basadas en torno a esta premisa. Otra cosa es que para empezar realice un juego de rol clásico, para aprender, donde lo único en donde puedo destacar sería en una interfaz bien construida, pero nada más. Pero mi motivación principal como programador indie sería la propuesta.

Siempre he pensado en El Anillo de Mel Hython como el ejemplo perfecto para esta tarea. El protagonista es un anillo, por lo tanto las acciones posibles son muy limitadas (algo ideal para un control típico de juego gráfico). El anillo no se puede mover, con lo cual no hay que programar complicadas escenas en movimiento; la mayor parte de la acción pasa estando estático (tan sólo puede aumentar de tamaño, disminuir, brillar, y hablar con quien le lleve). Algo muy similar a las aventuras gráficas. Lo cual facilita la producción.

Esto es en apariencia, la realidad es que El Anillo de Mel Hython, es doblemente complicado: para empezar tiene un modelo de mundo igual de complejo o más que cualquier otra aventura que conozca; la interacción con los PNJs (PSIs en aquella época, Personajes Seudo Inteligentes) es constante y necesaria para poder avanzar; y además estos tienen vida propia modelada en el juego; mientras que el anillo tiene capacidad de controlar directamente a un PNJ que sea fácilmente impresionable. Esto último quiere decir que hay que implementar una interfaz de comunicación con los personajes para darles órdenes y que estos las cumplan dentro del modelo de mundo del juego.

A pesar de la aparente simplicidad y la compleja realidad del asunto, el proyecto siempre me ha parecido muy atractivo: El Anillo en juego gráfico...; y nunca ha dejado de rondar por mi cabeza.

Luego llegó Sprout. Es un juego en flash, maravilloso, con arte dibujado a mano; con un modelo de personaje simplificado: eres una semilla de coco que de mayor desea ser bellota; y para ello deberás viajar a través del escenario cambiando tus genes y transformándote en otras plantas que encuentres por el camino. De esta forma las acciones están limitadas a transformarte en un tipo de planta y, dejarte llevar por el escenario y la historia. A cada turno, las opciones que tiene la semilla aparecen en pantalla en forma de bocadillos de pensamiento de la semilla para que el jugador las clique con el ratón (¿quiero ser coco o bulano? Un bulano es un diente de león. Bulano de volar, pero lo escribo con B porque la única palabra parecida que existe es con B y suele ser un apellido. Es probable que este término sea una palabra dialectal de mi comarca).

Este juego me asentó en la cabeza la idea de realizar un Anillo gráfico. Pero por otro lado, por entonces yo no tenía habilidades artísticas plásticas, y realizar tamaña proeza requería encontrar un diseñador dispuesto a colaborar. Dada la escasez de grafistas, la cosa se enterró de nuevo en mi subconsciente.

Y ya en el pasado más reciente que falsamente podríamos llamar presente. En mitad del testeo de El Anillo, parte III, me dio por realizar la portada. Viviendo todo el día con el tema del Anillo en la cabeza las conversaciones con Mel Hython sobre el Anillo gráfico resurgían. Pero como siempre Mel no lograba captar la idea, el asegura que es negado para la visión gráfica y yo no lograba transmitirle como sería un Anillo con gráficos. Mientras tanto Jarel hacía de las suyas en Stripgenerator bajo el seudónimo de Quenene, haciéndose un hueco en esa comunidad gracias a la calidad de sus viñetas más conceptuales con una calidad artística muy por encima de la media de lo que existe en Stripgenerator.

Y entonces esta viñeta me explotó en la cara:

(haz clic para ver a tamaño original)

De repente lo vi todo claro, ese es el estilo que quiero para El Anillo gráfico. Bueno ese en concreto no, sino un estilo panorámico de estilo cómic con escenarios en silueta negra, inspirado en las mejores ilustraciones de Quenene en Stripgenerator. Lo mejor de todo es que la interfaz al fin se reveló cristalina: ¿Iconos? ¿Teclas de acceso directo? ¿Point and click? ¿Un parser?... ya lo iremos desgranando...

Lo genial de Stripgenerator es que puedes hacer filigranas con todo tipo de estilos de dibujo, como ha realizado Quenene; pero al estar todas realizadas con los mismos recursos "limitados", se consiguen ambientes muy distintos pero todos dentro de un estilo homogéneo. Eso es ideal para una aventura gráfica (al final salió el término).

Como dice Kyle Gabler en este artículo de su blog (el diseñador tras el genial World of Goo), en referencia a que de pequeño le encantaban los juegos de Lucas porque cada pantalla tenía un estilo icónio único, cada escena era única, cada acción; de forma que no podían ser reutilizadas en otras partes del juego. Pero también le encantan los juegos con simulación física, porque son juegos que se "crean la historia" ellos sólos:
"So my goal for World of Goo is to (hopefully) combine the best of both, where all gameplay is 100% physically simulated, and where each level is thematically extraordinary, visually iconic, and always (at least mildly) related to a story arc. There is very little asset re-use between levels, which is expensive in the sense that I have to create unique art by hand for every level, but as I’m seeing the game come together, I’m kinda happy how “beautiful” (or at least original) it is becoming."
Traducido muy rápidamente:
"Mi objetivo en World of Goo es (espero) combinar lo mejor de ambos, donde toda la jugabilidad sea 100% simulada físicamente, y donde cada nivel sea temáticamente extraordinario, visualmente icónico, y que siempre (al menos ligeramente) esté relatado a la historia. Hay muy pocos recursos que se re-usen entre niveles, lo cual es muy caro en el sentido que tengo que crear arte único a mano para cada nivel, pero cuando los veo juntos en el juego, estoy realmente feliz por la "belleza" (o al menos originalidad) en que se está convirtiendo"
(viñetas varias de Quenene)

Así que de nuevo con Inkscape me dispuse a crear una serie de pruebas de concepto sobre cómo se traducirían cada una de las escenas del juego El Anillo, parte I, en viñetas del estilo Stripgenerator, tratando de imitar las cosas que Quenene ha conseguido a lo largo de todo este tiempo.

La primera prueba que hice fué esta:


En ella se ve un trigal tras el cual el sol se está poniendo. Anochece. ¿Dónde está el anillo? Ahí, ahí vemos su ojo de brillo esmeraldino. Por supuesto Mel Hython aún no pudo visualizar cómo funcionaría el juego.

Enseguida surgieron los chistes... Es difícil resistirse a la dinámica del cómic y el humor. Se puede pasar de la más absoluta conceptualidad artística, al chiste más banal en tan sólo una viñeta. Así que además de las pruebas de concepto me dediqué a reciclar las viñetas para generar tiras cómicas de humor como churros. Se pueden leer en el SPAC, aunque aparecerán en orden cronológico inverso.

Las bromas también llevan a la expresión artística de ideas o conceptos propios de la Ficción Interactiva, que son viñetas que no sirven para nada de cara a crear un futuro juego, pues expresan dinámicas que no se van a usar, como por ejemplo el UNDO (retroceder un turno atrás en el tiempo, para corregir un error, incluso la muerte del jugador):

(clica para ver a resolución original)

Al menos son dignas de colgar en un museo de arte contemporáneo... je, je.

En las ACs, es muy fácil expresar el paso del tiempo: Anochece, Está Oscuro. El tiempo pasa inexorablemente. Amanece. Así de simple puede ser. En una juego gráfico con tiempo real, como debe de ser en este proyecto, eso no es suficiente, con lo cual hay que probar diversos cambios de luz y distintas horas del día:

Esta viñeta ya le aclaró algo más las cosas a Mel, junto con mis explicaciones: Sería un tipo de aventura gráfica controlada por ratón. Con el puntero se selecciona un objeto del juego y automáticamene se examina. Esto hace que salga un bocadillo tipo cómic mostrando la explicación, el cual también muestra una breve linea de pensamiento que indica donde está el anillo. Pasando el ratón sobre el anillo saldrían los bocadillos de las acciones: aumentar, disminuir, o brillar.


(haz clic para ver a tamaño original)

En el siguiente puzzle, la solución pasa por hablar con la urraca, asustarla y que así nos deje caer donde queramos:

(haz clic para ver a resolución óptima)

Y aquí viene otra parte peliaguda del concepto. Hay que hablar con los personajes, ¿que tipo de interfaz se podría usar? Son órdenes concretas, mandatos de parte del anillo, para que los ejecute un humano; el juego no motiva al jugador a expresar sentimientos o conceptos mentales muy complejos. Así que usaré un parser: una entrada de texto de toda la vida; tipo PAWS; es lo suyo. Que nadie lo haya usado a nivel comercial desde la época de los 8 bits no quiere decir que no sea apropiado. En el "juego" Facade, se ha usado, y a pesar de padecer de síndrome de la palabra exacta, y de ser un experimento fallido, aunque impresionante, la interfaz se siente correcta para el tipo de obra que es.

El parser del juego El Anillo, original, en Spectrum, hecho en PAWS, está muy bien implementado, y no hay síndromes de ningún tipo a la hora de comunicarse con los personajes. Eso garantiza una experiencia fluida para la versión gráfica. Ya de base, sólo tendría que copiar paso por paso las cadenas de parseado de la aventura original.

Entonces ya tenemos completa la interfaz. Clicar sobre un objeto para obtener su descripción. Pasar el ratón sobre el anillo para ver iconos de las acciones posibles. Y por último, escribir directamente en el teclado lo que se desea decir a un personaje. Una interfaz redonda :)

Veamos como se traslada los distintos ambientes de la aventura en el juego gráfico:

(hacer click para ver más bonito)

En esta escena la pupila del ojo de dragón seguiría al puntero del ratón dando la sensación de que el ojo se mueve hacia donde estamos mirando.

La vista subjetiva creo que es una gran idea. El anillo tiene visión nocturna, así que cuando cae la noche, la única manera de representar esto es con esta vista. Se rompe un poco la filosofía de la cámara, porque esta siempre enfoca al anillo en tercera persona; pero es una característica tan chula que es irresistible no implementarla. Bueno, en escenas nocturnas paisajísticas si podría prescindir de la visión subjetiva, indicando la posición del anillo gracias al brillo ocasional de su ojo (como en el trigal), pero en cuanto haya en la escena objetos que examinar, es mejor cambiar a cámara subjetiva.

Por contra, este concepto requeriría mayor consumo de recursos gráficos, pues habría que implementar dos versiones de cada escenario, uno en tercera persona y otro en vista subjetiva. Claro que lo suyo sería hacerlo por medio de herramientas de transformación vectorial, en tiempo de ejecución: un cambio de perspectiva radical, y un control de iluminación para el paso del día a la noche, esto es, que el efecto de perspectiva se consiga a base de deformaciones matemáticas en tiempo de juego. Un efecto lupa, o algo por el estilo. En el caso de esta viñeta lo consigo usando un efecto de Inkscape llamado Remolino, que tuerce los objetos en la dirección y grado deseado.

El color verdoso del poder de visión nocturna está hecho con un filtro de Inkscape: el filtro de mezcla. Esto es genial, porque en el juego podré poner un cristal simulando el ojo esmeraldino de dragón, delante de la escena, modificando sus colores en tiempo real. Lo que veis en la viñeta no está hecho a mano, tras el cristal verde, está realmente oscuro y no se ve nada:


(la escena nocturna con los ojos
"desplazados", revelando lo que hay detrás)

Este filtro funciona de varias formas, las más usuales, en modo "multiplicación" y en modo "pantalla":


(pantalla y multiplicación de colores)

Tal y como se explica en el siguiente tutorial: http://fedev.blogspot.com/2008/04/filter-effects-blend.html

El modo pantalla actúa mezclando los colores como si fuesen luces. La mezcla por multiplicación es la más conocida, porque es la que surge de mezclar pigmentos: si mezclas azul y amarillo, sale el color verde. Por tanto para el efecto de ojo, he supuesto que en la realidad, al llevar unas gafas tintadas, lo que se produce es una mezcla de luces, no de pigmentos. Por eso uso pantalla en vez de ultiplicación.

También, esta magia es la que está detrás del fantástico efecto de estar debajo del agua en la siguiente viñeta:

(clica para ver en toda su gloria)

Uso un rectángulo con degradado en colores verdes marítimos, con una opacidad del 60% (semitransparente), en una capa que está por encima de toda la escena, y que tiene aplicada el filtro por pantalla. Detrás los objetos tienen colores naturales de por sí: la trucha es amarilla y verde, y el anzuelo y el sedal son de color gris, plata para el anzuelo. El filtro marino le da un acabado que parece que realmente está debajo del agua. Me habría costado demasiado tiempo lograr los colores adecuados; pero no es necesario buscarlos cuando Inkscape proporciona filtros que son capaces de imitar a la naturaleza.

Aún me quedan por elaborar conceptos del juego muy importantes, como el estilo de los personajes, cómo se mueven estos, y sus interacciones en la historia. Aún me queda un tiempo hasta completarlos todos, así que más adelante volveré a este tema.

Lo que si estoy seguro es que no voy a presentar esto como una "Aventura Gráfica" ante el mundo. Mejor "Historia Interactiva". Ficción Interactiva podría, pero ya representa al medio de los juegos a través del texto. Quizás ¿Aventura graficoconversacional?