C'est peut-être une question banale, mais j'ai du mal à comprendre cela. J'apprécierais beaucoup votre aide.
Dans le développement de jeux utilisant une conception orientée objet, je veux comprendre comment les agents IA accèdent aux informations dont ils ont besoin du monde du jeu pour effectuer leurs actions.
Comme nous le savons tous, dans les jeux, les agents de l'IA doivent très souvent `` percevoir leur environnement '' et agir en fonction de ce qui se passe autour d'eux. Par exemple, un agent peut être programmé pour chasser le joueur s'il se rapproche suffisamment, éviter les obstacles en se déplaçant (en utilisant le comportement de direction pour éviter les obstacles), etc.
Mon problème est que je ne sais pas comment faire ça. Comment un agent IA peut-il accéder aux informations dont il a besoin sur le monde du jeu?
Une approche possible est que les agents demandent simplement les informations dont ils ont besoin directement au monde du jeu.
Il y a une classe appelée GameWorld. Il gère la logique de jeu importante (boucle de jeu, détection de collision, etc.) et contient également des références à toutes les entités du jeu.
Je pourrais faire de cette classe un Singleton. Lorsqu'un agent a besoin d'informations du monde du jeu, il les obtient simplement directement de l'instance GameWorld.
Par exemple, un agent peut être programmé pour Seek
le joueur lorsqu'il est proche. Pour ce faire, l'agent doit obtenir la position du joueur. Ainsi , il peut simplement demander directement: GameWorld.instance().getPlayerPosition()
.
Un agent peut également simplement obtenir la liste de toutes les entités du jeu et l'analyser en fonction de ses besoins (pour déterminer quelles entités sont à proximité ou autre chose): GameWorld.instance().getEntityList()
C'est l'approche la plus simple: les agents contactent directement la classe GameWorld et obtiennent les informations dont ils ont besoin. Cependant, c'est la seule approche que je connaisse. Y en a t-il un meilleur?
Comment un développeur de jeux expérimenté pourrait-il concevoir cela? Est-ce que l'approche "obtenir une liste de toutes les entités et rechercher tout ce dont vous avez besoin" est naïve? Quelles sont les approches et les mécanismes permettant aux agents de l'IA d'accéder aux informations dont ils ont besoin pour effectuer leurs actions?