Generazione procedurale mondiale orientata alle funzionalità di gioco


36

Nei grandi giochi procedurali di paesaggio, la terra sembra noiosa, ma probabilmente perché il mondo reale è in gran parte noioso, con solo posti limitati in cui lo scenario è drammatico o tattico.

Guardando generazione mondo da questo punto di vista, un generatore di paesaggio per un gioco (che è, non per il bene del paesaggio, ma per il bene del gioco) ha bisogno di non seguire le regole del paesaggio, ma invece alcune regole sposato con la aspettative del giocatore. Ad esempio, potrebbe esserci un generatore di choke point / route che crea burroni, fiumi e montagne tra le città, piuttosto che il modo naturale in cui le città sorgono, sparse sulla terra in base alle risorse o alle condizioni generate dalle montagne e dai modelli di pioggia.

Esiste un lavoro esistente in questo modo? Inizia con le città o i centri abitati e poi aggiungi il terreno in seguito?

Il motivo per cui mi sto chiedendo è che in precedenza avevo riflettuto sul prendere le mappe esistenti dalla fiction fantasy (la mia e altre), mettendo le informazioni nel sistema come un punto di base e quindi generare un buon mondo in cui giocarci. Questo sembra coperto dalla tecnologia esistente, ovvero in cui il progettista inserisce tutte le informazioni necessarie come le popolazioni della città, le risorse, i biomi, le reti stradali e i fiumi, quindi consente al PCG di colmare le lacune.

Ma ora mi chiedo se sia possibile che un generatore di contenuti generi anche il design generale. Generare le città e i centri abitati, bilanciandoli in modo che vi sia una naturale apparente necessità di commercio, quindi generare le posizioni e la connettività, quindi dal tipo di città produrre l'elenco delle risorse necessarie che devono essere vicine, e solo allora, forse dato alcune regole su come rendere credibile e interessante il viaggio tra le città, generano il contenuto finale tra cui le strade, i punti di strozzamento, i ponti e le gallerie, i traghetti e il terreno compresi i biomi e la costa necessari.

Se questo è già stato fatto, mi piacerebbe sapere e vorrei sapere cosa è andato storto e cosa è andato bene.


Il tuo approccio sembra strano. Non vedo perché le città e i centri abitati sarebbero venuti prima ... anche allora, non potresti posizionare alcune città e assegnare quei punti favorevoli ma parametri casuali, e lavorare da lì?
Il comunista Duck il

1
Penso che tu sia sulla strada giusta con il design culturale prima, il terreno (e il tempo) in secondo luogo. Nel mondo reale, società, culture e reti e strutture economiche non nascono da nessuna parte. Invece si alzano (o non si presentano) in base al terreno. Alcuni terreni non favoriscono l'ascesa di una società, altri lo sono. Le grandi città non sorgono nel mezzo del deserto o della tundra ghiacciata perché a) non c'è quasi nessun cibo o acqua da trovare, e b) è difficile portare merci in città.
Tim Holt,

2
Capisco il tuo angolo, @ Tim Holt. Secondo me, la regola del freddo e la regola del divertimento prevalgono sempre sulla plausibilità quando si progetta uno scenario di gioco. Una città che forma un ponte sul cratere di un vulcano attivo potrebbe non essere plausibile, ma è comunque bella. Inoltre, quando i giocatori hanno bisogno di città distribuite uniformemente in tutto il mondo di gioco ai fini del gameplay, devi dargliele, anche quando la loro posizione geografica non avrebbe senso.
Philipp,

Risposte:


12

Ecco un ottimo esempio di generazione procedurale del terreno, usando parametri come umidità, altezza ecc ... http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/


2
Bel lavoro, ma distribuzione casuale delle caratteristiche del paesaggio prima, elementi di civiltà / gameplay secondo
Richard Fabian,

Non è del tutto casuale, ma sono d'accordo, non ci sono elementi di civiltà. Penso che la tecnica possa essere adattata a molti elementi di gioco diversi, ma quelli nella demo erano per un gioco multiplayer (~ 80 giocatori per mappa): (a) isola circondata dall'acqua, in modo che le persone non raggiungessero un limite ( b) aree facili in spiaggia con giocatori sparsi, (c) aree difficili in montagna con giocatori concentrati, (d) strade che conducono ad altre aree della stessa difficoltà, (e) fiumi che conducono ad aree di maggiore difficoltà. I giocatori avrebbero iniziato da soli sulle spiagge e si sarebbero raggruppati mentre si dirigevano verso il centro.
tra il

1
La cosa principale che stavo cercando di esplorare era iniziare innanzitutto con i vincoli di gioco, quindi costruire una mappa che riempiva i dettagli, piuttosto che iniziare con i soliti generatori di terreno casuali o "realistici", e tentare di adattare gli elementi di gioco in cima . Penso che abbia funzionato bene per quello stile di gioco, ma non l'ho provato per altri stili di gioco.
tra il

4

Credo di aver fissato questa domanda negli ultimi tre giorni, mentre mi chiedevo come la generazione procedurale di mondi o persino galassie possa essere allo stesso tempo deterministica (come generare sempre lo stesso contenuto dallo stesso seme ), ha un aspetto naturale e ha ancora caratteristiche uniche, interessanti, inusuali o addirittura belle nel suo paesaggio.

Continuo a tornare alla stessa risposta generica secondo cui questo dipende fortemente dal genere del gioco e dalla sua storia interna coerente all'interno della storia. Ad esempio, genere post-apocalittico, perché qualcuno dovrebbe costruire una metropoli con mura massicce nel mezzo di una terra desolata e far vivere miseramente chiunque al suo interno? Perché colonizzare tali pianeti? In alta fantasia, perché creare una città in cima a un'isola galleggiante? Perché i nani creano città all'interno delle montagne? E il tuo nemico malvagio generico viene da una terra infuocata con vulcani attivi? Regola del freddo?

Quindi tutto risale alla tua risposta in cui inserisci informazioni nel PCG e colma il divario, e anche all'altra risposta sulla generazione di mondi che corrispondono alle linee della trama e alla storia generale.

Quindi la trama genera elementi di gioco che generano un paesaggio adatto.

Detto questo, mi chiedo se una storia che genera un albero di linee di trama coerenti, genererà il design di gioco complessivo che stai cercando.

(PS: Questi stessi tre giorni di pensiero mi hanno anche portato a un'altra risposta a un problema che potrebbe sorgere: dovrebbe esserci uno strumento di test automatizzato per verificare se il design del gioco generato è valido, ad esempio, dovresti avere un esercito medievale che ha un duro tempo di sconfiggere una fortezza generata)


2

Solo la carta che affronta problemi simili che potrei trovare a portata di mano è " Un algoritmo per la deformazione automatizzata del terreno frattale " di Stachniak e Stuerzlinger . Presuppone che tu crei prima il terreno e lo deformi (o meglio, lascia che l'algoritmo scelga i parametri con cui deformarlo automaticamente) per adattarlo ai tuoi vincoli in un secondo momento, quindi non risponde direttamente alla domanda. Tuttavia, i metodi qui presentati potrebbero rivelarsi utili per altri con problemi simili.


2

Un tale algoritmo non genererebbe automaticamente un terreno più "tattico" quando si generano strade tra le città?

Supponendo che le strade possano avere solo un certo cambio di quota per distanza, l'altezza del terreno sarebbe adattata all'altezza della strada, il che porterebbe alla generazione di punti di controllo ogni volta che una strada passa attraverso una collina / burrone / qualunque cosa. Naturalmente, anche la quantità di variazione dell'altezza del terreno dovrebbe essere limitata, o avresti strade che attraversano direttamente le vette più alte.


Suppongo che intendevi dire che le strade esistenti avrebbero tagliato la generazione del terreno, portando a quelle che potrebbero sembrare valli artificiali. Questo è interessante, dove prima hai visto un generatore di terreno prendere il paesaggio e giudicare troppo difficile da guidare, ma abbastanza economico da tagliare? Non risponde alla mia domanda, ma aggiunge all'elenco di cose che un generatore dovrebbe considerare, ad esempio il caso opposto (dove una strada è alta dal suolo) richiederebbe un ponte o un viadotto, non qualcosa che normalmente si vede in PCGs.
Richard Fabian,

Stavo solo pensando a come è fatto nella vita reale:
Exilyth

1
Le montagne si formano, vengono erose. Piante e alberi crescono sulla terra. Milioni di anni dopo, i primi nomadi si presentano, vagano, forse si sistemano. Cominciano a colpire la terra intorno a loro, ad esempio con fosse di pietra o legname. Successivamente, troveranno altre città, inizieranno a commerciare con loro e quindi avranno bisogno di strade. Di solito è più facile seguire il terreno che cambiarlo, quindi adatteranno le loro strade al paesaggio (tranne che per un po 'di livellamento / appiattimento). Come puoi vedere, sto guardando il problema più da una prospettiva di costruzione del mondo.
Exilyth

2

Quando ero ai Cryptic Studios, stavamo lavorando a qualcosa del genere per la generazione di missioni / missioni. I progettisti hanno specificato gli obiettivi della missione in modo un po 'astratto e li hanno definiti con una certa casualità nell' "ordine di viaggio del giocatore" e ne hanno tagliato i percorsi.

Una prima versione fornita con Star Trek Online come Genesis Missions (archivio) . All'epoca ne eravamo molto entusiasti, ma non ho idea di quanto sia continuato dopo che me ne sono andato o se è disponibile negli strumenti Foundry dell'utente finale. (Qual era l'obiettivo finale.)


1
Sembra un lavoro svolto con i generatori di trame procedurali, ha effettivamente generato i dettagli del mondo per abbinare la trama richiesta di queste missioni o ha reso le missioni da come era il mondo, o è stato solo fortunato che le missioni fossero difficili o facile in base a ciò che hai generato?
Richard Fabian,

1

Un approccio tipico per la generazione procedurale del terreno è quello di disegnare a mano caratteristiche specifiche e utilizzare il generatore per riempire il resto. VTerrain è destinato ad avere qualcosa di interessante su questo argomento.


1

Lighthouse 3D ha una buona indagine su alcuni semplici algoritmi per la generazione del terreno. Se stai iniziando con una mappa che contiene città o altre aree interessanti, potresti utilizzare alcune di queste tecniche per generare il terreno che desideri. Ad esempio, l'uso intelligente dell'algoritmo di errore potrebbe essere utilizzato per creare scogliere o valli intorno alla tua città che fungano da strozzatori. Inoltre, l'uso dell'algoritmo circolare sarebbe un ottimo modo per generare terrian per il posizionamento della torretta. Questi sono solo alcuni esempi, ma l'utilizzo di questi semplici algoritmi sarebbe un modo abbastanza semplice per generare terreno interessante intorno alle tue città.


1

Forse sto semplificando eccessivamente, ma perché ignorare il fatto che le città sono costruite su un terreno vantaggioso, o per questo motivo, qualsiasi dimensione di un'area civile per qualsiasi motivo? Forse il terreno offre un vantaggio tattico per una rata militare o forse c'è un mulino per legname all'intersezione di una grande foresta e un fiume che ha un villaggio più grande a valle. Anche i luoghi "santi" si basano sul terreno, anche se per il semplice fatto che quella particolare parte della terra era ad un certo punto considerata santa, ecc. Indipendentemente dalle conseguenze, il luogo di sosta finale della stragrande maggioranza della civiltà esiste in un punto fisico per motivi molto basati sul terreno. Anche nel caso di una città che sta spuntando semplicemente perché ci sono abbastanza scambi commerciali tra due città più grandi da giustificare un intermediario, se vuoi, la posizione di quella città sarebbe stata scelta in base al percorso di minor resistenza. Sarebbe collocato da qualche parte che offriva buoni terreni agricoli piatti per l'approvvigionamento alimentare locale accoppiato con terreni che si prestano bene alla costruzione di strade. Sono sicuro che ci hai pensato ...

Quindi, se hai intenzione di costruire prima le città, certo, perché no? Perché non costruire la città, il villaggio, l'insediamento o altro, insieme a un discreto pezzo di terreno circostante, costruito a mano, che supporta quel tipo di stabilimento?

Prendi come esempio i biomi procedurali. Di solito vengono applicati a mappe pseudo casuali di temperatura, umidità e altezza. Se hai già progettato la città (o la segheria, ecc.), Allora probabilmente hai un concetto fermo di come deve essere la terra, che se non ho frainteso, è esattamente il tuo punto. Prendi un edificio fantastico come Orthanc, pieno di planimetrie e terreno circostante, che hai debitamente replicato. Bene, sappiamo, a seconda della sequenza temporale, Orthanc era circondato da un'enorme foresta popolata di Ents (creature degli alberi), ecc. Se stai cercando di replicarlo, applicare un terreno casuale per me non ha senso. Detto questo, una volta creata questa impostazione per la torre stessa e la foresta circostante, cosa c'è tra Orthanc e qualunque sia la tua prossima città?

Un approccio semplice potrebbe essere quello di scrivere la generazione del tuo terreno procedurale, posizionare la tua ambientazione all'interno di un sistema di terreno generato casualmente e superare le tue altezze intorno alla tua impostazione fissa e viola puoi posizionare Orthanc in molti mondi diversi generati casualmente (dovrebbe essere quello che cerchi).

Penso comunque che saresti meglio con una combinazione di ambientazione, terreno e bioma definito e assicurandoti che Orthanc sia collocato all'interno di un grande bioma forestale generato proceduralmente. A seconda di come lo codifichi, puoi impostare bioma min / max, terreno, umidità, ecc. Per ogni impostazione predefinita o edificio o città che hai scolpito. Questo sarebbe un piccolo compito in un mondo 3d fotorealistico a tutti gli effetti? Ovviamente no.

Penso che se dovessi tentare questo, prima di tutto ricercherei algoritmi procedurali. Adottando l'approccio che quasi tutte le civiltà nel corso della storia hanno seguito qualsiasi costa, sia essa un oceano, un mare o un grande lago. È il percorso di minor resistenza per la crescita poiché è probabile che vi sia una pesca abbondante, alberi nelle vicinanze per il legno e viaggi sicuramente più veloci anche con moto d'acqua rudimentale (almeno a senso unico).

Penserei che dovresti costruire completamente all'indietro. Pensa, punti pseudo-casuali su una mappa che rappresentano punti di civiltà possibilmente con un algoritmo di rumore che determina le popolazioni di quelle civiltà prima che qualsiasi altra cosa venga determinata. OK, quindi 1 punto viene fuori per una popolazione di 1.000, altri 2.000.000 (o qualsiasi rapporto a seconda della popolazione mondiale ovviamente). Perché? Perché ci sono quei numeri di popolazioni lì? Una popolazione di 1.000 persone potrebbe essere la piccola comunità di mulini. Forse è una comunità mineraria se si trova sul lato nord della mappa se dovessi creare un mondo sferico 3d. Diventa un po 'confuso qui perché non so se stai andando infinito in tutte le direzioni rendendo NESW inutile nel determinare i biomi o se vuoi una vera "Terra"

Tuttavia, se abbassi le tue civiltà, sulla base di popolazioni di rumore pseudo-casuali, penso che possiamo tranquillamente assumere alcune regole (ma forse non assolute) come ... Più grande è la civiltà, molto probabilmente, maggiore è il numero di risorse utili su mano e il terreno per sostenerli. Minerali preziosi, legni, ecc. Devono essere presenti o nauseam o deve esistere un enorme sistema commerciale per supportare un'impresa così vasta. In base a ciò puoi iniziare a generare autostrade da città a città e strade verso gli insediamenti periferici come un'operazione di estrazione in profondità, ecc. Scegli i punti di civiltà che formulerebbero buone coste e lascerebbero i punti della popolazione completamente fuori dalla mappa dove devi riempire il tuo oceani (o forse hai Atlantide nel tuo mondo o trivellazioni petrolifere offshore).

Riempire di nuovo il terreno nel mezzo dipende completamente dall'approccio del bioma. Se hai un infinito in ogni direzione del mondo, metti giù Orthanc ovunque si adatti alla popolazione, forzalo in un bioma forestale e costruiscilo attorno verso l'esterno fino a quando non arrivi a metà della prossima destinazione preimpostata in cui l'algoritmo sta eseguendo la stessa generazione procedurale in giro. Lerp / Blend i due terreni insieme mentre si incontrano e sì, questa è un'ovvia semplificazione eccessiva.

Senza una reale conoscenza pratica di ciò che stai effettivamente cercando di realizzare meccanicamente, posso solo buttare via idee e forse cattive. Penso che il tuo approccio abbia dei meriti, anche se in realtà è completamente fantastico, perché stai prendendo di mira quello che è sempre il fattore più importante in qualsiasi gioco: il giocatore si diverte? Oppure sto creando un mondo casuale che non sia noioso e quindi non divertente?

Cosa potrebbe anche diventare interessante, e questo potrebbe far parte della generazione di civiltà in qualsiasi gioco, prima o meno il terreno, cosa succede se cadi in due grandi città una accanto all'altra? Cosa significa? Sono in guerra? Sono massicce operazioni commerciali tra due nazioni fiorenti? Che tipo di nemici si nascondono nei boschi di quel mulino?

Penso che una cosa sia certa se stai cercando di costruire un terreno basato su "città" e cioè il terreno sarebbe direttamente influenzato dalla popolazione di detta città, sia nel paesaggio che nelle risorse naturali (e forse anche nella bellezza).

Non sono sicuro se ho effettivamente risposto a qualcosa o se questo fosse appropriato, ma è un concetto molto interessante e mi piacerebbe sapere dove sei diretto.


0

Genererei contemporaneamente le funzionalità di gioco come parte dello stesso processo. Esistono diversi modi per costruire il terreno in base alle regole. Questo discorso su YouTube degli sviluppatori Path to Exile è un ottimo esempio: https://www.youtube.com/watch?v=GcM9Ynfzll0 . Inoltre, per un approccio meno pre-costruito, questo sembra interessante: https://www.youtube.com/watch?v=RAtdFKiqs34 . Puoi usare il rumore del perlin per generare altezze per ogni vertice voronoi e andare da lì

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.