Esta podría ser una pregunta trivial, pero tengo problemas para entender esto. Agradecería mucho tu ayuda.
En el desarrollo de juegos con diseño orientado a objetos, quiero entender cómo los agentes de IA acceden a la información que necesitan del mundo del juego para realizar sus acciones.
Como todos sabemos, en los juegos muy a menudo los agentes de IA necesitan 'percibir su entorno' y actuar de acuerdo con lo que sucede a su alrededor. Por ejemplo, un agente podría estar programado para perseguir al jugador si él / ella se acerca lo suficiente, evitar obstáculos mientras se mueve (utilizando el comportamiento de dirección para evitar obstáculos), etc.
Mi problema es que no estoy seguro de cómo hacerlo. ¿Cómo puede un agente de IA acceder a la información que necesita sobre el mundo del juego?
Un posible enfoque es que los agentes simplemente solicitan la información que necesitan directamente del mundo del juego.
Hay una clase llamada GameWorld. Maneja lógica de juego importante (bucle de juego, detección de colisión, etc.), y también contiene referencias a todas las entidades en el juego.
Podría hacer de esta clase un Singleton. Cuando un agente necesita información del mundo del juego, simplemente la obtiene directamente de la instancia de GameWorld.
Por ejemplo, un agente puede ser programado para Seek
el jugador cuando él / ella está cerca. Para hacer esto, el agente debe obtener la posición del jugador. Por lo que simplemente puede solicitar directamente: GameWorld.instance().getPlayerPosition()
.
Un agente también podría obtener la lista de todas las entidades en el juego y analizarla según sus necesidades (para descubrir qué entidades están cerca o cualquier otra cosa): GameWorld.instance().getEntityList()
Este es el enfoque más simple: los agentes se comunican directamente con la clase GameWorld y obtienen la información que necesitan. Sin embargo, este es el único enfoque que conozco. ¿Hay alguno mejor?
¿Cómo diseñaría esto un desarrollador de juegos experimentado? ¿Es ingenuo el enfoque de "obtener una lista de todas las entidades y buscar lo que necesite"? ¿Qué enfoques y mecanismos existen para permitir que los agentes de IA accedan a la información que necesitan para realizar sus acciones?