viernes, 30 de enero de 2015

Nuevo sistema de control usando SuperCharacterController



El control del juego no me gustaba, sobre todo porque hacía muy frustrantes las secciones de salto, los saltos con un salto de altura única (aunque a veces salta más o menos de forma extraña), y en 4 direcciones, no en direcciones libres. Por eso comencé a buscar tutoriales para ver cómo se las apañaban para hacer un control de este tipo para rehacer el mío.

Así, a través de diversas búsquedas, paseos por los foros y páginas de google llegué al blog de Erik Ross. Me pareció muy interesante pues dedica 4 o 5 entradas a describir problemas con la detección de colisiones y movimiento en Unity y en su controlador de personaje por defecto. Y resulta que tenía muchos más problemas por el lado de las colisiones de lo que creía. El blog requiere un cierto conocimiento de matemáticas (e inglés), pero está muy bien. Se ve que está haciendo un remake HD del Mario 64, y aprovecha para ir explicando las cosas que está haciendo, a día de hoy casi todo referido al controlador del personaje.

Por ejemplo uno de los temas que explica, acompañado de gráficos muy útiles, es por qué con el controlador de personaje de Unity, al bajar cuestas, el personaje baja a trompicones, como si andase en plano y cada cierto tiempo se diera cuenta que está en el aire y cayera un poquito. Y desde luego en la solución de controlador que ofrece las bajadas se hacen de forma suave.



martes, 27 de enero de 2015

Efecto agujero en la cara

Antes de explicar qué hace Kayne West aquí, voy a entrar en un pequeño detalle del nuevo personaje que presenté en la última entrada: los ojos del protagonista.



Los ojos que puse al modelo, los de Kenshi Himura, me parecían muy grandes y femeninos, y justo viendo Rurouni Kenshin me di cuenta que cuando Kenshi lucha, sus ojos son más pequeños y con forma de romboide, más agresivos. Y así he dibujado un segundo par de ojos y adaptado las cejas a esta nueva expresión. No me gusta el resultado, no me acostumbro, de repente parece el malo de la historia (el malo y mal operado). Dejo una comparativa de ambos tipos de ojos, no se si seguiré trabajando en el segundo tipo de ojos, por ahora he vuelto al primero.


ojos alternativos


lunes, 26 de enero de 2015

Nuevo personaje: diseño e inspiración.

Una de las cosas que más trabajo me llevaron y que menos me gustaron de la primera versión del juego era el protagonista. Me maté haciendo el modelo, y quedo muy feo y eso que tenía polígonos para dar y regalar.

Personaje Temet Nosce

Quería cambiar ese modelo, pero para poder hacer un personaje de una calidad decente para mi gusto necesitaría meses de práctica, lo cual seguramente sería muy bueno para mejorar mi faceta artística, pero que no hago por dos razones. No tengo tanto tiempo para dedicar solo a eso, necesito un juego completo para entregar y además tampoco quiero ser modelador, por lo que invertir meses de tiempo en mejorar en ese campo no sería la mejor decisión.

Así que decidí partir de algo ya hecho, un modelo base y moldearlo a mi gusto. Primero intenté trabajar con z-brush, partiendo de algunos modelos de ejemplo que trae, aprovechando que el programa deja moldear como si fuera arcilla y marcar detalles que te acaba metiendo en un mapa de normales. Me sigo sintiendo perdido en ese programa, necesitaría una buena batería de tutoriales. Así que empecé a buscar si encontraba algún modelo libre que usar como base que se pareciese más a lo que quería usar, incluso si pudiera tener el rigging ya hecho. Me miré todos los modelos de blendswap, más de 2000, incluso me bajé y probé varios. Alguno parecía candidato. Entonces probé otra cosa, intentar conseguir alguno de los modelos de referencia para mi personaje.

viernes, 23 de enero de 2015

Veneno ciego: animación




Después de tener el modelo, ya con texturas y todo del nuevo personaje. El siguiente paso es hacer una pequeña animación, que esos tentáculos se muevan un poco mientras el personaje avanza. Porque esos tentáculos todos tiesos mientras el personaje se desplaza por la pantalla quedaría muy raro.



Y aquí he tenido que hacer algo por primera vez: crear huesos. Hasta ahora siempre había animado cosas con esqueletos estándar, sobre todo humanoides, así que usaba huesos prefabricados. Es la primera vez que he tenido que coger y crear un hueso, colocarlo en su sitio, poner el siguiente unido... Aunque este caso es fácil, cada brazo lleva solo 3 huesos, y no he tenido que poner límites de movimiento ni nada así, porque solo iba a hacer una animación y más o menos sencilla. Hubo un momento que me paré a pensar que era extraño crear huesos por primera vez para una especie de moco gigante.




martes, 20 de enero de 2015

Veneno ciego: Inspiración y diseño

Ya había dado pistas de que tenía la intención de hacer un segundo tipo de enemigo. Y tenía la idea bastante clara y el resultado se parece bastante a lo que quería hacer.
Veneno ciego

La inspiración inicial fue un monstruo del Ni No Kuni. En el juego español se llama Moko, en inglés Pom Pom. Es un bicho verde, una bola con un par de tentáculos colgando. Pensé que eso era fácil de hacer y la idea me gustaba, pegaba con mi diseño actual de veneno, pero se ve la diferencia entre uno y otro. Cuando lo he buscado por Internet, además de encontrar muy pocas imágenes (y por es tan pequeña, lo siento) he visto que el bicho era diferente a como yo lo recordaba, con más tentáculo y más cortitos. Y he preferido seguir lo que estaba en mi cabeza, solo 2 brazos y más largos.

Moko Ni No Kuni

lunes, 19 de enero de 2015

Implementación de la cámara: tercera versión

Decía en el último artículo que ya tengo la cámara funcionando como quiero, y que los problemas de rendimiento no eran culpa del sistema de cámara. En este artículo voy a cubrir cómo funciona la cámara al final y pequeños problemas y sus soluciones.



El sistema básico tiene las ideas que expliqué en el artículo sobre la segunda versión de la cámara. Tener trozos de spline de 5 nodos, con nodos equidistantes, y donde el último tramo de un spline y el primero del siguiente se suponerponen haciendo una transición suave entre un spline y el siguiente en esa parte en común. Lo que al final se queda fuera es la aproximación de la posición del personaje al spline por trozos de spline. Ahora mismo sigo aproximando el spline como una recta para saber a qué altura del spline está el personaje. En mis pruebas no se nota diferencia entre las dos aproximaciones y es más barata.



Uno de los problemas que tenía desde el principio de los tiempos y que pensaba que el usar la transición suave entre 2 splines se iba a arreglar era el de los puntos muertos en los empalmes de splines. Se entiende mucho mejor con una imagen de estas cutres que dibujo tipo paint (pero que uso programas de los buenos para hacerlos, el manco soy yo, no el sw): 

Empalme de splines



miércoles, 14 de enero de 2015

Rendimiento: Profiling y configuración gráfica

Después de pegarme mucho con ello creo que ya tengo una versión más o menos definitiva del sistema de cámara. Y he aprendido pequeñas cosas sobre dos campos: rendimiento y problemas de precisión. Este artículo va dedicado al rendimiento.

En el último artículo sobre los arreglos de la cámara mostraba mi preocupación por una caída de rendimiento ante las novedades que probaba, así que me plantee volver hacia cosas más sencillas, porque no podía dejar un juego corriendo a 15FPS. Y había veces que volviendo a soluciones anteriores iba mejor, otras no. No acababa de ver clara una relación causa efecto. Entonces empecé a hacer profiling de la aplicación con la herramienta que trae Unity y que básicamente te mide en qué gastas el tiempo de CPU y GPU. Y obtuve unas gráficas como estas:

Profiling chip nvidia

domingo, 11 de enero de 2015

Mejoras en el comportamiento del veneno

En la última entrada sobre el comportamiento del veneno expliqué el problema que tenía en el movimiento vertical del veneno al adaptarse a los desniveles del terreno, aunque creo que sin vídeo no se entiende tan bien. En este artículo hay vídeo de cual es el problema y cómo funciona después de haberlo solucionado.



He cambiado la forma de realizar el movimiento interno del enemigo, antes se añadía un movimiento de seno (en función del tiempo) a la altura, de esa forma se obtenía ese movimiento de bamboleo, pero al cambiar la altura del terreno, el personaje también la cambia de forma brusca (ya que se mide la altura del terreno cada medio segundo para no tirar rayos continuamente). Ahora el bamboleo se realiza con iTween, con una función de suavizado por seno, y el cambio de altura se nota en el objetivo del siguiente movimiento. Es decir, ahora le digo: sube a altura 8 a velocidad 1, y cuando llega a 8 digo: baja a altura 6 a velocidad 1. Si la altura del suelo hubiera cambiado se nota en esas órdenes.


lunes, 5 de enero de 2015

Veneno: comportamiento

El comportamiento del enemigo, el veneno, está formado por una serie de animaciones y funciones pseudoaleatórias, es tan sencillo que no me he atrevido a titular al artículo como inteligencia artificial, creo que es abusar del término la chorrada que yo he hecho.

Enemigo: veneno

Lo primero es que no todos los enemigos se mueven y evalúan su inteligencia artificial todo el tiempo. Solo lo hacen los que están a una cierta distancia del héroe. Cada segundo se evalúa la distancia de todos los venenos vivos al personaje, y si están a una cierta distancia se activan y sino se desactivan. Esto, de estar bien hecho no debería afectar mucho a la hora de jugar, ya que los personajes que no vemos en pantalla ni están cerca, nos da igual si se mueven o están quietos, y así vamos ahorrando procesamiento de comportamiento.