La maggior parte degli algoritmi genererà una mappa generata in modo casuale basata esclusivamente su un seme. Non valuterebbe mai la mappa e quindi non garantisce una buona esperienza utente.
Poiché hai menzionato che vorresti creare un generatore di mappe " state of the art ", la prima cosa che mi viene in mente è algoritmi genetici . Tale algoritmo creerebbe molte mappe diverse, basate su una combinazione di geni sottostante. Ad ogni iterazione, ogni mappa verrebbe valutata e migliorata. (il pool genico può essere esattamente la stessa rappresentazione della tua matrice sopra - ciò che è anche bello di questo è che non avrai un tale effetto block city - a meno che non sia quello che vuoi, allora puoi codificarlo anche in questo modo).
Per implementare questo, tutto ciò che serve è un algoritmo di valutazione (per ogni mappa data). Se riesci a trovare un tale algoritmo di valutazione e lasci che questo processo di generazione della mappa passi attraverso un paio di iterazioni / evoluzioni (ad esempio 100), ti ritroverai con alcune mappe davvero interessanti.
Un algoritmo di valutazione (fitness) consisterebbe in qualcosa tipo:
penalty = how many roads are too close to one another +
how many cities are too close to one another
Ho semplificato la formula di cui sopra, dovrebbe essere un po 'più simile alla somma di quanto una città sia vicina l'una all'altra + la somma di quanto vicino ... ecc
then fitness = 1/penalty
Ho fatto una rapida ricerca su: "algoritmo genetico e generatore di mappe" e ho trovato alcuni risultati che affermano:
"In questo articolo introduciamo un generatore di mappe procedurali per un gioco di strategia in tempo reale (RTS) .Il componente principale di questo generatore è un algoritmo genetico dedicato alla creazione e all'evoluzione di mappe bilanciate, ovvero mappe in cui nessun giocatore ha qualche vantaggio relativo alla mappa rispetto ad altri giocatori. "
link