¿Cuál es la mejor estrategia para un oponente de IA para predecir la ubicación y golpear la pelota en un juego de Pong?

Gracias por el A2A.

Hice 3 niveles de IA para el oponente en este juego (la pala en la parte superior está controlada por IA):

La forma en que esto funciona es considerar la posición y la velocidad de la pelota como un rayo. Reflejo este rayo fuera de los bordes verticales de la pantalla hasta que cruza la línea horizontal en la parte delantera de la paleta AI. Mover la paleta a la posición x de esta intersección final hará que la IA sea inmejorable (golpeará el centro exacto de la paleta cada vez).

Nota: la implementación es un poco diferente y más compleja. Calculo primero la intersección con la línea horizontal de la pala y luego la doblo en los límites de la pantalla, ya que los bordes son perfectamente verticales. Además, tomo en cuenta el radio de la pelota para cálculos absolutamente perfectos. Pero para una pelota pequeña, considerarlo como un punto no va a importar mucho.

Entonces, el verdadero desafío no es hacer que la IA sea más inteligente, sino simplificarla para que no sea perfecta. Hago esto agregando un desplazamiento aleatorio y mezclando en la posición x actual de la pelota, para hacer que la paleta se retrase un poco. Los pesos de esta mezcla están determinados por el nivel de IA.

Espero que ayude un poco.

Para mi juego, tomo el vector de velocidad del disco, luego construyo una línea; si la línea se cruza con las líneas de los lados del campo, la reflejo en ese punto y continúo. Luego espero que esta línea se cruce con una línea que está más o menos cerca de mi meta (es decir, la IA), paralela a la meta, que pasa por mi ubicación actual (mi IA se mueve en 2 dimensiones).

Este es el punto donde trataré de posicionarme. Aunque la simulación física real no es tan simple, esta aproximación aproximada es lo suficientemente buena. Luego uso el comportamiento de dirección llegar / buscar (Comprender los comportamientos de dirección: huir y llegar) para ir a ese punto.

TL; DR: Las líneas, las pendientes y las intersecciones de línea son tus amigos.

PD El resultado final – Fingerball – optimizado para multitáctil en pantalla grande, tan abierto desde una tableta (fingerball .mobi – sin espacio).

PPS La IA es una máquina de estados finitos, esto es solo el estado de “defensa”. Hay 7 estados en total (incluidas cosas como despegar el disco de una esquina, etc., que no son necesarias para el pong clásico).

PPPS Para una IA atractiva, he descubierto que una velocidad decente + tiempos de reacción funcionan mejor. En otras palabras, para que la IA sea superable, no lo haga lento, espere un poco las transiciones de estado (~ 200 ms).

No soy un programador, mucho menos un programador de IA y ya tienes algunas respuestas encantadoras de personas que son buenos programadores.
Por lo tanto, no puedo hablar con “lo mejor” en un sentido técnico, así que déjenme hablar sobre lo mejor en un sentido de mercado. La vista del productor: jugaré del lado del producto al lado del proyecto de los codificadores.

Primero diría “Equipo, dame una paleta con personalidad. Sabemos que podemos hacerla inmejorable, por lo que ese no es el desafío. Dame un conjunto de funciones de IA de paleta para llamar que proporcionen comportamientos que no sean del juego como pelear, burlarse, cámara lenta, fluctuación de un lado a otro y así sucesivamente. Dele algunas partículas como chispas de paleta o humo. Estírelo, presiónelo, vibre como un diapasón, derrítelo, córtelo por la mitad, hágalo arrastrarse como un gusano. ”

La idea es que, en el pong existente, tenemos un juego versus de velocidad, precisión, sincronización y estrategia superficial. Ahora, agreguemos un juego de psicología. Hagamos que el jugador realmente se enoje con ese engreído bastardo de una paleta para que cuando lo golpees (aproximadamente 35-40 presente del momento) sea tan dulce como la miel y el doble de pegajoso. Luego, demos al jugador algunos fuegos artificiales, algo de música y hagamos que el jugador de padel baile el baile twerk “en tu cara”.

Tienes la velocidad de la pelota, siempre puedes calcular dónde estará cuando cruce la línea a lo largo de la cual se mueve la paleta.

No creo que sea realmente necesario. Estoy bastante seguro de que las viejas máquinas de pong tenían la paleta siempre moviéndose hacia la posición y de la pelota.

Depende de qué tan cerca de la IA real quieras estar.

Para simular (y hacer un posible oponente imbatible) puede capturar dos puntos y usar un simple solucionador de ecuaciones lineales 2D y = mx + c. De esta manera, usted sabe el punto exacto en que la pelota pasará la línea de bateo.

Para un “como lo haríamos” más, compare la altura del centro del bate con la pelota cada pocos milisegundos y muévase en consecuencia, la velocidad en función de cuán grande es la diferencia. Así es como trabajamos cuando jugamos a atrapar. Mira la pelota y muévete en consecuencia.

En juegos rápidos como el tenis, observamos la posición del jugador, el ángulo, el tipo de golpe, la ubicación de la cancha, el sonido del golpe y la calidad del jugador junto con lo que sabemos del juego (dónde es mejor poner la pelota dada la ubicación del jugador y debilidades, etc.). Todo lo cual es imposible obtener de un murciélago 2D.

Creo que en Pong, el bate probablemente se mueve lo suficientemente rápido para que puedas trazar el bate en la coordenada x de la pelota en todo momento, y golpearás la pelota en todo momento, luego agregarás un elemento de aleatoriedad al movimiento , así que a veces, se perderá.

More Interesting

¿Es posible utilizar el aprendizaje automático en la votación para que podamos incluir las razones de los votantes en lugar de sí / no?

¿Existe algún conjunto de datos disponible públicamente para la clasificación étnica / nacionalidad de los nombres humanos?

Cómo gestionar y desarrollar un producto de big data

¿Por qué en cualquier máquina eléctrica la corriente aumenta cuando aumenta la carga de esa máquina?

¿Cuándo usan los combatientes la ametralladora / cañón y cuándo usan misiles en el combate aire-aire?

Después de seleccionar entidades con una regresión regularizada, ¿es mejor estimar el resultado con la misma regresión regularizada o con una regresión no regularizada?

¿Cuál es el flujo de trabajo típico para usar el aprendizaje profundo para resolver un problema?

¿Hay algún instituto que ofrezca aprendizaje automático?

¿Las redes neuronales convolucionales funcionan de la misma manera que las redes en nuestro cerebro?

¿Cuáles son los tipos de problemas que se pueden resolver con las redes neuronales?

¿Qué piensa Yoshua Bengio sobre la idea de un algoritmo de aprendizaje único?

¿Qué trabajo puede hacer un ingeniero de aprendizaje automático para ayudar a las personas?

¿Cómo utilizaría el aprendizaje automático para resolver este tipo de preguntas: 1 + 4 = 5, 2 + 5 = 12, 3 + 6 = 21, 8 + 11 =?

¿Cuáles son algunos de los problemas abiertos más importantes en el aprendizaje automático en este momento?

¿Cómo puedo encontrar un grupo de estudio para el aprendizaje automático en Hong Kong?