¿Inteligencia Artificial, o Programacion de Comportamiento?

Publicadas por Jose Carlos Tamayo

Como les comente antes, estaba pensando en hacer un pequeño demo del juego debido a la informacion que me dieron los alphatesters ( mas que todo fueron quejas =P, porque no se entiende muy bien como funciona el juego). Asi que meditando las opciones a mano, pense en ponerle inteligencia artificial al juego. Es la primera ves que entro al mundo de la programacion de IA o mejor dicho programacion de comportamientos como algunos academicos le dicen a la programacion comercial de IA para juegos.

¿Inteligencia Artificial o Programacion del Comportamiento?
Y es que al estar buscando informacion del tema, descubri que lo que creemos que es IA en la mayoria de juegos comerciales, realmente son scripts prefabricados de como se va a comportar la unidad. No es que la unidad planee lo que seguira a continuacion, lo que pasa es que esta programada de tal manera que al comeinzo parece nuestra computaedora esta pensando pero si se juega una y otra vez, su comportamiento empieza a repetirse, osea aburrimiento de los jugadores. Dicho de otro modo, la IA en la mayoria de juegos es un gran SWITCH CASE, o muchisimos IF ELSE anidados para dar la impresion de Inteligencia.

No todo esta Perdido, Creatures, un juego con IA verdadera
Por supuesto hay juegos donde si existe una verdadera inteligencia artificial, el caso mas famoso es el juego Creatures, uno de los juegos mas exitosos con verdadera inteligencia artificial. Su creador Steve Grand, autor del libro con un titulo nada humilde: Creation:Life and How to Make It es un informatico teorico que revoluciono el mundo de la IA para siempre demostrando que es factible usar IA del mundo academico en un juego. Aqui encontre un articulo donde hablan sobre algunos aspectos claves de Creatures y otro donde hablan sobre el uso de IA en los juegos.

¿Quiero ser Programador de IA que hago?
Lo primero y aunque les duela teclear, es usar a tu amigo google. Recomiendo buscar con la palabra del tipo de juego que deseas saber mas y le sumas AI como 'Real Time Strategy AI' o 'First Personal Shooter AI'. Vana encontrar algunas gemas en las primeras busquedas. Wikipedia tambien es valido para estos casos

Lo Segundo, ya macerados con sus busquedas en google y wiki, es encontrar libros sobre el tema. Un libro que me encanto fue AI Game Programming Wisdom, donde te explican los conceptos basicos de IA aplicada a juegos.

Tambien recomiendo visitar este Journal, no lo encontre yo, me lo paso un ingeniero de mi Universidad, pero hay demasiados articulos interesantes sobre inteligencia artificial para juegos que van a salir muy felices de ahi.



¿Te gusta la pagina?, socializame haciendole click a tu color preferido:

Add to Technorati Favorites Digg! del.icio.us.me

6 comentarios:

  1. Noshy dijo...

    Como estas picante, una consulta, podrias hacer un post de como se calcularia o como seria el algoritomo de atake y defensa???? ya que en mi proyecto ya estoy en esa etapa y no encuentro absolutamente nada de nada o por lo menos como lo hciste vos en Xeno y ver si saco alguna idea de ahi.

    Saludos, Noshy

  2. Jose Carlos Tamayo dijo...

    Hola Noshy, que tal, puos despues del siguiente post haber si hago uno sobre el algoritmo de ataque y defensa en Xeno, pero te adelanto algo: el algoritmo que uso es medio simple pero es una buena base para comenzar.

  3. Eversor dijo...

    Hola , prosigo por aqui el comentario de el algoritmo de batallas ya que hay una parte que seria un tanto IA , la cosa es que para un motor de batallas realista lo mejor es unidad por unidad y luchando asi , pero no es realista del todo , entonces la idea es que cada unidad elija su adversario segun unos patrones y decida si atacarlo junto o separado , por poner un ejemplo , 1 TITAN (la nave mas fuerte) y un devastador (una nave buena pero nada que ver) , supongamos que es el "turno" de la TITAN , entre los enemigos elegiria (segun lo que he mirado de estrategia militar basica xD) al que mas daño le puede hacer , como solo hay uno , no hay duda , pero si hubiese el devastador y una nave de asalto , (devastador > nave asalto) elegiria al devastador , si hubiese 2 titanes , no atacarian en conjunto al devastador , ya que 1 sola puede de sobra , luego otra parte de la eleccion del enemigo , si fuese el "turno" del devastador y tuviese en frente a una titan y a un nave de asalto , aunque la titan le ofrezca mayor riesgo , lanzarse contra ella seria una locura asi que elegiria a la nave de asalto , bueno esto es muy bonito , ahora hay que hacerlo xD , pero lo qeu pasa es que puede llegar a ser muy pesado para el servidor , y llega el planteamiento de "el usuario no lo va a ver , y si hacemos una chapucilla" Xd

    saludos

  4. Jose Carlos Tamayo dijo...

    Definitivamente, con 9 millones de naves y de diferentes tipos, el procesador del server va a pedir piedad con todos los IF que le entrarian.

    Derrepente podrias trabajarlo con numeros de prioridades. Empiezas por el tipo de tu unidad mas destructora ( o el tipo de unidad que luzca mas cool, tu decides el orden) y buscas en la tropa enemiga al tipo de unidad con mas prioridad de ataque (osea a la que le puedes hacer mas daño), esto lo puedes tener ya precalculado cosa que digamos el TITAN tendria:

    Prioridad Uno : ASALTO
    Prioridad Dos : DEVASTADOR
    Priorodad Tres: TITAN

    Osea atacaria primero a las naves de asalto. Entonces se calcula cuantos TITANES tuyos podrian destruir a toda la flota de ASALTO, si te sobran titanes estos atacan a las unidades de Prioridad 2 y despues continuan con la 3 y asi. Por supuesto las unidades a ser atacadas responderian el ataque quizas dando un poco mas de estrategia al juego. Digamos que las de asalto desaparezcan como mantequilla ante el ataque de unos TITANEs pero quizas los DEVASTADORES al responder el ataque sean capaces de hacerle mucho mas daño pero solo en defensa, entonces si fuera el defensor, me convendria mandarlas a pasear a mis naves de asalto.

    O quizas mas balanceado ( estoy creativo today) divides 100 entre el numero de tipos de unidades diferentes que tenga el enemigo, y ese es tu porcentaje de ataque que recibira cada unidad enemiga, digamos tus TITANES atacan una flota compuesta por DEVASTADORES, TITANES y NAVES DE ASALTO, entonces se reparte el daño en
    33% a cada una. Por supuesto ese daño se puede multiplicar digamos de 1020 de ataque que tu TITAN le aplicaria al DEVASTADOR se multiplica por 2 ya que "tus TITANES tienen beneficio al atacar DEVASTADORES porque su laser afecta mas a los motores de los DEVASTADORES" o cualquier historia parecida.

    De cualquier caso estas dos formas te van a ayudar a ahorrar algunos ciclos de procesamiento a hacerlo usando la fuerza bruta. Weno voy a descansar los dedos creo que ameritara un nuevo post XD.

    Saludos Eversor, espero te ayude en algo, hey animate a poner tu proyecto en mi Blog, si me das una cuenta echa hasta le podria hacer un publireportaje jeje. Saludos

  5. Eversor dijo...

    me ha gustado la segunda forma , respecto a lo de dexgame en tu blog , si me dices como se hace lo hago , de todas formas lo posteare (o blogueare As u wish ) cuando este 100% que me he librado del bug de estadisticas , que me ha dado bastante dolor de cabeza estos ultimos dias , pero creo que al final lo he aniquilado

  6. Jose Carlos Tamayo dijo...

    Excelente Eversor, el circulo se completa ^^. Cuando termines lo de estadistica mandas un comments por la zona de proyectos y yo me encargo de lo demas . Saludos

Publicar un comentario