Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





IA para Criaturas

Iniciado por Pilton88, 19 de Mayo de 2007, 05:53:45 AM

« anterior - próximo »

Pilton88

Como andan?
Bueno, en este subforo es mi primer mensaje.
Ya venia posteando en el sub foro de dx_lib32, ya que utilizo dicha libreria para implementar juegos en 2D.
Resulta, que en esto de los juegos soy mas o menos nuevo (digo esto, porque ya un poco de exp tengo creando juegos sencillos).
Pero, si vamos al grano, mi duda seria la siguiente:
Resulta que en mi juego, vos usas un personaje principal, y te encontras con criaturas, las cuales, mi idea es que de alguna forma te sigan..
He visto algo asi en otros juegos, pero no pretendo hacer el super juego de una sola vez, sin antes haber hecho juegos mas sencillos.
Pero bueno, quiero tener una aproximacion en cuanto a esto de la IA.
Se agradece todo tipo de ayuda y codigos de ejemplo.
Desde ya muchas gracias.

Mars Attacks

Pues prográmalo... de alguna forma.

Estaría bien que intentaras ser más explícito con la pregunta :)

Bienvenido al foro. Si quieres más información sobre IA en general, tienes todo google a tu disposición (o el buscador de este mismo foro, si es que funciona).

Esgaroth

Muy fácil. Primero tenés que tener el espacio bidimensional o tridimensional (depende del tipo de juego) definido geométricamente. Una vez hecho eso, tenés que poder calcular distancia entre dos puntos. Entonces tenés que hacer dos cosas:
1. Ubicar un waypoint en el lugar donde se encuentra el personaje principal cada vez que este se mueve.
2. Que el NPC (mounstro, bicho, ser virtual enemigo) siga los waypoints, empezando desde su posición, siguiendo los waypoints dejados por el personaje. Obviamente, si yá se encuentra al lado de el personaje principal, que no siga más el waypoint que falta, es decir se debe corregir esto de dos maneras:
2.1. Si la distancia entre el waypoint es igual o menor a la distancia entre el personaje principal y el NPC, entonces: no seguir moviendose.
2.2. Si el personaje no se movió, entonces no seguir generando waypoints.
Esto se podría ver como un rastro.
Obviamente el tema no es tan sencillo, ya que con tan solo una pared el NPC se podría trabar, y un personaje con ataque a rango o ataque mágico sacaría provecho de ello.
Se podría trabar porque si bien sigue el rastro pueden suceder dos cosas:
3. Puertas: tan solo un puerta basta para inhabilitar los caminos recorridos por el personaje.
4. Para seguir desde la posición inicial hacia el primer waypoint fijado por el jugador, necesita poder moverse en forma directa (obviamente esto se puede corregir).

Además podrías calcular la distancia sumando las distancias de las rectas formadas por los puntos de cada waypoint que no ha sido recorrido e incluyendo el waypoint en el que se encuentra el NPC, y compararlo con la distancia directa entre el NPC y objetivo (llamo distancia directa a la distancia de la recta formada por el punto del NPC y el punto del personaje principal). Elegir la distancia más chica (eso sí, siempre que en la distancia directa no exista un componente no atravesable).

Astat

Te recomiendo que uses OpenSteer (http://opensteer.sourceforge.net/). La he usado para algo similar a lo que dices, y me fue de gran ayuda.

Mira aqui algunos ejempos: http://www.red3d.com/cwr/steer/

cesarpachon

hola, yo también te recomiendo que utilizes la documentación de Open Steer para implementar tus algoritmos. yo la he usado con muy buenos resultados, aunque sin usar directamente la librería. La use para un juego de carrera de autos y para movimiento de personajes sobre rutas generadas con A*

chr2004aqp

Y q es exactamente esta libreria

no entiendo bien, genera codifog de IA, o q?

Podrian poner algunos ejemplos de como funciona, para entender bien, pq la web q dan esta en ingles y la verdad no entiendo de q se trata....

cesarpachon

bueno, open steer para mí son dos cosas: el artículo donde se describe toda la teoría de steering behaviors, y una implementación open source que puedes utilizar en tus proyectos. la teoría es lo más interesante, ya que explica de manera muy sencilla cómo pensar en los agentes como "vehículos" con propiedades básicas, como dirección, fuerza, velocidad. despúes, define que toda interacción con el vehículo ocurre a través de fuerzas que se aplican en cada frame para ajustar el movimiento de acuerdo a algunas reglas sencillas. Este modelo tiene la ventaja de que puedes combinar muchas reglas automáticamente, por ejemplo, una regla para seguir rutas, otra para evitar obstáculos y otra para permanecer cerca al grupo, se combinan, produciendo nuevos comportamientos.
La implementación de estos algoritmos es muy sencilla, ya que básicamente todo se reduce a operaciones sobre vectores. producto punto, producto cruz, normalizar, y ya está.

[EX3]

Algorritmo y ejemplo de Dijkstra Path Finding en codigo fuente para Visual Basic 6.0. Con esto al menos tienes cubierta en cierta forma la parte de busqueda de caminos. El resto de la implementacion de la IA en un juego es pura metodologia e imaginacion.

Salu2...

P.D.: Una pista, busca informacion sobre maquinas de estados.
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






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.