Struttura dei dati per rappresentare le connessioni tra i paesi su una mappa


9

In un gioco che sto sviluppando per un cliente, un concetto chiave del gioco prevede lo spostamento su una mappa. In questo caso le dimensioni e le forme e tali dei vari paesi sono irrilevanti: il passaggio da un paese a un paese adiacente conta come un unico passaggio.

Sto cercando di capire la migliore struttura di dati per rappresentare internamente le connessioni tra i paesi. Per un determinato paese il gioco deve sapere quali paesi sono adiacenti, sia per sapere in che modo i giocatori possono muoversi sia per consentire all'intelligenza artificiale del gioco di tracciare percorsi, determinando possibili percorsi da un paese all'altro. L'intelligenza artificiale deve anche valutare quanto sia ben collegato un paese, non solo ai suoi vicini immediatamente adiacenti, ma ai vicini di quei paesi, ecc.

Ho capito un paio di possibilità ma sembrano sgraziate e inefficienti. Poiché l'intelligenza artificiale dovrà calcolare una serie di possibili percorsi al fine di prendere buone decisioni sul suo movimento, "inefficiente" è altamente problematico.

Sospetto che questo sia un puzzle CS piuttosto comune e che ci sia una soluzione comune, ma non sono stato in grado di trovare molto cercando. Eventuali suggerimenti sono ben accetti


Se dovessi chiedere questo su GameDev.StackExchange, fammelo sapere. Sto chiedendo qui perché sono sicuro che questo genere di cose è necessario per tutti i tipi di problemi di sviluppo e non ho bisogno di aiuto con il lato "gioco" di per sé, solo la parte di pianificazione del percorso.
Matthew Frederick,

È necessario un grafico o una matrice di connettività (il che è utile, poiché la chiusura è facile da calcolare). Forse hai bisogno di entrambi. Cercali.

2
Dai un'occhiata alle strutture e agli algoritmi dei dati dei grafici: en.wikipedia.org/wiki/Graph_%28data_structure%29

1
Questo non mi sembra in tema. Dovrebbe essere su GameDev o Stack Overflow, poiché è un argomento troppo obiettivo per qui.

Risposte:



6

Sicuramente un grafico. Dai un'occhiata qui Teoria dei grafici , fondamentalmente hai nodi e bordi. Un nodo può contenere 0 o più spigoli ad altri nodi.

Esistono molti algoritmi per calcolare il percorso più breve (salti o distanza), verificare la presenza di cicli (più di un modo per raggiungere un sé), ecc.

Ora, per essere in grado di implementare soluzioni efficienti, è un po 'più complesso, ma come sempre, ci sono modi.


Eccellente grazie. Hai qualche suggerimento su dove trovare tali algoritmi? Non ho bisogno del percorso più breve, ma cose come la ricerca di cerchie, ecc. Sarebbero molto utili.
Matthew Frederick,

2

Come già accennato, avresti bisogno di un grafico che rappresenti tutte le possibili connessioni tra paesi. Ogni connessione manterrebbe anche la distanza tra due paesi.

Quindi un algoritmo di ricerca del percorso come A * può essere utilizzato per determinare il percorso più breve tra due paesi.

Ci sono anche alcuni buoni libri sul gioco ai: Game AI, ad esempio di Mat Buckland http://www.ai-junkie.com/books/toc_pgaibe.html

o la serie AI Game Programming Wisdom. http://www.aiwisdom.com/ Il primo libro contiene diversi capitoli sul pathfinding.


Eccellente, grazie per i consigli sui libri. Sembra che ci siano un sacco di libri di intelligenza artificiale e i consigli personali sono molto meglio degli ampi risultati che ho ottenuto dalla ricerca.
Matthew Frederick,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.