Iniciar sesión

Ver la versión completa : ¿Hablamos de IA?



Eskema
31/08/2005, 10:39
Buenos dias,tardes o noches, segun se lea. Fantastico, ya tenemos nuestro juego moviendose, el personaje dispara, el scroll se mueve, y ahora.... llega el gran momento de añadir los enemigos.
¿Como hacemos la IA?
Por ejemplo, en mi caso creo y viendo como se mueven los enemigos de otros juegos, llego a la conclusion de que necesito algo como esto:
-El enemigo aparece en pantalla y avanza hacia ti.
-Se para y te dispara un poco.
-Se mueve en alguna direccion y te vuelve a disparar.

La cosa es.... ¿como hago esto? quiero decir, ¿controlo la ia segun su posicion en pantalla? ¿cada x frames le digo q haga otra cosa? ¿muevo al enemigo segun la posicion del personaje?

¿Que tecnicas ancestrales y secretas usais vosotros?

Saludos,

Samuso
31/08/2005, 11:04
Las posibilidades de la IA de los enemigos en un juego son tan amplias como tú quieras. ;)

Puedes hacer a los enemigos tan 'listos' como te parezca e implementar sus comportamientos y/o reacciones según el nivel que pretendas dar al juego.

Desde mi humilde punto de vista, te aconsejaría que si es un juego tipo Metal Slug hicieras varias rutinas para los enemigos:

- tio que avanza disparando -> podría avanzar hacia el enemigo de forma continua y bien detenerse y disparar cada cierto número de frames (quizá sea lo mejor para que quede una animación fluida que dispare cada vez que termine el ciclo de correr 1,2 o 3 veces) o disparar corriendo

- tio que dispara parado -> mantendrá su posición y disparará directa o indirectamente al enemigo (tio que lanza granadas, torre con metralleta, vehículo detenido, etc)

- tio que dispara sin tregua -> como los helicópteros del Metal Slug, disparan ráfagas continuas estén dónde estén y hacia abajo

Esto es lo que se me ocurre a bote pronto y no se si te ayudará algo, si quieres lgo más concreto, da un toke. ;)

Intentaré ayudar dentro de mis posibilidades. :)

Saludos.

Petiso
31/08/2005, 13:01
Esto depende de ti ...

Nos podriamos poner a discutir fisoloficamente sobre lo que es una IA (y lo que no). Pero seria demasiado largo :-p

Asi que tu escojes:
- Algo simple con rand's, if's i for's. Se mueva un poco, y cada X tiempo va diaparando. Yo diria que es lo que se suele hacer ... los juegos de plataforma no tienen mucha AI, y suelen ser movimientos pre-programados y repetitivos, del estilo: anda hacia el tio i dispara cada 2 segundos.

- Ponerle una IA real: que escoja al mejor opcionen cada momento ... pero para un juego 2d de plataformas, no le veo demasiado sentido.

Adios.

newage
31/08/2005, 18:17
Para implementarlo tienes que programar una maquina finita de estados.
Este modelo da buenos resultados.

se define un comportamiento para cada estado del personaje.

Estado 1:
Estado 2:
Estado 3:
....

Normalmente en un estado se volverá a uno anterior para que haya un comportamiento cilico y tambien habra un estado con ruptura donde se vaya a un camino donde se llegue a un estado final.

Por ejemplo la muerte del enemigo. Puede haber varios punto de ruptura como varias formas de matar al enemigo o varias formas de representar la muerte del enemigo.

Esto no solo se aplica al comportamiento de los personajes en un Ia basica. (No te engañes casi todos los juegos tienen IA basica implementada de esta manera).
Tambien se aplica al juego y el desenlace en distintos finales y otras cosas por el estilo.

En relidad el univero es una gran maquina de estados (finta o infinita esa cosa esa disyuntiva no es problema mio).



(E1)
/ \
(E4) (E2)
\ /
(E3)
|
(EF)


El paso de un estado a otro dependera de factorees como el tiempo los botones persionados por el usuario. El estado del usuario!!
En definitiva plantea tu juego como una maquina de estados compleja.
Cuando vayas avanzando verás que los estados se aplican con los llamados lenguajes scripting o con metalenguajes como XML y las acciones con scripting o directamente en C/CPP o en el lenguaje en el que programes.

NOTA: Por cierto al diagrama de estados le faltan las flechas y los factores que hacen que se pase de uno a otro.

Hokutoy
02/09/2005, 18:25
Buenas!
Lo que yo intentaría es, como bien dicen, crear un sistema ciclico de estados. Te pongo un ejemplo (simple/cutre aunque la verdad es que justo estoy empezando con esto de la I.A.):

I.A del enemigo :

* E1( Radar)
- Se "chekea" el campo de vision en busca del protagonista o de sus balas.
- Si no se detecta al protagonista dentro del campo de vision se pasa al E2
- Si se detecta al protagonista se pasa al E3
- Si se detectan balas del protagonista se pasa al E4

*E2 (Radar_false)
- Si no se ha detectado al prota ni a sus proyectiles pasamos a hacer que el personage siga caminado por su ruta premarcada, al azar o en linea recta (eso es cosa tuya) unos cuantos pasos.
- Se pasaría al E1 para reempezar el bucle

*E3 (Radar_true)
- Si se detecta al ptotagonista dentro de nuestro radio de accion (la grandaria de este lo decides tú) hacemos que, por ejemplo, disparemos una bala en la dirección donde se encuentra el protagonista
- Se pasaría al E1 para reempezar el bucle

*E4 (Danger)
- Si se detectan balas del prota en nuestro radio de acción se entraría en el modo "danger" donde se realizarían movimientos evasivos, defensas, a cubrirse y esas cosas.
- Se pasaría al E1 para reempezar el bucle


Este cutre-ejemplo, en teoría, haría que tu enemigo fuera deambulando por la pantalla por su ruta marcada hasta que "viera" al heroe. Al verlo se quedaría quieto y se pondría a dispararle. Si el heroe contrataca el enemigo intentaría esquivar las balas.

Como ves es un ejemplo para que veas como tendría que ser la mecánica.
Si quieres aprender un poco de I.A te recmiendo que le heches un vistazo a programas como ROBOCODE o a juegos como Carnage Hearth de PSX :)