¿Los personajes de IA en los videojuegos ‘ven y escuchan’ dónde estás o ‘saben’ dónde estás?

La mayoría de la gente piensa que los desarrolladores de videojuegos son malos para implementar una IA precisa, pero la verdad es que simplemente son demasiado buenos para implementar una IA inexacta. No tiene sentido? Escúchame:

Los videojuegos siempre, siempre saben dónde estás (puedes adivinar eso por el hecho de que pueden mostrarte en el mapa con respecto al área y los NPC). Para un juego de FPS, un solo enemigo de IA puede encontrar el camino hacia ti, llegar allí y puede derribarte en segundos jugando según las reglas del juego. Y esto en realidad hace que nuestros trabajos sean mucho más fáciles: la IA 100% precisa es exponencialmente más fácil de implementar, pero, como podría suponerse, hace que un juego sea bastante, muy divertido. Por lo tanto, los desarrolladores de juegos intentan agregarle inexactitudes en un intento por hacerlo justo y divertido. Esto incluye simular cosas como:

  • Sensores visuales: generar un cono de visión a partir de los ojos de un personaje de IA y verificar continuamente si algo se cruza con él a través de la emisión de rayos
  • Sensores auditivos: cada uno de los sonidos emitidos tiene un área de efecto y si la distancia entre esta área y los oídos virtuales de un personaje AI está por debajo de cierto umbral, decidimos que el personaje puede “escucharlo”
  • Generar un número aleatorio y agregarle la posición a la que una IA realmente quiere disparar, por lo que se pierde algunas veces

Sin embargo, en realidad, hacemos malabarismos entre estos usando sensores y usando su posición real. Como, por ejemplo, después de ser descubierto por un enemigo en un juego de sigilo, la IA usaría tu posición real para rastrearte hasta que estés fuera de su visión por un tiempo determinado o todos los NPC sabrán automáticamente dónde estás (si nos vemos o no) después de un evento guionado en particular.

Ahora hay una delgada línea entre hacer que la IA sea demasiado estúpida o demasiado precisa (“inteligente” es una historia completamente diferente). Desafortunadamente, la mayoría de los desarrolladores optan por lo primero.

Depende de si el diseño del juego se beneficia o no de que el jugador crea que los personajes de IA tienen vista y oído.

La palabra creer es crítica aquí. GameAI no se trata en absoluto de crear inteligencia real, es, en el mejor de los casos, humo y espejos que intentan engañar al jugador para que crea que hay inteligencia.

Un mejor término para lo que realmente estamos haciendo es “selección de comportamiento”. Como programadores tenemos acceso a toda la información en el juego para decidir qué comportamientos realizarán los personajes de IA.

Para muchos juegos, no es necesario un modelo de visión y audición, o peor, demasiado costoso desde el punto de vista computacional.

Por ejemplo, los monstruos del mundo en WOW simplemente reaccionan a la proximidad de los héroes, o no reaccionan si tienen sigilo activo. Un modelo de visión podría mejorarlos un poco, pero computacionalmente es demasiado costoso para los servidores.

La mayoría de los juegos con elementos de juego sigilosos tienen GameAI con modelos de visión y audición.

Por lo general, se trata de un cono de visión que utiliza trazos de rayos para determinar lo que la IA puede ver, y algún tipo de sistema de eventos ligado a sonidos que determinan lo que pueden escuchar.

También suelen tener algún tipo de modelo de información compartida, como una pizarra. Cuando un jugador es visto o escuchado, su posición se publica en la pizarra para que otra IA conozca la ubicación.

Ver, escuchar y conocer son formas de pensar sobre la información que se introduce en el proceso de toma de decisiones.

Es bueno tener en cuenta que no hay pensamiento, visión, audición o conocimiento reales, solo algunos algoritmos simples.

Tomando Unreal como motor de ejemplo, sí. Hay ganchos de motor de muy bajo nivel tanto para ver como para escuchar.

En general, así es como funciona:

Puede activar eventos de sonido como ganchos de animación (en la parte inferior del ciclo de caminata para activar un sonido) o en código (al azar o según las condiciones, depende del juego).

Esos eventos se transmiten (patrón de observación para las personas que piensan que los patrones son importantes) y cada IA ​​los procesa para ver si necesitan reaccionar. Por lo general, cada IA ​​tiene un radio de audición y posiblemente un umbral de activación (es decir, cualquier sonido en 100 pies por encima del nivel de ruido XX debe ser manejado).

De nuevo, dependiendo del juego, es posible que tenga algo que obligue a la IA a investigar (comportamientos de guardia o patrulla) o que tenga una jerarquía de acciones para que pueda competir con otros comportamientos (no desea responder a un ruido cuando ya estás en una pelea, o sanando, o lo que sea) Muchas formas de implementar.

La vista es más fácil. Simplemente especifique un código de visión y luego verifique la IA que enfrenta cada tic (o cada pocos ticks) y vea si hay LOS para el jugador. Utilizo un poco más de amor en el mío: hago una marca de casilla de barrido para centrar Y requiero cuán grande es la cantidad visible del jugador a distancia. Entonces necesito ver un porcentaje mayor del jugador a 100m que a 50m. Esto evita que lo vean a través de una pequeña brecha, especialmente si un diseñador se equivoca y algo no se marca correctamente para bloquear los trazos de línea, pero aún tiene una colisión de movimiento.

Y algunos juegos hacen lo que se sabe. Por lo general, todavía se basan en el radio, pero una vez que está en el radio saben exactamente dónde se encuentra.

Algunos usan una mezcla. Solo detecta al jugador usando reglas más estrictas, pero una vez que lo encuentra, usa su posición real y no su última posición conocida / escuchada. Esos son los que puedes acercarte sigilosamente, pero una vez que te vean te seguirán a todas partes y nunca se detendrán.

La Inteligencia Artificial no es más que una serie de comandos de programación de un programa que controlan las variables y condiciones del programa. En los videojuegos, los monstruos o los personajes deben ser inteligentes para perseguir la posición del jugador en un laberinto o un personaje que no juega en el juego, pueden poder hablar con el jugador para recibir misiones para el progreso de la aventura. . En realidad, los personajes no pueden ver ni escuchar dónde está el jugador, por lo que las cosas deben programarse en el juego.

La computadora está volcada pero el programador la hace inteligente con los comandos y lenguajes de programación. Si en algún juego el monstruo o un personaje necesita escuchar al jugador en el juego, deben existir variables que tomen valores, que emulen alguna condición en el juego. Los personajes, los monstruos y todo en un juego son solo objetos, cada objeto es una pieza de memoria que contiene algunas variables, no te presentaré cómo programar, pero te mostraré cómo funcionan las cosas.

Si suponemos que tenemos un monstruo en el juego y un jugador, el monstruo y el jugador son objetos. Estos objetos son series de asignaciones de memoria que contienen variables, por lo que tenemos el monstruo objeto con el nombre “monstruo” y el jugador objeto con el nombre “jugador” el monstruo puede mantener variables que controlan el movimiento del monstruo y su posición en el mundo del juego. . Estas variables están vinculadas con este objeto “monstruo”. Si queremos decirle al monstruo que exista en algún lugar del espacio del juego, para un juego 2D el monstruo tendrá una posición X e Y en el espacio del juego, en un juego 3D el monstruo tendrá alguna variable X, Y y Z que tiene La posición del monstruo en el espacio del juego 3D. Lo mismo sucede con el jugador también.

Cuando comienza el programa (El juego), se están llevando a cabo una serie de inicializaciones antes de que comience el juego, para colocar al monstruo y al jugador en algún lugar del mundo del juego.

Un monstruo puede describirse más o menos así.

monstruo.x = 10

monstruo.y = 5

monster.health = 100

monster.condition = “inactivo”

Si suponemos que el espacio del juego es una cuadrícula de laberinto 2D con 100 cuadrados de ancho y 100 cuadrados de altura, el programa ha colocado el monstruo en las coordenadas de esta cuadrícula en 10,5. Esta cuadrícula es el espacio del juego o el nivel del juego.

El jugador también toma algunas variables de inicialización.

jugador.x = 15

jugador.y = 7

player.health = 100

player.condition = “inactivo”

Estas entidades en el mundo del juego son solo titulares variables, tienen algunos valores y no tienen cerebro ni inteligencia para moverse, hablar y escuchar.

El programador necesita crear funciones separadas que le dirán si el monstruo está cerca de la posición del jugador y lo escuchará.

Pero ambas entidades de objeto en el programa deben tener una variable adicional en su objeto de memoria con el nombre “escuchar”

Por lo tanto, estas entidades, el “monstruo” y el “jugador” deben haber configurado la variable escuchar.

monster.hear = 0

player.hear = 0

El monstruo y el jugador no escuchan nada, solo usan condiciones y comprueban si las variables tienen algún valor y compárelas para ejecutar otras condiciones.

Entonces, si el monstruo necesita escuchar al jugador, el programa debe verificar si la distancia entre el jugador y el monstruo es inferior a 5 cuadrados, por lo que aquí viene la inteligencia artificial, utilizan algoritmos especiales para calcular la distancia entre estos dos objetos de memoria con variables y si su diferencia entre sus variables es menor que 5, entonces otras variables toman valores.

Por ejemplo, si el monstruo.x (variable) – (menos) player.x (variable) es <(menor que) 5, entonces monster.hear (variable) = (igual) 1, establezca la condición del jugador (variable) = ( es igual a "correr"

Esta fue una pseudo inteligencia artificial de un juego para hacer que el jugador y el monstruo se vieran y se escucharan. En realidad, nadie ve nada ni escucha nada. Todos son solo comandos de computadora que se ejecutan por CPU (La unidad central de procesamiento) – (El cerebro de la computadora) y si se cumplen algunas condiciones, se ejecutan otras funciones y comandos, cambian los valores de las variables y dan la ilusión al usuario de que el monstruo y los jugadores están vivos, oyen y se mueven. Todo es como una realidad virtual, todo son solo programas, nada está vivo y nada tiene inteligencia, todo son solo interrupciones de electricidad. Lógicos ceros y unos (este es otro tema para explicar ahora). Publica una pregunta relacionada para explicarte esto.

Depende, pero ciertamente puede, si se codifica de esa manera.

Por ejemplo, la mayoría de los PNJs de IA usan el lanzamiento de rayos, que es proyectar una línea desde su ubicación actual y observar con qué objeto (s) del juego choca; paredes, jugadores, fuego, etc. Esa es la versión de visión de la IA. Pueden arrojar muchos rayos cuando intentan encontrar un camino a un objeto o ubicación.

En la imagen más grande, una IA puede saber todo lo que el juego sabe, como su ubicación o qué archivo de sonido se está reproduciendo (como “jugador pie caída 1”).
Se considera una mala práctica simplemente escribir AI que use información interna para hacer trampa, porque parecen demasiado inteligentes, perfectos y mortales, no como actores reales y variables. Entonces, a menudo les damos conjuntos de reglas a seguir que imitan el pensamiento o comportamiento orgánico. Ejecutan una lista como: dónde estoy, qué estaba haciendo al final, qué está sucediendo a mi alrededor, si debo cambiar los comportamientos en función de las condiciones actuales, hacia dónde me mudaré, etc.

Considera el simple acto de engendrar un enemigo AI cerca de un jugador. En la mayoría de los casos, el desove significa simplemente hacer que el enemigo aparezca mágicamente, como si se teletransportara, puf, de repente existe. Si un jugador estaba parado, digamos en un almacén de cajas, colocaríamos 6-10 objetos invisibles llamados volúmenes de generación, que pueden crear criaturas en el almacén. Estos objetos no solo son invisibles, no tienen colisión, por lo que el jugador pasa a través de ellos.

Cada volumen de generación anotaría la ubicación del jugador, el frente y el vector de movimiento. Determinarían si el jugador está mirando en su dirección. Se seleccionaría uno de los objetos fuera de la vista del jugador para generar un enemigo, de modo que el jugador no los vea aparecer mágicamente.

El enemigo recién engendrado buscaría un jugador en el mapa. Habiendo localizado al jugador, incluso a través de paredes o cajas, el enemigo AI calcularía una ruta de intersección. En algún punto del camino, el jugador podrá ver al enemigo que se acerca. Desde la perspectiva del jugador, el enemigo emerge de detrás de una caja, como si hubiera estado al acecho.

Digamos que el personaje AI puede “saber”, “ver” u “escuchar” cosas, y llamar a estos “datos”. Ahora separemos la pregunta en tres partes:
1. ¿Es posible que el personaje AI obtenga datos concretos?
2. ¿El personaje AI realmente está obteniendo los datos?
3. ¿El personaje AI está usando y reaccionando en los datos?
Respuesta a la pregunta 1: Sí, el personaje de IA puede acceder a todos los datos disponibles en el juego.
Respuesta a la pregunta 2: Esto depende de los desarrolladores del juego. Si así lo deciden, los datos se enviarán al personaje AI. Pero esto no tendrá sentido si el personaje de IA no lo usa.
Entonces todo se reduce a la respuesta de la última pregunta 3.
Ahora veamos la pregunta 3 en perspectiva de lo que realmente son los “datos”.
Separaré “datos” en dos grupos: “sin procesar” y “simulados”. Los datos “en bruto” son la información utilizada en el juego tal como es, mientras que la “simulada” es la información puesta en perspectiva, por ejemplo, el punto de vista del personaje. Por supuesto, los datos “simulados” deben calcularse a partir de los datos “en bruto”. Entonces, si quieres tener un juego más realista, entonces necesitas usar cálculos realistas para datos “simulados”, lo que lleva más tiempo. Existe el dilema: ¿juego más realista o más rápido?
Incluso si desea hacerlo más realista, entonces surge el problema con la complejidad de esta tarea. Si tu personaje de IA está actuando en un entorno absolutamente realista, entonces has realizado con éxito una IA para un robot en el mundo real y viceversa. Bueno, todavía no hay tales robots.
Entonces, con el tiempo, las computadoras se volvieron más poderosas y los juegos tuvieron la posibilidad de una simulación más realista, cambiando lentamente de AI “conociendo” su posición a AI “viendo” y “escuchando”.
Veamos qué tipo de enfoques pueden tener (no la lista completa, por supuesto), desde los más simples hasta los más complicados:
– AI usa la información sobre tu posición todo el tiempo;
– AI comprueba si el jugador es “visto” o “escuchado” (“detección”), pero después del primer evento, utiliza directamente su posición;
– AI comprueba la “detección” todo el tiempo y si el jugador es detectado, usa todos los datos, pero si el jugador no es detectado por un período de tiempo, vuelve al modo inicial;
– El siguiente paso es que AI usa solo la última posición de “detección”;
– Como mejora, la IA puede tener diferentes “modos” para “detección” donde la detección “breve” conduce a una “alerta pequeña” (por lo que el enemigo verifica la última posición de “detección” y vuelve a la normalidad) o “alerta completa” donde el el juego está programado para que sea más difícil para el jugador (por ejemplo, generar más enemigos que fueron “alertados”);
– La característica adicional es poder hacer sonidos o movimientos de “diversión”: aquí la IA debe actuar como si “creyera” que el jugador estaba allí;
– Por supuesto, puede haber cosas como camuflaje y humo u otro tipo de ocultación;
– Otras mejoras de las condiciones de “detección” (por ejemplo, cuánto del “cuerpo” es visible para asumir “detección”, o parte específica del cuerpo; qué tipo de sonido se hace y puede distinguirse del entorno).
Muchos de los anteriores pueden ser programados, no calculados en tiempo real, por ejemplo, el jugador es visible hasta que se presiona el interruptor que dispara la pantalla de humo. Más realista significa más de estos para ser calculados. Pero aquí hay un dilema nuevamente: cuanto más realismo en el juego, menos se puede predecir lo que el jugador puede hacer, lo cual es un gran problema para los diseñadores de juegos que quieren tener una historia en el juego (es por eso que se usan escenas cortadas en tales lugares).

TL; DR;
Ambos son posibles según el juego. Revisa las reseñas de los juegos para ver si hay pistas, lo cual es cierto. A veces, el juego AI “sabe” más de lo que se supone, porque eso es más fácil, pero a veces el juego está diseñado para ser poco realista a propósito porque de lo contrario no será un juego.

Depende del juego. En los tiradores furtivos, hay un conjunto completo de sentidos: los guardias ven a cierta distancia y tienen un grado de visión periférica (generalmente a una distancia más corta). Tienen grados variables de audición, que es diferente en interiores y exteriores. Incluso pueden tener sentido del olfato. Diferentes juegos implementan todo esto con diferentes grados de detalle.

Los juegos de estrategia, por otro lado, generalmente no saben dónde estás hasta que una unidad te detecta, pero una vez que lo hace, mantiene ese conocimiento sin depender de la observación continua. Y los más antiguos y simples sabían dónde estabas desde el principio. No tenían el poder de procesamiento para lidiar con información imperfecta.

En la medida en que esta es una pregunta técnicamente significativa, ellos “saben” dónde estás porque el motor del juego del que forman parte lo hace, y ellos / el juego generalmente deciden si pueden “verte” u “escucharte” en base a eso. Hablar de los “personajes” y de las cosas que “saben” es un poco exagerado: no son criaturas discretas en el sentido físico. Por lo general, habrá otros sistemas que administran las cosas en el juego: “saber” y “moverse” y “ver”, etc., independientemente de cualquier “personaje” en particular. Los “caracteres” individuales son probablemente solo una lista de puntos de datos: ID, ubicaciones y alguna otra información de estado. Pueden tener un “conocimiento” discreto que se almacena para ellos (solo si necesita ser distinto de otros caracteres), pero todos tienen el mismo “conocimiento” de lo contrario y comparten el mismo “cerebro” (aunque eso es una analogía extendida en cualquier caso).

En términos de que te vean en lugar de saber dónde estás, el motor del juego ya sabe dónde está todo, y de todos modos los personajes son solo parte del juego.

En cuanto al rendimiento, es mucho más eficiente trabajar con esos datos que intentar recrear un escenario de procesamiento de entrada del mundo real desde cero sin una buena razón. Sobre esa base, un enfoque típico (en términos generales) sería dibujar una línea entre la ubicación de (cada) personaje y la ubicación de los jugadores, y verificar si algo a lo largo de esa línea impide que el personaje “vea” el jugador. Tal vez el jugador está oculto detrás de algo, o demasiado lejos, o fuera del cono de visión que hemos definido para el personaje (algunas de estas cosas se pueden verificar de otras maneras sin “dibujar líneas” como tales, pero eso son solo detalles). En ese caso, haremos que el personaje actúe como si no pudiera “ver” al jugador: no disparará al jugador, puede moverse en otra dirección, etc. Si determinamos que puede “ver” al jugador , podemos activar acciones basadas en eso: girar hacia el jugador, emitir un sonido, etc. El personaje probablemente al menos mantendrá un destino al que quiere llegar (o una ubicación de destino para disparar), que puede persistir si el jugador la ubicación ya no es “visible” desde la ubicación del personaje, pero nuevamente esto se hace con el conocimiento de ambas ubicaciones y la tercera ubicación “vista por última vez” si queremos ese comportamiento persistente.

Los detalles realmente dependen de la implementación particular. De cualquier manera, se trata de crear comportamientos que brinden un juego entretenido. Lo importante es que los “jugadores” y los “personajes” no son cosas discretas en el sentido físico; todos son solo parte del modelo que compone y es administrado por el juego en su conjunto. La forma en que el código y los datos que componen ese modelo están organizados no tiene nada más que ver con la realidad física de lo que el desarrollador necesita para crear una simulación eficiente y manejable que produzca los resultados que desean. Esos resultados deseados son siempre un juego agradable. Esa experiencia de juego podría esforzarse por representar una experiencia creíble en línea con las expectativas de la realidad del jugador (o la realidad del juego al menos), pero eso no significa que necesite o deba modelar procesos realistas para lograr esa presentación. “Ver” y “escuchar” en el juego AI no tiene nada que ver con la visión y el sonido más allá de las reglas que imponemos para que parezca.

Lo saben, pero dado que un oponente con una visión de 360 ​​grados que también ve a través de las paredes y puede golpearte entre los ojos desde una milla de distancia no es divertido, se les imponen limitaciones artificiales para que comiencen a comportarse como humanos: obtendrán un campo de visión simulado, tiempos de reacción prolongados simulados, problemas simulados para apuntar, etc.

Al menos en mi juego, me llevó 2-3 horas crear la IA perfecta, donde “perfecto” significa “no hay forma de que el jugador humano anote un punto”. Se sentía como si estuvieras jugando contra una maldita pared. Luego me tomó otros 2-3 meses para que pareciera un humano torpe (pero si lo molestas, puede volver rápidamente a su antiguo ser divino, aunque solo sea por un momento).

TL; DR: Pretenden ver y escuchar para que sea más interesante para ti.

Si considera ver y escuchar como renderizar un marco de juego y procesarlo, no, sería desperdiciar recursos y los resultados no serían mejores de lo que son.

Si quieres decir algo más como tener acceso solo a lo que un jugador tiene, depende mucho del juego cómo se representarán los personajes.
Un juego como Counter Strike, por ejemplo, podría exponer la misma API para bots y multijugador, lo que significa que los BOTS serían, para todos los propósitos, jugadores para el motor del servidor, la IA que controlaba cada BOT en este modelo tendría la misma información que un jugador. la misma posición que tendría el BOT. (pero si la IA controlara más de 1 BOT podría obtener más información, similar a los humanos que hablan en equipo pero mucho más rápido y con una integración más profunda)
En este tipo de juego, la IA lo vería y escucharía, ya que existe un aislamiento entre sus datos y los del motor.

Otro juego podría implementar IA como parte del código del motor, con acceso a los datos del motor, que le permitiría a la IA saber dónde están los jugadores sin tener “ojos” que puedan ver en ese momento, un ejemplo sería “el director” en dado por muerto.

Obviamente, podría mezclar y combinar modelos, implementando la IA dentro del motor sin acceder a las estructuras de datos que la IA no podría tener si fuera un jugador, o implementando la IA como un proceso externo, pero enviándole más información que un jugador podría tener

No … No existe un mundo en ningún lugar de los juegos, excepto la escena que estás viendo. Todos los mapas y personajes son lo que estás viendo en este momento. Ningún otro personaje invisible en absoluto …

More Interesting

Si llegamos a una computadora que pueda ejecutar un universo simulado, ¿será idéntico al que ejecuta este?

Si me importa cargar, en teoría, ¿mi 'yo' será transferido a un robot, o el robot será solo una copia exacta de mí?

Videojuegos: ¿Qué tan difícil es crear NPC / IAs similares a los humanos?

¿Qué biblioteca de aprendizaje profundo (compatible con R & Python) es fácil de aprender y aplicar?

¿Cuáles son los avances actuales en inteligencia artificial?

¿Cuáles son algunas ideas geniales para un juego móvil 2D que puedo hacer usando alguna forma de IA?

¿Cómo puede ser tan inteligente la superinteligencia artificial?

¿Cuál es el estado actual de la inteligencia artificial?

¿Existe una solución fintech que use IA?

¿Qué tipos de técnicas de aprendizaje automático pueden ser útiles para los datos financieros?

Durante Singularity, cuando la inteligencia artificial supera la nuestra, ¿qué ocupaciones humanas y conjuntos de habilidades serán altamente valorados?

¿Cómo analizaría cuantitativamente el mercado de valores y las empresas individuales?

Dadas las imágenes no epipolares en 2D de un objeto desde diferentes vistas (pero solo una parte), ¿cómo hacer que la IA prediga su reposo (modelo 3D completo) como un humano?

Si quiero estudiar inteligencia artificial en el Reino Unido, ¿qué programas (principales) y qué universidades son las mejores opciones?

¿Cómo empezar a aprender OpenAI? De donde empiezo? ¿Hay algún tutorial?