A partir de la primera entrada sobre esta propuesta tuve feedback interesante para seguir investigando y trabajando para tener algo un poco más tangible a fin de tener un compendio más fuerte de ideas e investigación con el cual formar una propuesta más sólida y presentable.

Primero, agradezco los comentarios de la gente que visitó la entrada y quiso compartir su opinión. Igual las personas que no comentaron, pero escribieron directamente por correo electrónico para dar su opinión al respecto.

Ya entrando en materia, mi amigo Manuel me pasó esta presentación de Jamis Buck (37signals -sí, ésa misma empresa-). La presentación está genial y es buen punto de partida. Primero, Jamis da una breve entrada filosófica a lo que debemos apuntar como programadores; que es sencillamente trabajar en nuestros puntos débiles haciendo cosas finas que nos gusten y salir de nuestra zona de comodidad, sin dejar de lado el hecho de mantener esto como algo divertido.

A partir de ahí, hay un largo recorrido por lo que es el área de grafos y generación de laberintos de forma procedimental. Sin embargo, la serie de laberintos que se presentan son los laberintos “perfectos”; aquellos que tienen una única solución. Pero hey, es un comienzo ¿no?

Y todo esto pinta bien. No obstante, me vuelvo a reunir con Julián para discutir con calma el asunto desde el punto de vista de gameplay. Su idea principal cuando me hizo el pitch no estaba orientada precisamente a laberintos, sino juegos al estilo FPS como lo pueden ser Left 4 Dead, Half Life, etc., donde el recorrido de niveles está dado por una curva (miren).

No voy a entrar en discusión sobre la ley contra juguetes y videojuegos bélicos. ¿Por qué? Porque hay juegos FPS juegos cuya violencia es inexistente o mínima. Portal  es un juego donde se deba matar a alguien, es un juegos de puzzle con una perspectiva en primera persona al estilo FPS, al igual que The Ball. Por su parte, Mirror’s Edge es un en esencia un juego de Parkour. The Ball y Mirror’s Edge pudieran seguir siendo geniales si le quitamos los pocos elementos violentos que tienen, porque complementan la mecánica y la experiencia, pero no son la base de la misma.

Además, es importante recordar que si bien quiero sacar un juego a partir de la tesis, la misma NO es el juego. La propuesta de tesis es todo el motor de inteligencia artificial que apoyará la creación del nivel según reglas.

curva de bezier con anclasContinuando con la idea anterior, podemos observar que los niveles lineales no son un pasillo ni un completo laberinto (al menos en los ejemplos anteriormente tomados). Si detallamos, son más bien una curva. En una representación bi-dimensional pareciera medio trivial porque ok, sí, podemos arrancar de una recta y colocar nodos para generar una curva de Bezier. Pero, ¿cómo se llevarán a cabo los ajustes de los nodos y las “anclas” de la curva? ahí el punto. En una representación tri-dimensional la cosa se puede poner aún más interesante porque pudiésemos jugar con la malla del terreno, pero a efectos prácticos me enfocaré en el camino de la curva de Bezier y ya.

Elefante en la Boa - El PrincipitoEl dibujo de una curva de Bezier parece aburrido a simple vista y, hasta con el color negro del ejemplo, pareciera más bien una pista de estilo Sprint de un juego de carreras. Es un gran pasillo curvo, pero se supone que de la forma más abstracta sea así. Vamos, jueguen Half-Life 2 y díganme que no están recorriendo un pasillo. ¿Cuál es la diferencia? El pasillo puede tener áreas estrechas o áreas amplias. Una buena representación de la idea es el elefante dentro de la boa de El Principito.

¿Qué tal si cada nodo pudiese tener, además de las anclas, un valor de magnitud? La curva entonces pasa de ser un pasillo aburrido a un escenario con mayor nivel de diversidad.

Bezier con magnitud

En pizarrón, porque en Illustrator® me tardaba más

El objetivo es encontrar la manera de unir este concepto con la idea anterior de laberintos y generar mapas complejos que busquen emular la forma en la que los diseñadores crean niveles. De igual manera, ya la creación de niveles/mapas a partir de matrices, si bien es algo que la industria utiliza a diario, lo vemos cada vez menos con el avance y desarrollo de los motores de juegos; y ése es el target al que estoy apuntando.

Mapa Quake E1M1 por John RomeroEn líneas generales tomo como inspiración los bocetos realizados por John Romero para la primera versión de Quake. Como se puede observar, los niveles tienen una pseudo-estructura de laberinto con pasillos que pueden ser rectos o curvos y áreas abiertas. Desde el punto de vista de diseño de juegos, hacer la corrida en frío del recorrido nos da idea del ritmo del nivel. Sin contar, además, los objetivos que requiera cada uno.

Pero tampoco la idea, tal como lo hablé hace tiempo con la profesora Chang, es comenzar  de cero. Para probar todo esto necesitaría, además de basarme en otros algoritmos e investigaciones existentes, una herramienta con la cual apoyarme. En este caso, lo más importante sería de visualización que me permita ir de la capa abstracta de nodos, curvas y características, a algo más “palpable”.

Siguiendo con la onda de Quake, resulta que existe la herramienta de creación de mapas llamada Doom Builder; el cual está orientado a la creación de mapas para juegos basados en el propio motor de Doom, que es el mismo motor que utiliza la herramienta.

Las preguntas que me surgen, ya con todas estas ideas en la cabeza, es ¿y cómo lo modelo? ¿por dónde comienzo? Creo que aquí ya es el punto donde es necesario hablar y plantear el tema.

Crédito imágenes: IGN [Kill Zone 2 por Guerrilla Games], Doom Builder, John Romero.