martes, 14 de septiembre de 2010

Aventuras de un padre maravillado con el ser humano…

Pues bien, Sam ya está a punto de cumplir 6 meses de nacida y lo cierto es q es impresionante el ver cómo se va dando cuenta de lo que la rodea, de cómo manejar a su cuerpo y a sus padres =P

Hace tres meses le costaba trabajo el manejar sus manos, se golpeaba la cara y se rasguñaba, pero hoy ya toma los juguetes que le damos y encuentra la forma de ponerlos del modo que puedan entrar en su boca, incluso ya se sabe tallar los ojos con el reverso de sus manos cuando se levanta o cuando tiene sueño…
No es eso genial? Cuando la veo me pongo a pensar en todas las cosas que ya tenemos pre-programadas en nuestro cerebro, como estornudar, bostezar, tallarte los ojos o rascarte el oído y el proceso que debemos de seguir a fin de poder usar ese conocimiento, como si no podemos manejar nuestras manos pues no podremos rascarnos o tallarnos los ojos.

Por otro lado, Sam ya está comenzando a querer gatear, ya se rueda ella sola para intentar tomar el control de la tv o cualquier otra cosa que le llame la atención, tiene la costumbre de “rascar” las cosas, creo yo que está conociendo las texturas de las cosas de esa forma, además que le gusta el sonido que genera el hacerlo, la he cachado que esta medio dormida rascándole a la almohada para quedarse dormida.

También ya nos está tomando “la medida”, por ejemplo, cuando ya se enfadó y quiere que la levanten comienza a gemir, pero si no le hacemos caso entonces comienza a llorar y el llanto va en aumento hasta q llega al punto del enojo o sentimiento, si la dejamos llegar hasta ese punto incluso si la levantamos va a seguir llorando por un rato mas después d q la levantamos, creo yo q es su forma de castigarnos o de demostrarnos que nos tardamos en atenderla.

Este comportamiento es aún mas marcado si tiene q ver con la comida, si Susi se tardó en darle de comer mucho entonces come, pero esta sollozando mientras come y por momentos deja de comer para voltear a verla llorando y después regresa a comer de nuevo.

Como estoy yo? En las nubes, incluso con miedo, les explico el por qué…
No sé si Uds. Han notado en alguna serie gringa que cuando alguien tiene todo lo q lo hace feliz, se muere, o le pasa algo muy malo q hace q la caída sea mucho más dolorosa, porque lo tuvo todo y ahora ya no lo tiene. Pues bueno, algo así siento yo, estoy bien feliz, como nunca lo he estado, con mi nueva familia, con mi antigua familia, con mi trabajo, etc. Y tengo miedo de que algo malo suceda, sin embargo no dejo q ese miedo me deje disfrutar de todo lo q Dios me ha dejado tener…

Por cierto, últimamente me he dedicado a jugar algunos juegos que compré, así q no he tenido tiempo de seguirle con lo de la tesis, sin embargo en cuanto termine Valkyria Chronicles cambiaré mis actividades para ahora si dedicarle a la tesis y seguirle con los pequeños prototipos que venía haciendo.

En fin, estoy en una etapa muy chida de mi vida y aprovecho para agradecer a todos por hacerme tan feliz :) , nos seguimos leyendo…

viernes, 23 de julio de 2010

Aventuras con Unity – Encontrando el camino...

Pues continuando con la tesis...

Como había comentado anteriormente, el objetivo a lograr es que los personajes salgan de una base y se dirijan hacia otra base, pero hay varias cosas que hay que tener en cuenta, por ejemplo:

  • La posición de las bases varía.
  • Hay obstáculos en el camino.
  • Los personajes deben salir en filas de 4
  • Todos los personajes de la misma fila deben llegar a la base destino al mismo tiempo
  • Los personajes no deben de chocar con otros personajes que estén transitando.
  • Los personajes deben de evitar el chocar con otras bases que estén en el camino.
  • Los personajes deben evitar el chocar con los obstáculos que encuentren en el camino.

Como pueden ver hay que tener en cuenta varias cosas y con los intentos hasta ahora hechos solamente he logrado el punto 1, 3 y 5, así que todavía falta un muy buen tramo para lograr tener el traslado de los personajes por el mundo a punto, entonces manos a la obra.

A fin de lograr que los personajes no colisionen ni con los obstáculos ni con las bases pude ver dos opciones:

1.Aplicar una fuerza constante al personaje y hacer las bases redondas a fin de que cuando se encuentre alguna pues llegue el momento en el que lo salve de forma automática.
2.Implementar un algoritmo de busqueda de camino y aplicarlo a cada personaje para que pueda evadir obstaculos y bases.

La primer opción es bastante mala ya que solo funciona con las bases, no funciona con los obstáculos, además de que los personajes pueden trabarse o perderse y nunca llegar al destino, así que solo sirve como prueba. Pueden ver a lo que me refiero en el Tercer Intento, si se fijan en la luneta de la mitad es redonda y esto permite que los personajes de alguna forma puedan evadirlo, pero deben de chocar con la base para lograrlo.

Debido al éxito no encontrado con la opción 1 tuve q pensar en otra solución y Victor me ayudó comentándome que ya existen implementaciones de algoritmos d búsqueda de caminos y me mandó un link con la implementación del algoritmo A*(A estrella o A star) en Unity.

Para los que no sepan ni que onda con ese algoritmo de forma rápida y sencilla les explico, es un algoritmo que recibe un punto de inicio y un punto final, los cuales tenemos nosotros, y tiene la forma de caminar un paso y saber cuanto le costó caminarlo, de tal forma que comienza a dar pasos siguiendo cierto camino, si ese camino no llega al punto final entonces da un paso hacia atrás e intenta caminar por otro lado, de tal forma que intenta dar pasos por cualquier camino disponible y una vez que llega al punto final sabe cuanto le costó el llegar al final.

Este algoritmo nos garantiza que si existe un camino del punto A al B lo va a encontrar y si quieres, puede calcular el camino óptimo, es decir, el camino que cueste menos caminar.

Aquí esta la definición en la Wikipedia A - Estrella
Aquí esta un ejemplo visual de la implementación del algoritmo en la resolución de un juego A - Extrella

Una vez explicado lo anterior, pues ahora si que me dí a la tarea de bajar la implementación de esta liga: A - Pathfinding

Ya teniendo la última versión pues pasé a realizar el proyecto de ejemplo el cual es bien básico, se trata de un plano de 50mt cuadrados sobre el cual se calcula una malla, donde cada intersección se considera un nodo y el algoritmo A* calcula el camino óptimo siguiendo los nodos para llegar del nodo A al B. Bueno, quizas es un poco mas omplicado que eso, sin embargo me permite ver buenos resultados rápidamente, aquí les dejo la implementación del proyecto básico utilizando la implementación de Aron Granberg:

Astar 1


Para hacer que camine hay que darle click en alguna parte del terreno.
El click no debe ser encima de un obstáculo.
Pueden dar otro click antes de que llegue al destino y se calculará el nuevo camino a partir del punto en donde se encuentra el personaje.

Bueno, hasta aquí le dejaré por lo pronto, es emocionante ver resultados con esta implementación, afortunadamente puedo usarlo en proyectos no comerciales y logicamente tendré que adaptarlo a mis necesidades, pero ya es un gran avance.

Epero sus comentarios, sugerencias y demás, por lo pronto nos seguimos leyendo...