2010-06-19 18 views
5

Para probar las reglas de comportamiento de Unreal Tournament (versión 1999 o 2004) tipo de juego CTF, quiero hacer un bot en Java que sea totalmente controlable.Bot para Unreal Tournament

No AI, pero un conjunto de comandos como saltar, correr hasta este punto, etc. Un algoritmo evolutivo en tiempo real para evolucionar una secuencia de movimientos, llevarlo a la bandera del oponente y volver. No hay acciones complejas como disparar, sino evitar el conflicto. Las acciones principales deberían ser saltar, correr, rotar, mover a.

Uso de gamebots API Busco tutoriales/orientación para escribir el bot y conectarlo a un algoritmo genético como Watchmaker. Tengo pocas condiciones para una función de acondicionamiento físico y me topé con la ruta del bot. ¿Conoces algún tutorial que pueda ayudarme?

Respuesta

2

Solo una pista: mire a su alrededor aigamedev.com No estoy seguro si alguien todavía usa el motor UT 1.

Si no te importa el motor de juego real, seguramente encontrarás algunos tutoriales relacionados con los motores de ID de código abierto como Quake 3.

+0

Gracias por el tweber del sitio, resulta ser una gran fuente de información, realmente siento que una pequeña parte de mi solución está conectada con una malla de navegación a lo largo de la cual las secuencias de acción necesitarán evolucionar. Quiero buscar un buen tutorial que explique desde abajo cuáles son los pasos para escribir bot funcional para cualquier tipo de juego de FPS. –

2

Tenga en cuenta que para los algoritmos genéticos en tiempo real, generalmente es mejor comenzar por reunir un conjunto consistente de estrategias adversas (mejor si provienen de diferentes personas) y usar este conjunto para evaluar la aptitud en segundo plano, simulando juegos en rápido avance, para obtener en un tiempo razonable una serie de estrategias decentes con las que puede comenzar (es impensable que los humanos evalúen la aptitud de las estrategias aleatorias, lo más probable es que tarde demasiado tiempo). Un ejemplo clásico implementado de esta manera es el juego de damas, pero también los juegos más complejos pueden aprovechar la misma estrategia (hay un ejemplo famoso de batalla naval futurista donde la estrategia GA ayudó a derrotar oponentes humanos: no recuerdo los detalles pero los miraré arriba y editar). Una vez que desarrollaste un conjunto de estrategias decentes, puedes disparar el GA en tiempo real para que siga aprendiendo de los humanos.

También tenga en cuenta que este podría ser un proceso extremadamente lento y que no tiene ningún valor utilizar algoritmos genéticos en tiempo real, en el sentido de que es mejor recopilar estrategias de oponentes humanos y ejecutar la evolución en segundo plano, por lo que la próxima vez que juegue el mismo oponente podrías haber desarrollado una estrategia capaz de derrotarlo. A menos que tengas mucha gente jugando, en ese caso podría tener sentido, pero si los objetivos son desafiar a la gente con bots cada vez mejores, eso es lo que haría. Hacer que las personas evalúen la aptitud de las estrategias tentativas podría ser 1) lento 2) aburrido para ellos.

Unos documentos que se ocupan de los algoritmos genéticos en tiempo real (por valor de hojear el resumen y ver si está interesado):

También vale la pena mencionar, somethi Algo similar ya se ha hecho antes mediante el uso de neuroevolución (la evolución de redes neuronales con GA, NEAT es un buen ejemplo y se ha utilizado para afaik FPS), pero las consideraciones en términos de conjunto de entrenamiento siguen siendo válidas.

+1

Wow, gracias por esta respuesta y enlaces. Por favor, comprenda que soy nuevo en GA, pero la forma en que quiero hacerlo es tener un vector ei generado al azar. de cadenas que codifican la posición del bot. Comience el bot con este vector y evalúe el estado físico y ejecútelo de nuevo. Repita hasta que se encuentre una secuencia que lleve el bot a la bandera del oponente y viceversa. Creo que la mejor manera de mostrarle lo que estoy tratando de lograr es señalarle el documento original [http: //citeseerx.ist.psu. edu/viewdoc/download? doi = 10.1.1.131.5094 & rep = rep1 y tipo = pdf]. Por favor, lea y diga lo que piensa. –

+1

Es un documento muy interesante, y la codificación que tiene en mente suena bien, pero el documento habla de generar casos de prueba para detectar errores, no de aprendizaje automático en tiempo real para generar mejores estrategias de juego. Sigo pensando que deberías recopilar un conjunto de capacitación y evolucionar tu estrategia 'fuera de línea' contra ese conjunto de entrenamiento, o al menos eso es lo que yo optaría. – JohnIdol

+0

Tiene toda la razón en términos de aprendizaje en tiempo real, mi error. En mi intento inicial estaba considerando una secuencia aleatoria que mejoraría gracias a la función de aptitud que mide algunos aspectos del comportamiento del robot. Quería explorar el gran espacio de soluciones para encontrar el óptimo. Sin embargo, creo que puedo tratar de seguir tu sugerencia y jugar el juego e intentar grabar algunas secuencias para la evolución. Si tiene más puntos de vista o sugerencias, publíquelos. Nuevamente, aplausos por respuestas. –

Cuestiones relacionadas