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.

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

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.

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:

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.

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.

Siendo la acci贸n una aceleraci贸n vectorial:

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.

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

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

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.

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/




Muy interesante!
Bienvenido al Planet Stratos
Buenisimo… no sabia nada de esto. Muy interesante!
Excelene articulo