Buenas, para un proyecto que tengo en mente (aunque por ahora no lo voy a iniciar), me gustaría practicar básicamente una IA. Es fácil pensar el ejemplo más extendido: un juego de lucha.
Lo que tiene este mundillo que es la programación, es que una idea, en un principio compleja, hay que saber desenvolverla en ideas más simples para saber traducirlas a un código que dé el mejor resultado posible. Por ejemplo, para conseguir que un personaje salte, hay que darle un despegue, una gravedad, un punto muerto (el suelo), y una ecuación que una ambos conceptos. Fácil, ¿no?
No todos tenemos el mismo concepto de conseguir algo en código. Quien usa eso puede pensar, en lugar de poner suelo, que al alcanzar un determinado valor el cálculo se paralize. Es otra manera.
Ahora, si lo aplicamos en un juego de lucha, que es donde me interesa, hay 1375207587097 combinaciones. Podemos conseguir una IA reservada, que no se lance a atacar, agresiva, que se acerque a otro para atacar, que cuando el otro se acerque a x distancia ataque, o se defienda. Lo que digo, combinaciones hay a matar.
Comprenderéis que conseguir una IA equilibrada es difícil. Por eso me interesa vuestro modo de "descomponer" una IA para que sea lo que tiene que ser, inteligente. Por poner un ejemplo, no es la primera vez que oigo de alguien que, o su IA era el tonto del pueblo, o el Dios de los videojuegos.
Mi idea general (pero muy general) sobre una IA es que hay que darle al sprite 3 cosas: las acciones, el objetivo, e indicarle el momento apropiado para usarlas.
También existe (aunque ya es complicarse mucho la vida) la IA en "continuo aprendizaje", que sería movernos nosotros, guardar en memoria las variables resultantes, e indicarle a la IA que las use.
Como véis no os pido código, sino vuestras ideas de cómo hacer una IA que sea eso, inteligente.
Salu2
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderás trucos para resolver tus dudas antes.
No he programado una IA en mi vida,
sin embargo, creo que para conseguir diferentes modos de dificultad, basta con modificar los tiempos que tarda en reaccionar, o cambiar la manera en que reaccionará. Pero como digo, esto haría que a la larga sea fácil saber cómo reaccionará la IA, ¿no?
Salu2
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderás trucos para resolver tus dudas antes.
Uff, el tema de la ia es
Uff, el tema de la ia es algo muy complicado, como para resumirlo aquí XD, hay muchas tecnicas para hacer una, y muchos tipos de ia, en realidad casi ningun juego utiliza autentica ia, solo la simulan XD.
La tecnica mas utilizada es la de la utilizacion de maquinas de estado (muy utilizado en juegos de lucha), ¿que es eso? pues no es mas que un programa que funciona mediante condiciones (lo que estas utilizando XD), como " si veo al jugador lo persigo, si me dispara me escondo, etc..." una ia de este tipo puede ser tan compleja como el programador quiera, y poede llegar a ocupar muchas lineas de código XD.
Luego ya estan algoritmos de búsqueda, las redes neurales, o la ia basada en reconocimiento de patrones, pero eso ya son temas mas chungos XD, lo ideal seria fusionar maqunas de estado con laos algoritmos de busqueda, con eso ya puede darte la sensacion de que estas ante algo que realmente piensa XD
Yo suelo utilizar maquinas de estado simplemente :)
saludos
Mi blog: http://creandomisvideojuegos.blogspot.com
Pues la IA tiene que ser
Pues la IA tiene que ser hábil y mas en un juego de peleas ya que si no lo es el juego pierde toda la esencia...
También ha de tener los conocimientos de cuando X sprite esta a XY coordenadas para saber que hacer en ese momento. Aunque lo que mas original que se le puede poner a un CPU es un tiempo para realizar accion(nadie quiere un robot que rapido vaya a donde tu estes y utilize los puños infinitamente hasta que te alejas, si le pones que al X tiempo vuelva a comprobar las variables yo pienso que quedaria mas realista.
Salu2
Al principio
lo que tenía contemplado era "enseñarle" los movimientos, el problema es que habría que guardar los datos en FAT para no tener que repetir la acción todas las veces que se juegue, y si no consigo guardar en memoria una canción, no digamos todas las variables...
Además, el problema que tienen los juegos de pelea, es que a los personajes que controla la IA les da por actuar de la misma manera en determinadas situaciones. A nadie le gusta conocer al dedillo cómo va a reaccionar la máquina, ¿no? Estoy pensando en darle varias opciones, y usar la función de número aleatorio para que elija cómo reaccionar... el principal problema es que lo más probable es que no sea un movimiento rápido.
Salu2
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderás trucos para resolver tus dudas antes.