Cómo implementar AI para el juego de lucha

8

http://neighr.com/mif/index.htmlAyer construí un luchador 2D .

El segundo 'jugador' casi no hace nada. En realidad nada. Para ser honesto, nunca antes había hecho un juego que tuviera un oponente como este.

Entonces mi pregunta es, ¿cómo se comienza con la programación de IA para el oponente? ¿Hay algún tutorial, alguna práctica recomendada? Quiero que sea un desafío (para el jugador, no para mí).

Lanbo
fuente

Respuestas:

12

Los N-gramos son populares aquí. La idea básica es mantener una lista de movimientos que el jugador ha realizado. Luego puedes, dados los últimos N movimientos del jugador, calcular el porcentaje de probabilidad de cuál será su próximo movimiento.

Tu juego debe tener una base de datos de contadores y bloques efectivos para cada movimiento.

Para los modos ofensivos en la IA, aún puedes modelar jugadores básicos para determinar qué ataques ha tenido más problemas para bloquear o contrarrestar, y reutilizarlos.

Para la dificultad de IA, simplemente reduce la IA en niveles más fáciles. El peor modo de IA podría invertir opciones (es decir, si sabe que el jugador generalmente bloquea los golpes, tiene un canal más alto que uno más bajo para lanzar un golpe). El modo de mayor dificultad usaría el algoritmo no discapacitado, y es probable que le gane al jugador.

Si buscas hacer que el juego sea más divertido, también te recomiendo agregar personalidad a la IA. Algunos personajes pueden burlarse más, algunos pueden ser más defensivos que ofensivos, etc. Los jugadores disfrutan de poder atribuir inteligencia humana a los personajes de IA.

Sean Middleditch
fuente
3

Honestamente, ya que algunas de las respuestas principales recomiendan una IA más compleja, si este es un intento temprano en un juego y aún no eres tan hábil con el código, podrías intentar una IA más tonta

Por ejemplo, un sistema simple de

esperar (0-3 segundos)

Roll d6

Elige entre 6 acciones.

O algo similar dependiendo de cuántas acciones tengas

ProtoJazz
fuente
2

Así es como haría para hacer un juego de lucha.

Haga listas de movimientos (dependiendo del carácter) que sean apropiados para diferentes distancias del jugador y haga que elija un movimiento si la dificultad se pone difícil. Haga que elija un movimiento de golpe fuerte. De lo contrario, elija el movimiento que hace menos por medio y menos por fácil. También puedes incluir un factor aleatorio que selecciona diferentes rangos de los que el jugador está realmente dependiendo de la dificultad. La cantidad de decisiones debe basarse en la dificultad donde evalúa 3 segundos después de cada movimiento (fácil) 2 segundos (medio) ect. Cada vez que determina su curso de acción.

resumiendo, elige una distancia (conjunto de movimientos), elige un movimiento y luego cuánto tiempo esperan antes de hacer lo mismo. Mientras esperan la próxima acción, pueden atacar y esquivar por casualidad. Espero que esto ayude.

Kaliber64
fuente
+1 Esta es una solución extremadamente simple, pero absolutamente viable y eficiente. Por casualidad, ¿sabrías si un sistema como este se ha utilizado en algún juego comercial? :)
Miguel
No, no lo hago. Estoy hablando desde muy poca experiencia. Entonces, si es bueno, y lo pensé. Entonces seguramente no soy el primero (si es bueno). N movimientos serían más inteligentes. Pero mas duro.
Kaliber64