¿Cómo juegan los videojuegos a las escondidas? El juego sabe dónde está tu posición, ¿cómo actúa como si no supiera dónde estás?

Mira, es bastante simple.

Toma el juego Alien: Isolation.

En la codificación del juego, hay dos códigos AI que se ejecutan simultáneamente para que el Alien sea un peligro constante.

Uno de estos códigos es lo que llamaremos “El Administrador”.

El administrador rastrea su ubicación en el mapa, sus objetivos actuales y hacia dónde parece dirigirse. Luego deja al Alien en una habitación que le parece inconveniente, como en la habitación que está justo delante de usted.

El segundo programa controla el propio Alien. Tiene lo que llamamos un “Cono de Visión”. Si algo que el Alien considera presa pasa ese cono de visión, lo atacará. El Alien también tiene un código interno de medición de sonido que rastrea cuánto ruido estás haciendo. Si el Alien no te “ve” o “escucha” después de un tiempo, saldrá de la habitación y probablemente volverá para matarte más tarde.

Ahora, Alien: el aislamiento es prácticamente el estándar de oro para la inteligencia artificial inteligente, pero la premisa básica es la misma para muchos juegos: haga que un código rastree su ubicación general y haga que los enemigos intenten encontrarlo utilizando sus propios sistemas de código. .

Espero que esto haya ayudado!

No estoy seguro acerca de otros juegos, pero en el juego en el que estoy trabajando “el juego” realmente no sabe dónde estás. Sin embargo, tiene coordenadas “x e y” para cada objeto en el juego. Pero los monstruos en el juego, por ahora, solo se preocupan por el objeto del jugador, pero generalmente no tienen acceso a esas coordenadas. Hay varias fórmulas diferentes que determinan si “ven” o “escuchan” al jugador. En el juego en el que estoy trabajando, tengo monstruos ciegos, pueden “escuchar” al jugador dependiendo de cuánto ruido esté emitiendo el jugador (que es una gran fórmula), la distancia que el jugador está del monstruo y qué tan buenos son los monstruos. escuchar es.

Aquí hay algo del código:

sound_level = ((movement_type / (1 + stealth_lvl * .9)) * (weight / dex_mod)) * (armour_type);

if (true_distance_from_monster / sound_level / audición_mod) <1 {audible = 1}

Si el objeto del jugador es audible por el monstruo, entonces el monstruo cambia de un estado inactivo a un estado de persecución, porque “sabe” dónde está el jugador. Pero en realidad el monstruo no sabe nada, no escucha nada. Todo es matemática que calcula o no calcula.

Editar: Supongo que olvidé agregar cómo funciona la vista en el juego. jajaja Explicaré más bien cómo el jugador ve al monstruo, que es exactamente el mismo principio.

distancia del monstruo x / y = la coordenada x / y de los jugadores menos la coordenada x / y de los enemigos más cercanos) es decir :: abs (oPlayer.x –arest_enemy.x);

verdadera distancia del monstruo = este es el término, obtener el lado c en un triángulo usando el teorema de Pitágoras. es decir :: sqrt ((dfmx * dfmx) + (dfmy * dfmy));

monster is insight = si el jugador está a menos de media pantalla de las coordenadas x e y de este monstruo. es decir :: (oPlayer.true_dfm <= oCamera.view_w_half)

el monstruo está fuera de la vista = si el jugador está a más de media pantalla de las coordenadas x e y de los monstruos. es decir :: (oPlayer.true_dfm> = oCamera.view_w_half)

todo esto podría modificarse haciendo que las fórmulas sean más complicadas agregando modificadores de percepción, modificadores de nivel de luz, modificadores de nivel de sigilo, etc.

También hay otros aspectos como “balas de línea de visión” que básicamente disparan al jugador o monstruo, balas super rápidas invisibles constantes y si golpea, se establece “en línea de visión” a 1 y si golpea una pared, entonces lo pone a 0.

Imagina una gran caja que representa tu juego. Está lleno de cuadros más pequeños que representan algún mecanismo del juego, como gráficos, redes, IA y las reglas del juego en sí. Incluso esas cajas pueden tener cajas dentro de sí mismas.

Tu pregunta es sobre Game Logic y AI. Veamos estas dos cajas entonces.

El primero es tu lógica de juego. Contiene todos los datos sobre cualquier entidad en el juego, por lo que su personaje y su ubicación se mantienen en la lógica del juego (su propia caja).

Normalmente diseñaría un juego como este:

El juego tiene jugadores

Los jugadores tienen un controlador. Este controlador especifica cómo se moverá el jugador. Nos estamos acercando mucho a la IA en este momento, pero no del todo. Un jugador con un controlador de jugador será controlado por un jugador humano, mientras que un jugador con un controlador AIC será controlado por IA.
(Me encantaría profundizar más en esto, pero necesito concentrarme en su pregunta, así que haga una segunda pregunta sobre esto)

Puede pasar datos de mapas a estos controladores si lo desea. De hecho, tu IA definitivamente la necesitará para que pueda tomar las mejores decisiones, nagivar el terreno, ver su propia mochila, etc.

Ahora estamos llegando a la parte AI de la respuesta. El entorno está lleno de puntos especiales que leerá la IA. Estos puntos son puntos de coordenadas, que están vinculados a otros puntos que representan otros puntos de coordenadas, esto se verá como un mapa para que la IA lo lea, mostrándole todos los lugares posibles donde podría moverse. Estos puntos a menudo se escalonan, por lo que cuando la IA vaya al siguiente punto, parecerá que se mueve en ángulos en lugar de un montón de giros feos de 90 grados.

Hay un algoritmo en ingeniería de software llamado A * (pronunciado A Star) y funciona perfectamente para encontrar rutas. Una IA que hace trampa podría encontrar tu camino. Una IA que no hace trampa puede encontrar caminos hasta que finalmente te vea. La IA es todo matemática y básicamente lo que podrías hacer (si estuvieras haciendo tu propio juego algún día) es poner un cono en la cara del jugador (fíjate que dije jugador, aún no nos importa si esto es humano o IA) con el parte puntiaguda entre sus ojos y el extremo grande del cono mirando hacia afuera, luego usando tus habilidades avanzadas de matemática verifica si las coordenadas de los jugadores están en el perímetro del cono. Si ese es el caso, entonces la IA te ha encontrado y éticamente puede disparar sobre tu ubicación.

Pero, ¿por qué el jugador humano necesita esto? Bueno, no dejemos nada que perder. Podemos ayudar al jugador humano dándole la mejor experiencia posible. Usemos ese cono para determinar qué está mirando el jugador. Hay decenas de miles de triángulos en la pantalla y no tiene sentido sacrificar cuadros por segundo en triángulos que el humano no puede ver. Eliminamos [eliminamos] esos triángulos para no perder el tiempo dibujándolos.

El “juego” es una simulación con reglas para todo. No es un pensamiento estar jugando contra ti. Dentro de la simulación, un objeto (un personaje, por ejemplo) podría estar buscándolo, pero no tiene acceso a toda la información de la simulación, solo a los datos necesarios para completar su tarea. Su tarea, en su ejemplo, es buscar “usted”, para que conozca el diseño de su área de búsqueda, las reglas sobre cómo buscar en esa área y finalmente las reglas sobre qué hacer en caso de que lo encuentre. El programador decide a qué información tiene acceso cada objeto y de esa manera controla lo que hará cada objeto dentro del juego. El objeto que representa “usted” dentro del juego también se crea con reglas para limitar y definir sus interacciones.

Una forma, como se señaló, es aislar una parte del sistema para actuar como agentes que no tienen conocimiento de dónde se encuentra. Pueden seguir algunas reglas simples, que podrían establecerse en una máquina de estados finitos, por ejemplo. Por ejemplo, si escucho algo, muévete en esa dirección y deambula un poco más alerta.

Otra forma es hacer trampa directamente y tener una cierta probabilidad de revelar información relacionada con su ubicación, a intervalos suficientemente esporádicos con una granularidad lo suficientemente baja, para que parezca lo suficientemente real como para no tener ganas de hacer trampa.

Juego un juego de mesa cooperativo con amigos llamado Desconocido. En ese juego, una banda de sobrevivientes tiene que explorar un laberinto para encontrar comida y suministros. El juego se llama Desconocido porque el jugador no sabe qué hay debajo de cada mosaico antes de entregarlo. Y algunas de las fichas proporcionarán los suministros necesarios, pero hecho generará un enemigo. El enemigo se moverá de acuerdo con las reglas del juego. Algunos enemigos se moverán hacia el personaje jugador más cercano, pero a veces hay chavyers de dos jugadores a la misma distancia del enemigo, por lo que se tira un dado para determinar en qué dirección se moverá el enemigo.

Estoy proporcionando este ejemplo de un juego de mesa para mostrar cómo los humanos pueden seguir las reglas para mover a los personajes que no son jugadores en el juego. Pero en un videojuego, el procesador puede seguir esas instrucciones, pero en realidad no es tan diferente.

Porque aunque el juego sabe dónde estás, no significa que todo en el juego tenga ese conocimiento. Cuando ciertas entidades en el juego te descubren o un rastro de ti (cuerpos que quedan atrás o sonidos que haces dentro de su área de audición programada), entonces tienen el conocimiento de que estás allí y pueden llamar por radio a otros, dar una alarma o gritar a otros para notificarles dónde se encuentra.

El juego no es una persona real, por lo que si el sistema no proporciona ciertos datos, el programa no lo sabrá. La lógica es la clave para diseñar juegos, por lo que si estudia algunos conocimientos de programación, puede obtenerlos.

El desarrollador simplemente no pone eso en el código: quienquiera que lo encuentre tendrá un código como (repetir hasta que se encuentre el jugador: mirar en un lugar aleatorio) en lugar de (ir al jugador)

El juego puede saber dónde estás, sin embargo, la IA que controla a la persona, o guarda o lo que sea que el juego no le haya dado ese conocimiento a propósito. La IA vagará, buscándote a ciegas, hasta que encuentre un rastro tuyo o algo que lo acerque, o hacia ti. Creo que esto se llama ‘La IA no informada’, que es exactamente lo que parece.