Potrebbe essere una domanda banale, ma ho difficoltà a capirlo. Apprezzerei molto il tuo aiuto.
Nello sviluppo del gioco usando la progettazione orientata agli oggetti, voglio capire come gli agenti di intelligenza artificiale accedono alle informazioni di cui hanno bisogno dal mondo di gioco per eseguire le loro azioni.
Come tutti sappiamo, nei giochi molto spesso gli agenti di intelligenza artificiale devono "percepire il loro ambiente" e agire in base a ciò che accade intorno a loro. Ad esempio, un agente potrebbe essere programmato per inseguire il giocatore se si avvicina abbastanza, evitare ostacoli durante lo spostamento (usando il comportamento di guida Evitamento ostacoli), ecc.
Il mio problema è che non sono sicuro di come farlo. Come può un agente AI accedere alle informazioni di cui ha bisogno sul mondo di gioco?
Un possibile approccio è che gli agenti richiedano semplicemente le informazioni di cui hanno bisogno direttamente dal mondo di gioco.
C'è una classe chiamata GameWorld. Gestisce importanti logiche di gioco (loop di gioco, rilevamento delle collisioni, ecc.) E contiene anche riferimenti a tutte le entità del gioco.
Potrei rendere questa classe un Singleton. Quando un agente ha bisogno di informazioni dal mondo di gioco, le ottiene semplicemente direttamente dall'istanza di GameWorld.
Ad esempio, un agente potrebbe essere programmato per Seek
il giocatore quando è vicino. Per fare ciò, l'agente deve ottenere la posizione del giocatore. Così può semplicemente chiedere direttamente: GameWorld.instance().getPlayerPosition()
.
Un agente potrebbe anche semplicemente ottenere l'elenco di tutte le entità nel gioco e analizzarlo per le sue esigenze (per capire quali entità sono vicine o altro): GameWorld.instance().getEntityList()
Questo è l'approccio più semplice: gli agenti contattano direttamente la classe GameWorld e ottengono le informazioni di cui hanno bisogno. Tuttavia, questo è l'unico approccio che conosco. ce n'è uno migliore?
In che modo uno sviluppatore di giochi con esperienza progetterebbe questo? L 'approccio "ottenere un elenco di tutte le entità e cercare ciò di cui hai bisogno" è ingenuo? Quali approcci e meccanismi ci sono per consentire agli agenti di intelligenza artificiale di accedere alle informazioni di cui hanno bisogno per eseguire le loro azioni?