Flocking

Flocking es el nombre que se le da al modelo computacional utilizado para el movimiento coordinado de grupos (flocks) de entidades (boids). Este movimiento coordinado puede apreciarse en la naturaleza, en el vuelo de los p谩jaros, peces, insectos, etc.

Fue introducido por primera vez por Craig Reynolds por medio de su paper “Flocks, Herd, and Schools: A Distributed Behavioral Model” en la SIGGRAPH del a帽o 1987.

El modelo posee ciertas reglas que hay que respetar en la implementaci贸n, es decir, flocking no es s贸lo intentar simular el movimiento de entidades coordinadas sino adem谩s la aplicaci贸n de ciertas reglas que aseguren las condiciones reales de este fen贸meno. No puede existir una inteligencia superior que gobierne todas las entidades, cada entidad se mueve de modo independiente seg煤n las reglas del modelo y su ponderaci贸n respectiva.

De este modo, la simulaci贸n que observaremos en pantalla se asemejar谩 mucho al comportamiento de las entidades que podamos observar en la naturaleza. En principio, parece reinar el caos, pero si la observaci贸n es detallada se podr谩 notar que existe un patr贸n. Las entidades mantienen una cohesi贸n pero al mismo tiempo pareciera existir una distancia m铆nima entre ellas, no se chocan entre s铆 ni contra obst谩culos (o al menos la posibilidad que esto ocurra es baja) y, finalmente, mantienen una direcci贸n com煤n.

La rama de la inteligencia artificial que se encarga del estudio de este modelo es la vida artificial o A-Life.

De la aplicaci贸n de las siguientes reglas sencillas, se obtienen diversos comportamientos complejos (en funci贸n de su ponderaci贸n, es decir, del peso o la importancia que posee cada una de ellas en la direcci贸n/velocidad/aceleraci贸n que finalmente efectuar谩 la entidad). Estos comportamientos se los suele denominar emergentes, pues no est谩n planeados a priori y en muchas ocasiones sorprenden al creador del modelo en cuesti贸n.

Otro rasgo fundamental de la aplicaci贸n de modelos de flocking es la falta de predictibilidad del comportamiento del mismo en un lapso de tiempo considerable.

Su aplicaci贸n en juegos

Son muchas las aplicaciones posibles de este modelo en videojuegos. Una de ellas es el comportamiento de un conjunto de enemigos (naves espaciales, soldados, insectos, etc.). El uso de flocking, a diferencia del movimiento conjunto mon贸tono, brindar谩 una sensaci贸n de realismo muy superior, culminando en un gameplay m谩s profundo y variado.

Reglas b谩sicas

Las consideradas reglas “b谩sicas” son las expuestas inicialmente por Reynolds.

flocking-tabla1

Reglas extendidas

A las reglas b谩sicas de Reynolds se agregan otras que profundizan la simulaci贸n:

flocking-tabla2

Agentes inteligentes

Un agente es una entidad que percibe su entorno y act煤a en consecuencia decidiendo que hacer por medio de reglas de l贸gica propias del agente.

flocking-fig1

Teniendo en cuenta esta definici贸n cada entidad del grupo o bandada se comportar谩 como un agente inteligente. De este modo, cada entidad percibir谩 su entorno mediante cierta informaci贸n acotada disponible para 茅l; acotada porque nuestras entidades simulan seres vivos con organismos de percepci贸n no ideales, con ojos que poseen un cierto campo de visi贸n, con o铆dos que escuchan hasta una determinada distancia m谩xima.
Debido a que en nuestro modelo matem谩tico estas “limitaciones” no estar铆an presentes, acotaremos de forma adrede la informaci贸n disponible para cada entidad, para que el comportamiento final sea lo m谩s fiel posible al del ser vivo que se intente copiar.

Implementaci贸n

Obtenci贸n de las entidades locales

Por lo tanto, en la implementaci贸n de ciertas reglas deberemos s贸lo tener en cuenta las entidades vecinas, aquellas que se encuentren dentro del siguiente radio y 谩ngulo:

flocking-fig2

Tanto el radio como el 谩ngulo (usualmente 300 grados) podr铆an ser parametrizados para luego poder modificarlos y observar cu谩l es la variaci贸n en el comportamiento de la bandada.

Ser铆a grandioso contar con un sistema de an谩lisis de im谩genes y que cada entidad obtenga la informaci贸n visual de las inferencias obtenidas a partir de las mismas. Pero esto ser铆a muy costoso y posiblemente m谩s imperfecto que la visi贸n real del ave. En lugar de ello, sabremos si una entidad est谩 dentro de su “campo de visi贸n” analizando su posici贸n contra la posici贸n de la entidad actual. La distancia entre ambas entidades deber谩 ser menor al radio correspondiente y el 谩ngulo tambi茅n deber谩 estar en el rango especificado.

flocking-fig3

Toma de decisi贸n

La aplicaci贸n de cada una de las reglas nos indica hacia donde movernos. Luego la toma de decisi贸n que tendr谩 que realizar la entidad ser谩 la promediaci贸n ponderada de cada una de las acciones sugeridas por las reglas.

flocking-fig4

Siendo la acci贸n una aceleraci贸n vectorial:

flocking-fig5

Separaci贸n

Por lo tanto, implementaremos cada reglas de nuestras entidades de modo independiente y luego decidiremos de que modo se combinar谩 la decisi贸n obtenida por cada una de ellas.

Regla: Verificar distancia contra toda entidad vecina. Si alguna distancia es menor a la m铆nima estipulada efectuar un movimiento que revierta esta situaci贸n.

flocking-fig6

Alineamiento

Regla: Promediar aceleraci贸n de todas las entidades vecinas.

flocking-fig7

Cohesi贸n

Regla: Calcular el punto equidistante a todas las entidades vecinas y dirigirse hacia all铆.

flocking-fig8

Reglas adicionales

Luego de aplicar las reglas b谩sicas de Reynolds, es posible agregar la cantidad de reglas que el programador considere necesarias. Por lo general, el comportamiento adecuado se obtiene mediante prueba y error, agregando y quitando reglas o modificando los pesos de cada una de las reglas (balance).

Limitador de aceleraci贸n

Regla: Si el m贸dulo de la aceleraci贸n es mayor a un n煤mero especificado limitar dicho valor a un m谩ximo establecido.

Contenci贸n dentro de un volumen

Regla: Si la posici贸n de la entidad se encuentra fuera de un determinado volumen, realizar un movimiento de alta prioridad para ingresar nuevamente a 茅l.

flocking-fig9

Persecuci贸n de metas

La direcci贸n a tomar puede ser alterada por una regla de alta prioridad que indique la persecuci贸n de una meta. Un caso normal es esta situaci贸n es el avistamiento de una presa. Cuando se da esta situaci贸n, todas las entidades modifican su direcci贸n para ir detr谩s de ella, hasta que la misma escapa o es devorada, momento en el cual la regla se desactiva y deja de tener influencia sobre la decisi贸n tomada.

Conclusi贸n

El modelo de comportamiento distribuido introducido en este documento es gran utilidad en los videojuegos debido a que el mismo otorga realismo y evita se repita el mismo comportamiento mon贸tono una y otra vez.

Sin embargo, el comportamiento emergente que podr铆a tomar el grupo dado un determinado contexto podr铆a no ser el deseado por el dise帽ador del videojuego, ya que dada la gran cantidad de posibilidades se torna muy complejo el testeo y la depuraci贸n. Por ejemplo, dado cierta situaci贸n de dif铆cil repetici贸n un grupo de insectos podr铆an dirigirse hacia el lugar equivocado, incluso podr铆an quedar dando vuelta en c铆rculos. Es por esta raz贸n, que estas t茅cnicas muchas veces son limitadas o aplicadas con reglas muy estudiadas.

Bibliograf铆a

Sitio de Craig Reynolds: http://www.red3d.com/cwr/boids/

Comments

  1. May 2nd, 2007 | 12:53

    Muy interesante!

    Bienvenido al Planet Stratos :)

  2. Sol
    May 2nd, 2007 | 20:16

    Buenisimo… no sabia nada de esto. Muy interesante!

  3. Novack
    May 9th, 2007 | 1:49

    Excelene articulo

Leave a reply