lunes, 4 de agosto de 2014

Gravedad: prototipo de mecánica de cambio de gravedad.




Todo tiene unos inicios. Temet Nosce lo tiene, y la asignatura de Tecnología de juegos lo tuvo. En esta asignatura tuvimos de entrada un par de sesiones intensivas donde teníamos que desarrollar un prototipo de un juego. Se hacía en grupos, pero al igual que el resto del juego, porque iba a ser proyecto fin de máster, tuve que hacerlo solo.



En la práctica tenía unas 6 horas de trabajo para presentar un prototipo al resto de la clase. Lo de ir solo en este caso fue una ventaja. Al tener el tiempo tan limitado, tener que ponerse de acuerdo entre varias personas en qué hacer, que hace cada uno y luego unirlo puede suponer más tiempo que el ahorro de varias personas trabajando en paralelo.



Mi idea fue jugar con la gravedad, que el usuario pudiera cambiar la gravedad de la escena para superar obstáculos. Comencé con una cápsula como personaje moviéndose por el escenario. La mayor parte del pequeño desarrollo se lo llevó lo que era en realidad la prueba: cómo hacer el cambio de gravedad, dónde poner la cámara, el movimiento del personaje... Es decir como encajaría esta mecánica en un juego.




La gravedad cambia en 4 direcciones, (en el prototipo con las teclas wasd), que podría ser con una cruceta, o un segundo joystick. Pero un mundo en 3D tiene 6 direcciones (bueno, tiene infinitas, pero me refiero a los ejes cartesianos), y dejar libertad para cambiar la gravedad en las 6 direcciones hacía el control complicado y el diseño de niveles muy difícil. Por ejemplo, este pequeño prototipo tiene un pasillo muy largo. Si pudiéramos poner la gravedad hacia delante o detrás seguro que hay alguna zona desde la que podríamos pasar el juego entero con solo cambiar la gravedad hacia delante. Y no vemos lo que hay detrás, así que cambiarla hacia atrás sería bastante temerario.



Hablo de cambiar la gravedad en 4 o 6 direcciones, pero fijas, es decir en coordenadas globales, o mejor dicho respecto a la cámara. Y la cámara no gira detrás del personaje. Esto se debe a que sino podríamos efectivamente poner la dirección en cualquier dirección. Por ejemplo, el personaje gira 15 grados a la derecha, y cambiamos la gravedad a la izquierda. Si la gravedad fuera a la izquierda del personaje, la nueva gravedad sería hacia la izquierda y hacia delante. Esto haría que fuera muy difícil de jugar y casi no me imagino como hacer el diseño de la pantalla y de los retos o puzzles a superar. Por eso la cámara no gira, y cuando cambiamos la gravedad es respecto al ángulo de la cámara.



Aún así podemos tener el problema de que si el escenario es muy grande y no podemos girar la cámara, no veamos a donde vamos a caer haciendo, haciendo que jugar sea probar suerte cambiando la gravedad en direcciones al azar. Por eso la cámara tiene que estar a suficiente distancia del personaje, y ser un escenario lo suficientemente pequeño para que podamos ver donde caeríamos si cambiamos la gravedad en cualquier dirección (algo que en el prototipo no ocurre).



Es una cierta restricción, pero tampoco vital, sobre todo porque para Temet Nosce siempre he tomado como referencia la cámara del Crash Bandicoot, que no giraba sobre el personaje como la del Mario 64. Incluso me parece que tiene cierta gracia, y un aire a la coreografía de Bodas Reales, dejo el vídeo a continuación. Seguramente recuerde más a la escena de Origen, pero a mi esta escena de Fred Astaire me gustó mucho de pequeño.




La implementación de la gravedad la hice cambiando el vector de gravedad de Unity. Esto hace que no tenga que andar cambiando como afecta la gravedad a cada personaje o elementos, un cambio y todos usan la nueva gravedad por defecto. Pero a lo mejor eso no es lo que quiero. Por ejemplo en el puzzle de las cajas. Se me ocurrió que aparte de usar la gravedad para superar barreras arquitectónicas, meter un pequeño puzzle para hacer ver las posibilidades de la mecánica. Así que se me ocurrió poner una sección con un agujero en la pared y el camino bloqueado por cajas. La idea es que tenemos que poner la gravedad del lado del agujero para que caigan algunas cajas (si te esfuerzas todas) y puedas pasar. Esto solo es una muestra, de que podría hacer puzzles tipo hacer caer un objeto sobre otro, o en un agujero, o mecanismos, o poner el terreno favorable en alguna lucha... Pero lo malo es que al afectar la gravedad a todos los objetos, puede que por los cambios que hayas hecho para llegar hasta ahí, esas cajas ya hayan caído cuando llegues. Eso no lo puedo permitir. Hay que usar un truco muy habitual en videojuegos y cine: en realidad lo que haces solo afecta a lo que tienes a la vista. Por eso las cajas en realidad no se ven afectadas por la gravedad hasta que no entras en la sección de pasillo donde están, pero no deberían verse desde lejos para que no te des cuenta. Es una sistema que hay que perfeccionar para la versión final del juego, pero será algo en esa dirección para poder diseñar los desafíos de forma local y no volverme loco.



Por lo demás, cambié la cápsula por un personaje bajado del Asset Store, toqueteé algo la iluminación usando Lightmaps (nos lo habían enseñado ese día), puse una pantalla de inicio y la gracia de mario en el final y ya no dio tiempo a más, por eso el personaje no está animado, no hay sonido... Aún así lo importante estaba hecho, hacer ver por donde podían ir los tiros en una mecánica de cambio de gravedad en 3D. Algo que se incorporará a Temet Nosce en su segunda pantalla.

No hay comentarios :

Publicar un comentario