lunes, 7 de septiembre de 2015

Coordenadas uv para lightmaps

Un problema bastante tonto, pero que me hizo perder casi dos días de trabajo. Cuando comencé a poner en Unity los escenarios que había modelado en 3Ds Max encontré que tenía unos artefactos extraños en las sombras.


Tal y como se ve en la imagen había zonas mal iluminadas, cuadrados negros extraños. Bueno, Unity 5 trae iluminación indirecta, el motor de iluminación offline (beast) va trabajando creando lightmaps con cada cambio, así que debía ser alguna mala configuración. Así que empiezas a mirar todas las opciones, repartidas entre la ventana de iluminación, las luces, el modelo... Lo único que veo claro es que con luces en tiempo real se ve bien y con luces pre-calculadas es donde surge el problema. Eso descarta que el problema sea en el modelo, que haya hecho algo mal en los mapas uv al crearlo.

lunes, 31 de agosto de 2015

Memoria de Temet Nosce

Hacía mucho tiempo que no escribía aquí. El final del desarrollo fue un poco locura y no tenía tiempo para ir escribiendo sobre todo lo que hacía, y después he necesitado un tiempo para desconectar de Temet Nosce. Como proyecto final de máster fue un éxito, la presentación gustó y he obtenido una nota inmejorable. Y ahora vuelvo a coger el proyecto, primero explicando todo lo que hice esos meses finales, y también quiero mejorar alguna cosa y dejaros probar el juego. He decidido no meter más cosas, todas las ideas que tenía y no entraron quedarán en el aire, a lo mejor para futuros proyectos, pero este juego ya está acabado hasta aquí llega. Lo único que voy a hacer es corregir algunos errores, pequeñas cosas que os iré contando.

En este post os dejo colgada la memoria del proyecto que presenté como trabajo final de máster. Una pena que al pasar a pdf unas imágenes quedaron sin pie de foto, cosa que me recriminaron en la presentación. En el odt original estaba todo bien, pero bueno, he corregido esos errores en el pdf y la versión que os dejo debería estar perfecta.

lunes, 11 de mayo de 2015

Ragdoll con mecanim en Unity 5

Ya están casi todas las piezas hechas, cada vez queda menos para ponerme a construir de forma efectiva el primer nivel y que así podamos probar el juego, pero según voy haciendo cosas me voy dando cuenta de pequeños detalles que todavía me quedan.



En este caso ha sido que no tenía nada para cuando la vida llegaba a 0. Me faltaba que el personaje se muriera, y para eso tenía que hacer funcionar un ragdoll en Unity 5 con mecanim. Ya he hablado de como hacer un ragdoll, pero era en Unity 4 y sin usar mecanim.

Ya tuve en su momento problemas con mecanim, porque no me mostraba todos los huesos del personaje, y descubrí que podía hacer que se mostrasen los que yo quisiera exponiéndolos. Así pude hacer que se vieran las palmas de la mano, para colocar la espada en una mano y poner un collider en la otra, para que el brazo no atraviese paredes. Siguiendo el mismo procedimiento expuse todas las partes que necesitaba, pelvis, fémures, pantorrillas, tobillos, brazos, antebrazos, cabeza... y monté una ragdoll como había hecho siempre, y... no funciona.


miércoles, 6 de mayo de 2015

Efectos de imagen y cara

De las cosas más chulas del juego que entregué en Julio y me faltaba de recuperar en esta versión eran los efectos visuales según nos vamos sintiendo peor. He usado menos y creo que con la nueva forma de hacerlos queda mejor.




Cuando estuve probando los efectos de imagen en Unity 5, descubrí que había un par que no me funcionaban desde código, no podía crear variables de ese tipo de efecto para controlarlos. Pensé que era algún problema con las referencias a librerías, pero no, ahora he visto que el problema es que esos scripts no tienen la clase declarada como pública, añadiendo un public a esas clases se arregla el problema. Aunque tener que meter mano en los assets por defecto porque no funcionan, aunque sea por esta chorrada, es un punto en contra de Unity.


lunes, 4 de mayo de 2015

Mecánica de caída II: Animación y efectos


Una vez que está resuelta la colisión, como vimos en el primer artículo, hay que ver qué se hace cuando se detecta la colisión. He puesto unos puntos, a mano, de respawn, uno por cada dirección de gravedad, y según qué cubo detecte la caída se coloca al personaje en ese punto y que siga cayendo. Y se tenía que ver esa caída, así que la cámara tenía que retroceder hasta el punto de respawn más rápido de lo normal y siguiendo la trayectoria de caída del personaje en lugar de seguir fija, así que necesitaba tener dos modos de cámara y poder cambiar entre ellos. Ajustado y funcionando, ahora se ve cómo cae.



Quedaba un poco soso, así que le puse un nuevo efecto de partículas, no me he matado, he puesto uno de la asset store, con el único cambio de que las partículas caigan en lugar de flotar hacia arriba. Lo tengo que colocar en el punto de respawn y orientarlo según la gravedad actual antes de activarlo para que el efecto se vea bien. Y como no quiero que las partículas me vayan siguiendo no pueden estar colgados del protagonista.



Partículas respawn



jueves, 30 de abril de 2015

Mecánica de caída I: Detección de colisiones

Una de las cosas que me faltaban de implementar en la nueva versión del juego es que cuando caigas al vacío vuelvas a aparecer en tierra, pegándote una hostia que te quite algo de vida.

La primera parte que me plantee es cómo detectar que te has caído. Es algo que parece trivial, pero no es tan sencillo. En la versión vieja iba almacenando la altura del suelo que iba pisando, y cuando detectaba que estaba muy por debajo del último suelo pisado es que me había caído. Este sistema tiene algunos problemas. Tienes que ir almacenando la altura del suelo por el que pasas, si hay alguna caída que es alta pero debe ser así para avanzar tendrás falsos positivos. Y solo funciona hacia abajo, si cambias la gravedad ya no vale y tendría que hacer un sistema bastante más complejo para que funcionase.

Entonces pensé hacerlo con colliders, poner unos objetos rodeando el escenario y si tocas alguno de ellos es que te has caído. Comencé metiendo la pieza de escenario dentro de una caja gigante. Aquí tenía dos opciones y no me gustaba ninguna. Una es poner una cada por cada trozo de escenario, pero entonces me detectaría caídas al pasar de una caja a otra (de un trozo de escenario a otro) y necesitaría comprobaciones extra. Otra sería meter el escenario completo dentro de una caja gigante, pero entonces la distancia entre algunas partes del escenario y la caja de caída sería muy grande, estaríamos demasiado tiempo cayendo, como si eso no tuviera solución. Así que descarte la caja.

Cubierta con planos

lunes, 27 de abril de 2015

Adaptando la cámara al cambio de gravedad

Después de tener la cámara funcionando andando por el suelo, faltaba ponerla apunto para que funcione al cambiar la gravedad, cuando andemos por las paredes o el techo.



Cambio de gravedad


Ahora en lugar de tener un trazado la cámara, tiene 4, uno por cada posible cambio de gravedad, y según la gravedad en ese momento la cámara irá por un raíl u otro. Además como tenemos el suavizado de cámara, a la hora de pasar de uno a otro se hará automáticamente de forma progresiva.