Archive for the ‘AS3’ Category

Main Game Loop en Flash!

abril 11, 2008

El problema: Como es sabido, uno de los problemas importantes a la hora de hacer un juego en Flash usando el enterFrame o un Timer, es que nunca funcionan a la misma velocidad en todos lados. Ya sea por el explorador, o por que una PC es mas rapida que otra o por otros tantos factores misteriosos que oculta Flash.

La solucion: Lo que se propone a continuacion, es una forma de asegurarse de que el juego va a funcionar bien independientemente de donde se este ejecutando….y funciona muy bien 😀

Para no hacerla muy larga, les dejo un fla con el codigo comentado 😉 http://www.freewebtown.com/anl_games/game%20loop.fla

llegue a esto por inspiracion de este articulo que me paso Yohami 😉 http://www.8bitrocket.com/newsdisplay.aspx?newspage=10248

Mega Path-Finding

abril 10, 2008

Despues de estar 2 dias investigando sobre diferentes tipos de path-finding para un juego tipo tower-defence, llega el memoento de ponerlo en practica!

El problema: Hay muchos enemigos y todos quieren llegar al mismo lugar desde diferentes puntos del escenario que ademas puede ir cambiando dinamicamente. Calcular la trayectoria para cada uno de los enemigos obviamente no es “la” solucion……

La solucion: Expansion!…o en otras palabras, se va creando un mapa desde el punto objetivo hacia afuera. Tomamos el punto final (objetivo) y revisamos los nodos que lo rodean y les asignamos un valor de 1, luego, para todos los nodos encontrados hacemos lo mismo (revisamos todos los nodos que los rodean a cada uno) y les ponemos el valor 2, luego repetimos lo mismo y les ponemos los valores 3…4..etc hasta que llenemos el mapa (o cubramos todos los enemigos). Cada vez que revisemos el mapa, solo ponemos valores a los nodos que son transitables y que tenian valor 0 por que todavia no se les ha asignado ningun valor, de lo contrario, seguimos con el siguiente nodo. De esta forma se genera una tabla en el que cada nodo tiene un valor de acuerdo con la cantidad de pasos que necesitaria para llegar al objetivo, y una vez calculado el mapa, podemos tomar cualquier punto al azar e ir siguiendo los nodos tomando los valores mas chicos y siempre llegaremos por el mejor camino al objetivo sin tener que volver a recalcular el mapa!

En el ejemplo de la foto, es un mapa de 220×220 y encontrar el camino completo desde cualquier lugar toma menos 1 milisegundo! ( AMD 64 3000+ a 1.8Ghz y AS3 )

Es destacable tambien mencionar, que no es necesario calcular toda la ruta a seguir..solo con reccorrer los nodos mas cercanos y buscar los valores mas chicos es suficiente para saber hacia donde ir desde cualquier punto!.

Tamien cabe destacar, que por lo general, los algoritmos de path-finding tradicionales, toman la mayor cantidad de tiempo en los casos donde no hay solucion ya que tiene que revisar todos los nodos hasta agotar todas las posibilidades. En nuestro caso, si no hay solucion, desde algun nodo, este contendra el valor de 0, ya que no se pudo llegar a el en el mapeo.

Obviamente, esta es una mirada muy superficial…la cantidad de opciones y variantes que se pueden generar son infinitas 😉