Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Inteligencia Cooperativa

Iniciado por Daemon, 20 de Diciembre de 2005, 11:42:35 PM

« anterior - próximo »

marcode

 Starcraft para ganarte debía jugar al menos con 2 o 3 equipos, y si tiene que estar semi-dirigido mediante scripts para tener alguna táctica, no lo tomaría como ejemplo de IA cooperativa, aunque sí se podrían tomar de él algunos conceptos o técnicas específicas.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

Daemon

 Parece que para los RTS lo que mas triunfa son las maquinas de estados jerarquicas.

http://www.gameai.com/games.html#C

Citarmarcode
Starcraft para ganarte debía jugar al menos con 2 o 3 equipos,

¿Has probado a jugar en multiplayer solo contra la maquina? Si incluso asi me dices que tu solo podias contra 3 IA's al mismo tiempo... ¡estas hecho un autentico monstruo! O_O (uoh)  
Imagina todo lo que puedes hacer. Despues hazlo.

marcode

 Por lo que yo recuerdo 2 contra mi no me ganaba ni de coña, a no ser que estemos hablando de un modo de juego diferente, a partir de 3 quizás, y si lo hacían era usando la fuerza bruta y sin el inconveniente de tener que usar un ratón para controlar a montones de bichos.

Siempre tengo la imagen de ese tipo de juegos de unidades enemigas suicidándose contra mis defensas. Aunque tampoco es mi intención criticar a uno de los mejores juegos de la historia pero lo veo un poco antiguo. Estoy convencido de que si sacan el Starcraft 2, el planteamiento va a ser diferente.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

dracks

 Mmmm....

El starcraft era un buen juego, pero con la version 1.09, la inteligencia artificial estava muy mejorada (si no mas en la velocidad de construir massas de unidades)

Inteligencias artificiales buenas, yo no he visto ninguna en un juego de estrategia, solo recuerdo que el Z estava muy currado este tema, porque cada unidad tenia su propia intelignecia, y reaccioanva de formas distintas a la misma situacion...

Creo que si se ha de hacer una IA cooperativa ha de ser simplemente, como si 2 personas cooperassen, por passo de mensajes (o que sea la misma unidad que se de cuenta); yo, la verdad, cuando hablais de cooperacion entre unidades, pienso en un juego X (que los englova a todos y a ninguno de los que he jugado; normalmente mas para mi juego) y lo que pienso es el caso que te ataquen a una unidad... que esta unidad no puede alcanzar al enemigo, y las 2 unidades de tu lado cuyo alcance es muy grande, pero vision es nula, no ven a la unidad atacante, la unidad atacada, buscara todas las unidades amigas cercanas a ella, y les mandara un mensaje de socorro, a parte de ir a atacar a la unidad atacante, si la ve, claro esta... y que las unidades defendientes, en caso de estar en un estado que no sea vigilar, eliminaran el mensaje, pero si estan en vigilar, que estas reaccionaran y apoyassen a la unidad atacada, destruyendo a la atacante... (no se una situacion) (si no fuera por las practicas de la uni, me ponia a implementar-lo a mi juego... :'( )


Otra cosa, si quereis una buena IA, iros a buscar a los shoot'm'ups, son los que mas se curran las IAs, a nivel de estos detalles, los RTS, normalmente llevan una IA muy cutre, yo recuerdo al dune2 que llegava a tener implementada una IA, que si al atacarte, una unidad se avanzava a las enemigas, las esperava o llegava a retirarse y todo... la verdad, para ser del 92, tambien curradilla... aunque las unidades en si, eran muy cutres, y las construcciones de edificios, aun mas, tenia la maquina predefinido donde iba cada edificio (que matada!!!! :D )



Suerte... Pero creo que este post se esta poniendo muy interessante

iempo: dimension del universo en el que vivimos que se caractiza por el hecho que el ser humano sea incapaz de conocer...

mimosete

Bueno, es cierto que los RTS llevan una inteligencia artificial muy simple, una serie de directrices implementados con scripts, pero también los hay que tienen una serie de orientaciones tácticas y generales de movimiento de tropas, una estrategia superior, por ejemplo los de la serie Shogun-Medieval Wars, etc... Ahi ves como los arqueros se adelantan para hacerte una jugarreta y luego vuelven atrás, etc...

En general ese aspecto no está muy desarrollado, ahi notas cuando un jugador es humano o no. Si te gana la máquina es porque construye más deprisa y saca soldados más rápido que tu, no otra cosa, o sea estrategia a lo bruto, a "golpe de ratón".

Como en la serie Shogun ese aspecto no cuenta o cuenta poco, tienes los soldados que tienes desde el principio, el ordenador se tiene que poner las pilas para ganarte estratégicamente.

En mi opinión, si el juego está orientado a la economía, lo que es lo normal en la serie Warcratf, Ages, etc... no importa tanto que se afine en la estrategia militar, es importante pero no decisivo . La IA superior de que hablais iría mejor en otro tipo de juegos, en que el jugador está más liberado del aspecto económico y se concentra en las tácticas y estrategias de ataque/defensa.

Repoker

Un hecho destacable de la IA en los juegos de la saga TOTAL WAR es que la IA ha ido empeorando en favor de mejores gráficos ...

Soy un orgulloso poseedor de todos los títulos de la saga, y creo que está bastante claro que a partir de ROME la IA tiene un nivel bastante mediocre.. en SHOGUN los generales enemigos casi nunca atacaban si no contaban con algún tipo de ventaja táctica sobre el jugador.. además de la ventaja de poder mover todas las unidades a la vez, cosa que un jugador humano no puede hacer :)

Para comprobarlo, basta ver cómo en SHOGUN los regimientos IA se organizan para aprovechar tus puntos flacos, mientras que en ROME raramente cambian la disposición de las tropas y las batallas suelen acabar en masacre normalmente a favor del jugador humano (a menos que sea un patata). Incluso en asedios a ciudades o en amplia desventaja numérica.

Otro ejemplo muy sencillo es la manera en que las tropas IA en SHOGUN hostigan.. en ROME siempre acabas pillándolos y arrasando con ellos mientras que en SHOGUN siempre se las arreglan para causarte bajas sin que puedas hacer otra cosa que gritarles ..

Vicente

Yo tengo una opinión confusa respecto a ese tema Repoker: a veces pienso como tu, pero no siempre. El problema del Rome en mi opinión es que las unidades romanas son la ostia: las legiones reparten a diestro y siniestro y además van armadas con pilums, con lo cual incluso pueden meter a hostigadores que se les acerquen. Pocas cosas causan problemas a una legión. Cuando juego con roma si noto esto que dices tu de que la máquina parece más mala. En el Shogun no existia ninguna tropa con la capacidad ofensiva/defensiva de una legión (buen ataque, buena defensa, formación de tortuga y pilums). Incluso las unidades republicanas de antes de las reformas de Mario que no pueden formar en tortuga son bastante mejores que casi cualquier otra cosa del juego.

En cambio ahora jugando con los griegos, las cosas cambian que no veas (usando el GreekMod). Las falanges griegas no son ni de lejos tan buenas como las legiones, ya que son muy dependientes del ángulo de ataque (solo son buenas hacia delante por las sarisas), pero además tardan la vida en maniobrar o girar para encarar nuevos enemigos. Cuando juego con los griegos si que veo a la máquina realizar muchas más maniobras de flanqueo y jugar de forma más dinámica (intenta separar a tus unidades para rodearlas).

Está claro que siempre le veo alguna merluzada, pero bueno, es una máquina ;) De todas formas, tendría que volver a mirar el Shogun, que hace muchísimo que no juego.

Un saludo!

Vicente

guibix

Un tema muy interesante, lástima que llego tarde, pero a ver si lo podemos animar.  :D

Des de, mi punto de vista estoy de acuerdo en muchos de los planteamientos que se proponen, intentaré hacer mi propia síntesis del tema a partir de ideas que han salido aquí y de otras obtenidas en otras fuentes.

En primer lugar me gustaría contar cómo seria mi juego ideal, aunque lejos de ser realizable, no creo que se tarde en disponer de la tecnología adecuada.
Seria un juego que estaría a medio camino de ser shoot'm'up y de un RTS. La idea es que empiezas como soldado de una escuadra que, forma parte de un pelotón, que a su vez forma parte de una compañía, etc. Tanto en el juego individual cómo en el multiplay, todos los demás soldados no jugadores serian boots  Tu eres un simple soldado y si sobrevives lo suficiente pasas a ser sargento de escuadra e ir subiendo hasta los rangos más altos posibles. A partir del rango de capitán de compañía (por ejemplo), ya no usas tanto tu visión sino que usas más el mapa. Lo más parecido a esto que he visto es el “Operation Flashpoint” y el “Armed assault” lo que pasa es que como shoot'm'up es muy tosco y difícil de controlar y los enemigos tienen una puntería infernal más que ser listos y cómo RTS no tiene más que un nivel de jerarquía y la ejecución táctica no se puede usar bien mediante el mapa.
Pero hablamos de la IA que necesitaría este juego. 8)
En primer lugar y sin duda tendría que tener una IA de shoot'm'up en cuanto a los individuos. Cómo variable añadida, debería usar las órdenes del mando inmediatamente superior para realizar la acción individual comparando el entorno con las órdenes para tomar una decisión. Al mismo tiempo el individuo informa a su mando de su situación para valorar la situación del grupo y tomar la mejor decisión para ejecutar la orden. Incluso se podría llegar a la situación de que no quiera cumplirla y retirarse en vez de aguantar una posición (por ejemplo). El mando a su vez informa a sus superiores hasta el  mando supremo que organizará la estrategia global. No es necesario complicar mucho la IA de los mandos superiores ya que la escalera jerárquica hace más simple la cantidad de unidades que se deben manejar, por ejemplo: eres el capitán de una compañía y tienes 3 pelotones de asalto i uno de apoyo. Cada pelotón de asalto está compuesto de 3 escuadras de asalto y una de apoyo y el pelotón de apoyo 3 escuadras de apoyo y una de asalto. Si cada escuadra hay 10 hombres y hay 16 escuadras, tenemos que mandar a 160 hombres (esta jerarquía es mas o menos la misma que los ejércitos reales) Se podrían reducir a 16 grupos de 10, pero a tiempo real y des del punto de vista 3D del capitán se haría muy engorroso. Lo suyo de las jerarquías militares, es que ese capitán sólo debe preocuparse de los pelotones que son 4, si hay que tomar una colina, sólo tiene que dar 4 órdenes (o secuencias de órdenes) una por pelotón y confiar que lo que ordenen sus tenientes de pelotón sea lo más apropiado aunque si quiere puede dar órdenes a una escuadra o a un individuo en concreto.

Para no enrollarme más :oops: , propongo que a quién le interese este tema critique y/o aporte ideas de cómo se podría lograr. Para empezar creo que con una combinación de estados mediante grafos y lógica difusa para dar el aspecto más humano en las decisiones, de otro lado yo he probado redes neuronales recursivas para la comunicación jerárquica dónde cada individuo tiene una neurona para valorar su estado ponderando las ventajas, desventajas y el estado anterior (+1 máxima ventaja y -1 máxima desventaja), y lo transmite a su mando. Esto se pondera hasta el mando superior que si resulta un número superior a un umbral positivo la orden es atacar, si es inferior a un umbral negativo,  la orden es retirarse y si está entremedio, la orden es aguantar y defender. Esto se transmite a los mandos inferiores que acatarán la orden si no se contradice mucho a su estado propio. Al final no tiene un comportamiento muy realista pero valora muy eficazmente lo que se debe hacer (sólo con 3 posibilidades). Por otra parte no hace falta calcularlo cada frame, sólo cuando sea necesario.
A ver si hay alguna otra idea...

Gracias por aguantarme  :oops:
os hombres mueren pero sus ideas traspasan los siglos.
¿que es mas efímero la materia o la mente?

RobiHm

el problema de la IA de los juegos actuales simplemente se transmite a o tienen un bonus de producción/recursos o ven todo el mapa...

si alguien a jugado a la saga de civilization habrá notado que el resto de civilizaciones cooperan entre si siempre más que contigo, a menos que tu seas una de las muy fuertes y con mucha diferencia al resto, todos saben donde tienes la ciudad menos defendible y todos saben de cuantos soldados dispones y en que zonas, y eso... muy real me da que no es, además, la máquina tiende a amontonar unidades en ciertas zonas y a dejarlas paradas sin ton ni son...

en la saga total war, es cierto que ha perdido gran parte de su lógica, hasta llegar al punto de resistir un asedio simplemente con arqueros y en 1 defensor por cada 20 atacantes, el problema radica en que la máquina coordina todo como un ejército global, y no separa tareas. Ésto se ve claramente cuando mueves tu ejército, al hacer un contramovimiento la máquina orienta x grados todo su ejército y realmente no se si valora correctamente las vulnerabilidades que eso causa.  La solución a éste problema es sub dividir el mando de la IA del ejército en grupos. Según la situación y la civilización se debería trazar una defensa/ataque buscando potencializar las habilidades conjuntas del ejército. Al subdivir la defensa/ataque en varios subgrupos, cada subgrupo tiene un papel predominante, acechar, atraer, despistar, masacras, aguantar la posición... más concreta y de éste modo se evita el tener que estar baratando todo el rato posibilidades que lo único que hacen es ocupar recursos. Optimizando tareas concretas según el tipo y nº de unidades iniciales y refrescando dichas tareas cada ciertas causas/eventos se consiguiría un papel más humano, ya que realmente es lo que un jugador hace.
Pero realmente hacer eso supondría un gasto mayor y menos palpable para el mercado comercial que el añadir x polígonos/animaciones a las unidades  xD

Citar
En cambio ahora jugando con los griegos, las cosas cambian que no veas (usando el GreekMod).

El problema de ese tipo de juegos es que aglutinan las tropas sin coordinar las defensas de las demás zonas, yo con los cartaginenses conquisté roma rápidamentey con los griegos también/egipcios/hispanos... la que más me costó a la larga fueron los cartaginenses xk tenían a mi entender las peores unidades del juego, aunque muy manejables...



referido al sc, tiene sus cosas buenas (aunque la máquina siempre sepa donde te encuentras), cuando atacas a una unidad enemiga rápidamente acude el resto de su ejército al lugar de la trifulca, (aunque sean acciones suicidas y tal), y bueno para su tiempo creo que es una especie de seudoIA cooperativa. Para los que decían que pueden contra 3 máquinas... poco han jugao xD, puedo trincarme a 5 ordenadores (ellos jugando contra mi) y si tengo un aliado CPU no zerg hasta a 7


Citarsolo recuerdo que el Z estava muy currado este tema, porque cada unidad tenia su propia intelignecia, y reaccioanva de formas distintas a la misma situacion...

buf... me acuerdo que cuando te atacaba una unidad enemiga y tu tenías tropecientas, empezaban a gritar los muy gayolos que estaban rodeados...

el juego que más me sorprendió de los que he jugado ha sido el empire earth, se encargaba de hacer y mejorar un par de tipos de unidades que se complementaban y enviaba batallones formados únicamente de esas x unidades, de repente avanzabas y empezabas a ver morir a tus unidades por un batallón de francotiradores para ver como a continuación se lanzaba sucaballería sobre los supervivientes... eso me llamó la atención, amén de que enviaban al profeta a derribarte o desembarcarte por zonas vulnerables de tu base y abrirte una brecha en la muralla...


menuda parrafada...
Web : Indómita
Blog : MiBlog
Evobas : Evobas
Kobox : Kobox

Daemon

Interesante la idea de usar redes neuronales para tomar decisiones en un rts. Aunque creo que haria falta especificar mas en que consiste ese estado que forma la entrada de la red. Podria ser, p.e., los atributos de la propia unidad y los de la unidad/unidades a las que se esta enfrentando (PV, armadura, puntos de ataque). La funcion de activacion que escogieses daria el tipo de comportamiento de una unidad u otra: por ejemplo, si el rango es entre [-1, 1] lineal seria una unidad normal, ni valiente ni cobarde, exponencial una unidad suicida de las que no huyen nunca y  hiperbolica una unidad que podria denominarse "histrionica" en tanto que ven la victoria en cuanto ganan por un poco y tambien se ven derrotados cuando pierden un poco :)

Cuando esta informacion llegase a la neurona del nivel superior ocurriria lo mismo, pero agregando toda la información de las neuronas de la capa de los"soldados" y la decision de este nivel subsumiria a las de este. Ademas estoy seguro que esto puede dar mucho juego. Si se quieren formar subgrupos yo haria una red en la que el nivel de "soldados" se tomase en su conjunto, es decir todas las neuronas "soldado" tuviesen conexion con todas las neuronas "sargento". Esto es asi para hacer dinamica la asignacion de grupos y desviar soldados de uno a otro grupo cuando estos lo necesiten. Adems todos estos comportamientos se podrian controlar mediante aprendizaje, y ese es el potencial que tendria esta red, que daria una sensacion mas humana y aparte ¡aprenderia a jugar mejor cada vez que se enfrentase a alguien!

Buena idea, si señor.
Imagina todo lo que puedes hacer. Despues hazlo.

guibix

Cita de: "Daemon"creo que haria falta especificar mas en que consiste ese estado que forma la entrada de la red.
¡Por supuesto! Yo he probado muchas combinaciones pero a nivel teórico lo simplifiqué para testearlo más fácilmente a “1 todo va muy bien”, “-1 todo va fatal” y “0 no va ni bien ni mal”  con todos los estados intermedios. Lo mismo para las salidas, que las simplifiqué a los tres estados básicos de la estrategia (atacar, defender y huir). Había pensado que con una red nuerodifusa se conseguiría con facilidad el tener muchas variables para la entrada (armadura, arma, moral, estado anterior, tipo de terreno, nº de enemigos, nº de amigos, etc.) y muchos estados de salida (atacar, defender, emboscar, ocultarse, apoyar, retirada táctica, etc.) pero aún estoy en ello, aunque a nivel teórico creo que voy por buen camino, o no...
Cita de: "Daemon"Si se quieren formar subgrupos yo haria una red en la que el nivel de "soldados" se tomase en su conjunto, es decir todas las neuronas "soldado" tuviesen conexion con todas las neuronas "sargento". Esto es asi para hacer dinamica la asignacion de grupos y desviar soldados de uno a otro grupo cuando estos lo necesiten.
Esto también lo hice conectando los soldados con los soldados y los sargentos con sargentos con un peso más alto con soldados más cercanos dentro de la formación y más bajo con soldados más lejanos, lo mismo con sargentos, tenientes, etc.
os hombres mueren pero sus ideas traspasan los siglos.
¿que es mas efímero la materia o la mente?

Tei

Cita de: "guibix"¡Por supuesto! Yo he probado muchas combinaciones pero a nivel teórico lo simplifiqué para testearlo más fácilmente a "1 todo va muy bien", "-1 todo va fatal" y "0 no va ni bien ni mal"  con todos los estados intermedios.

Bueno, no se si meto la gamba tratando el asunto. Pero tengo que hacer aqui un comentario.

En entrada, habra una maquina que combierte lo del mundo exterior en lenguaje del mundo de la cosa esta. Por ejemplo en el exterior binario, y en el interior un numero de coma flotante entre 0 y 1.
Pero luego en el exterior otra maquina que combierta del lenguaje interno al externo. Desde flotante 0 hasta 1 a binario.

esta maquina de salida puede tener este aspecto:


float fBit = 0.32f;
bool bit;

if ( fBit < 0.5)
  bit = false;
else
  bit = true;


Tampoco veo una necesidad especial de utilizar en salida logica terciaria.
De todos modos estos temas estan demasiado bien explicados en los libros de texto, no son comentables en un foro de internet porque esta demasiado claro en los libros para que sea adecuado opinar :D

Vicente

En las redes neuronales suele tener sentido el tener tres estados:

- si
- no
- no sabe/no contesta

Es bastante normal tener una frontera de decisión dentro de la cual la red no emite una respuesta porque con la información que tiene no es capaz de decidir (ruido, etc etc).

Un saludo,

Vicente

guibix

También tienes razón Tei, lo que pasa es que este sistema no lo programé con C# ni ningún lenguaje standard, sino que usé las redes neuronales de Framsicks que es un programa para crear vida artificial con un código genético, que da mucho juego a la hora de crear redes neuronales recursivas y ver cómo actúan. Además con el lenguaje script que incorpora, puedes programar de todo y más
os hombres mueren pero sus ideas traspasan los siglos.
¿que es mas efímero la materia o la mente?

yens

Pues ahora que recuerdo en Praetorians cuando viciaba al jueguecito en cuestión me suena de que las unidades aprovechaban la ventaja de posiciones altas para arqueros, esconder tropas entre los árboles y demás vegetación e incluso formaban los escuadrones cierto orden a la hora de moverse y atacar no?






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.