Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Movimiento en formacion

Iniciado por Fenris78, 24 de Septiembre de 2007, 12:32:04 AM

« anterior - próximo »

Fenris78

Esta mañana he estado programando un script para generar formaciones de enemigos en uno de mis juegos. Las formaciones se crean perfectamente, pero tengo algunos problemas para moverlas de forma sincronizada.

Me explico:

La idea es crear una formacion de enemigos, que gire para tratar encararse al jugador sin salirse de la formacion.

El problema es que actualmente, la formacion se rompe nada mas salir, llegando al punto de solaparse unas encima de otras, de forma que al rato de perseguirte parece que te siguiera una unica unidad.

¿Alguna sugerencia?

Zaelsius

Yo buscaría en Google cosas como "flocking ai squad" o "vector based ai squad". Salen unos cuantos artículos y libros bastante prometedores :)

sés

Soy indeciso... ¿o no?

Fenris78

Muchas gracias a los dos, voy a ver si soy capaz de montar algo con esos datos.

Repoker

Hola,

algo así salió en mi proyecto de fin de carrera, por lo que puedo sugerirte varias técnicas que a mí me funcionaron. De más sencilla a más compleja (desde el punto de vista de implementación):

1) Usar una entidad como guía, y formar todas las demás con esa referencia. Por ejemplo: en una formación de cuña el de la punta "manda" y cada uno de los integrantes ocupa un puesto a cierta distancia por detrás y hacia uno de los lados. Una cosa que te puede servir para esto es hacer que esa entidad sea invisible. Es bastante chapucero pero es rápido. Lo malo: parecerá que el que "manda" va adelantado a los demás, es muy poco flexible, etc.

2) Crear una entidad intermedia que se encargue de gestionar las posiciones de las entidades en la formación (a medida que mueren, etc.). Esto se puede complicar tanto como uno desee, lo que yo hacía era que las entidades "preguntasen" a su formación cuál era la posición que les tocaba en cada momento. De esa manera puedes hacer que la entidad intermedia ("formación") se mueva y que a su vez estos cambios se propaguen a las diferentes entidades dentro de la formación sin mucho trajín. A partir de aquí creas varios tipos de formaciones, cada una con su manera de calcular las posiciones de las unidades que las forman, y ale.

Esto segundo creo que es lo que más te conviene.. si lo haces bien no tendrías que preocuparte ni por detectar las colisiones entre los miembros de la formación ya que no sucederían nunca.

Lo de flocking está bien, pero para obtener lo que necesitas tendrías que refinarlo bastante.. también lo probé XD

PS: Quería poner unos screenshots para hacer un poco de autobombo pero tengo que instalar openGL en el pc del trabajo y me da palo.

Fenris78

Gracias Repoker. Ahora mismo ya hace mas o menos lo que quiero ¿me leiste la mente cuando expusiste la primera idea?

De todas formas tomo nota de los boids, las busquedas por flocking y la segunda sugerencia, la verdad es que me han resultado muy interesantes.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.