Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Creador de juegos GM en Noviembre 01, 2012, 05:06:29 PM

Título: como hacer una IA (SOLUCIONADO)
Publicado por: Creador de juegos GM en Noviembre 01, 2012, 05:06:29 PM
buenas,soy principiante como lo pueden ver en mi perfil, quiero un tutorial super super detallado
de como hacer una IA de naves. Desde ya muchas gracias.
Título: Re:como hacer una IA
Publicado por: Mgbu en Noviembre 01, 2012, 06:44:38 PM
Bueno, no la vamos a hacer nosotros, tenés que hacerla vos ;)

La idea es hacer actuar al enemigo depende la situación, como lo haría un humano, algo así como:
Y así...

Eso pienso que es lo básico, luego puedes hacer que nop se acerque directamente si no moviendose al costado para que sea más dificil dispaarle (como los creepers del minecraft), también podés hacerlos esconder si hay un obstáculo cerca, esquivar los disparos que vienen... Pero ya es bastante más difícil
Título: Re:como hacer una IA
Publicado por: ferhand en Noviembre 01, 2012, 10:37:03 PM
     Saludos makero "Creador de juegos GM":


  Argumentando la respuesta de mi amigo Mgbu, no está de más decir que el juego debe tener las posibilidades de interactuar la IA (Inteligencia Artificial) con el "character" del juego que debe ejecutar las acciones.

  O sea, el "character" que va ha ser utilizado por la IA debe tener bien determinados "los controles", las diferentes acciones y así la IA solo debe "ordenarle" moverse a la izquierda o disparar, etc...

  En pocas palabras y esperando que me entiendas. El código debe estar organizado para que la IA interactue con los "characteres". De lo contrario tendrías la IA entremezclada con el resto del código. Muy difícil para crear nuevas acciones al character o mejorar o arreglar la IA de esa forma.
Título: Re:como hacer una IA
Publicado por: pikamaker en Noviembre 02, 2012, 12:14:12 AM
Hola compañero (https://dl.dropbox.com/u/100090544/emoticons/2.bmp)
Como siempre estoy de acuerdo con Mgbu
Te voy a decir lo que hago yo a la hora de hacer un enemigo:
lo primero es que no lo pienses como algo complementario para poder terminar el juego, hazlo con creatividad y ponle la misma garra que pusiste al hacer el personaje principal.
Pon variables de estado a tu pj: por ejemplo si tu personaje no tiene balas haz una variable que se active y que el enemigo (al estar la variable activada) ataque con mas fuerza; tambien podrias hacer que al estar tu personaje en el estado optimo, el enemigo tienda a retroceder y atacar de lejos.
esto es muy facil de hacer usando algunos if y queda muy chulo no poner numeros (por ejemplo al medir distancias "if distance_to_object()<8") entonces en vez de "8" ponemos una variable_distancia y así el muy facil regular la dificultad.
espero haber sido de ayuda (https://dl.dropbox.com/u/100090544/emoticons/3.bmp) si no me supe explicar bien en algo no dudes en preguntar!
Título: Re:como hacer una IA
Publicado por: Creador de juegos GM en Noviembre 02, 2012, 12:52:33 AM
 :GM8: hola, muchas gracias a todos, cuando tenga algún puntito se lo daré. ¿me podrían dar
scripts, o algo así para que me pueda servir de utilidad?. Desde ya muchas gracias.
pd: entiendo lo que dice Pikamaker. Creador de juegos GM 
Título: Re:como hacer una IA
Publicado por: penumbra en Noviembre 02, 2012, 02:02:53 AM
BUeno, trataré de responder a la pregunta original, lo mejor posible que mi novatez lo permita.

El 90% de las veces, IA significa la manera en que se mueve el mono/nave/enemigo, etc

Esto quiere decir que desas programar el movimiento para que responda sin la intervención directa del usuario. O sea, que vas a manipular las variables 'x' y 'y' del objeto en cuestión.

en GML, el objeto se mueve cuando le sumas o le restas unidades a su posición, es decir, a sus variables 'x' / 'y'. Ahora, un script 100% a la medida, no creo que te llegue caído del cielo. ¿POr qué? Bueno, principalmente
porque no especificas cómo se comportará la nave, ni si harás un shooter horizontal o con vista cenital. Alguien pensará en hacer que la nave se mueva de lado a lado, otro más de arriba a abajo, otro más en zig zag, otro que persiga a la nave protagonista o que dispare de tal o cual forma.

Volviendo a la pregunta original, el objetivo principal es controlar las variables x y y de manera "inteligente". De entrada tienes que tener el objeto que representa tu nave y el objeto para la nave enemiga. La nave enemiga tiene que saber la distancia y la dirección donde está la nave protagonista. Para eso usarías funciones como

point_distance
point_direction


cuando sepas esos datos, querrás mover la nave de alguna manera (no especificada). Es decir, llega el momento de sumarle o restarle unidades a alguna o ambas variables x e y, de tal manera que la nave enemiga se vaya aproximando o alejando a la posición de la nave protagonista. point direction devuelve el valor del ángulo de la trayectoria recta, jugando con ese ángulo, puedes conseguir variaciones en la trayectoria de la nave. Después de mover la nave, debes saber si ya se alcanzó la posición deseada o si hay que seguir moviendose en la misma dirección o hay que cambiar la dirección, etc, etc.

Una IA falsa o tramposa pudiera hacerse guardando pares de valores para x e y en un arreglo, de tal manera que esos pares definan el movimiento de la nave, dando la impresión que se controla por sí sola. PAra que no se sienta tan mecanizada dicha trayectoria, puedes aleatorizar los valores de la tabla dentro de cierto rango, o modificar el giro de la nave, etc.

Esto sería un ejemplo muy rústico de IA.

Saludos.

Título: Re:como hacer una IA
Publicado por: Mgbu en Noviembre 02, 2012, 11:06:14 AM
Totalmente de acuerdo com Penumbra :P

Animo, hacer una IA es una de las partes más divertidas de hacer juegos
Título: Re:como hacer una IA
Publicado por: Marron121 en Noviembre 02, 2012, 11:45:31 AM
La verdad es que es difícil hacer una IA... pero también es muy divertido,sobretodo cuando pasan cosas extrañas e inesperadas  XD