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.
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:
- Si se está apuntando mal apuntar hacia el jugador
- Si está bien apuntado, disparar
- Si se está muy lejos moverse más cerca
- Si se está muy cerca alejarse
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
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.
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!
: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
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.
Totalmente de acuerdo com Penumbra :P
Animo, hacer una IA es una de las partes más divertidas de hacer juegos
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