Strade curve 2D generate proceduralmente sulla mappa


9

Ho sperimentato algoritmi per generare automaticamente road map per un gioco a cui sto lavorando.

Sto usando i giochi " Kingdom Rush " come punto di riferimento in quanto hanno alcune mappe di bell'aspetto.

Esempi di mappe stradali del gioco "Kingdom Rush"

Sono nuovo nella generazione di contenuti procedurali e mi chiedevo se qualcuno qui avesse qualche suggerimento. Ho sperimentato la generazione di topologie di strade casuali, ad esempio alcuni nodi di ingresso / origine, diversi nodi interni (fork e merge) e alcuni nodi di sink di uscita, quindi utilizzando algoritmi di layout grafico per creare una road map effettiva basata su queste informazioni.

Ecco un esempio usando l' algoritmo Fruchterman-Reingold per il layout stradale:

Mappa generata da PCG 1

Il grafico blu utilizza alcuni punti di controllo di Bézier generati casualmente per rendere i bordi meno diritti.

Ecco un altro esempio generato usando lo stesso algoritmo ma diversi numeri casuali:

Mappa generata da PCG 2

Il problema è che la maggior parte dei risultati sembrano piuttosto simili e non sono sicuro di quali regole posso aggiungere per migliorare la controllabilità e la diversità delle mappe generate proceduralmente.

Qualche consiglio apprezzato.


Domanda fantastica. Le immagini di riferimento sono di grande aiuto, così come le cose che hai provato finora. Puoi approfondire un po 'di più su cosa intendi per "controllabilità"? C'è un sacco di cose che si poteva controllare; alcuni esempi potrebbero essere d'aiuto.
Pikalek,

Ciao! Grazie per la risposta. Per controllabilità, intendo dire che è possibile scrivere determinate regole (ad es. Non posizionare intersezioni più vicine di una certa distanza l'una dall'altra; non consentire angoli più nitidi di x gradi) e l'algoritmo di generazione rispetta questi vincoli? Inoltre, queste regole non dovrebbero ostacolare la capacità dell'algoritmo di generare una vasta gamma di mappe interessanti. Il tuo incoraggiamento però è incoraggiante. Stavo iniziando a sentirmi frustrato per i dettagli su come farlo funzionare!
SixTwoOne

Risposte:


2

Le strade di esempio presentano curve sui segmenti tra le intersezioni in cui non sono presenti quelle generate. Hai provato ad aggiungere più punti di controllo "ridondanti" sulle tue strade?

Che ne dici di avere il numero di loop come parametro di generazione? Anche "curvatura" (numero di punti di controllo ridondanti) Il numero di uscite sarebbe un altro.

Penso che potresti anche finire le strade quando colpiscono gli incroci dando loro doppi punti di controllo. Ciò dovrebbe rendere le intersezioni migliori.


Penso che il suggerimento dei punti di controllo intermedi sia buono! L'algoritmo di layout grafico che sto usando al momento produce solo linee rette, ma potrei posizionare un nodo "curvatura curva" da qualche parte tra due altri nodi e utilizzare un euristico per posizionare i punti di controllo nelle vicinanze che lo farebbero sembrare carino. Devo assolutamente approfondire questo aspetto, poiché si collega anche alla creazione di incroci più belli.
SixTwoOne
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.