Come posso creare un "mondo" casuale in un motore a tessere?


22

Sto progettando un gioco che sta lavorando su un classico motore di tessere, ma il cui mondo è generato casualmente. Esistono giochi o algoritmi esistenti che lo fanno? Gli algoritmi di generazione procedurale che ho trovato non usano mai un sistema a tessere ... Quale sarebbe il modo migliore per generare un intero "mondo" usando un sistema a tessere? Non sto parlando di labirinti di blocchi, ma di una "mappa del mondo" complessiva, grazie


5
Questo è stato chiesto molte volte, prova a cercare qui per: generazione mondo casuali Edit: Ecco uno per un motore di piastrelle.
Richard Marskell - Drackir,

2
-1: questa domanda non ha risposta nella sua forma attuale. È troppo vago, affermando solo che si tratta di una "mappa del mondo" fatta di piastrelle. OK, che tipo di piastrelle? Cosa fanno queste tessere in termini di gameplay? Questo potrebbe essere qualsiasi cosa, da Final Fantasy a Civilization, e il "modo migliore" per generare terreno per quei due giochi è completamente diverso . Non c'è modo di fornire una risposta che fornisca un buon gameplay senza sapere nulla su come pensi di usarlo. Prima di poter parlare della generazione procedurale di qualsiasi cosa, devi essere in grado di crearne manualmente una buona versione.
Nicol Bolas,

Risposte:


34

La tua domanda ti porta nel campo della generazione di contenuti procedurali.

Generazione mondiale basata su piastrelle derivata da metodi continui / analogici

Per continuo, intendo qualcosa che non è piastrelle, qualcosa che è analogico, un esempio è una mappa vettoriale. È possibile utilizzare qualsiasi tecnica continua per la generazione e quindi quantizzarla. Ad esempio, genera un'immagine di rumore Perlin ad alta risoluzione, quindi riduci la risoluzione per adattarla alle dimensioni della tua piastrella e campiona i pixel per fornirti una mappa di altezza. (Le mappe altimetriche possono essere un ottimo punto di partenza per il tuo mondo.) Questo perché hai menzionato vedere fonti che non ti hanno mostrato cosa fare riguardo a come applicarlo alle tessere.

Generazione mondiale basata su piastrelle utilizzando un approccio di intaglio "sbattuto le palpebre"

Con un approccio basato su tile (cellula), puoi fare una sorta di generazione cieca in cui generi il mondo poco a poco senza guardare oltre. le tessere direttamente vicine, ma tende ad assomigliare al lavoro di un insetto. Si tratta di elementi tipici della CA (automi cellulari) e mostra informazioni di scala leggermente più grandi.

Generazione mondiale basata su piastrelle utilizzando una visione del mondo più ampia, dall'alto verso il basso

Questo adotta un approccio più intelligente per costruire il mondo piastrella per piastrella, poiché per prima cosa la costruirà regione per regione. In questo modo si ottiene il controllo ad es. diversi biomi, regioni politiche, ecc. come ha fatto Tarn Adams nella fortezza nana. Naturalmente questo richiede che tu pensi un po 'a come vorresti dividere il tuo mondo. Ci sono molti modi, dovrai fare le tue ricerche.


La generazione di contenuti procedurali è un argomento piuttosto ampio, quindi dovrai fare una buona lettura prima di avere una solida idea di ciò che vuoi veramente e di come procedere: il diavolo è sempre nei dettagli . Per questo motivo, alcune buone fonti per questo sono la mailing list rec.games.roguelike.development (un sacco di informazioni su mondi procedurali basati su tessere), le pagine di programmazione dei giochi di AmitP (guarda sotto "Altri argomenti") e, ultimo ma non meno importante, il Wiki sulla generazione di contenuti procedurali .


Nessuno di questi metodi tiene conto dello scopo di gioco della mappa. Ognuno di questi metodi potrebbe generare terribili mappe di gioco. Certo, l'OP non ha detto che aspetto avrebbe una buona mappa, quindi ...
Nicol Bolas,

6
@NicolBolas Esattamente. L'OP ha bisogno di qualcosa per continuare. Non ho bisogno di scrivere un saggio completo per ogni risposta (anche se le prove dimostrano che lo faccio abbastanza spesso).
Ingegnere

D'accordo, "giocabile" è un euristico meglio lasciato all'OP. "Giocabile" è uno strato sopra la generazione effettiva di un "mondo casuale", e non richiesto dalla domanda originale.
Patrick Hughes, il

6

La generazione procedurale è un argomento immenso. Quanto in profondità sei disposto ad andare?

Le risposte di Nick Wiggill sono di prim'ordine. Aggiungo a ciò suggerendo di esaminare alcuni metodi matematici per creare un terreno casuale coerente.

Il rumore di Perlin offre un ottimo modo per creare casualità levigata e funziona alla grande su tutti i tipi di terreno. La simulazione dell'erosione può dare un'impressione realistica dell'altezza (anche se potresti non averne bisogno dal momento che stai facendo un gioco basato su piastrelle)

Molte delle tecniche discusse in articoli come questo di Oddlabs , i creatori di Tribal Trouble, funzionano bene in 2D e anche a bassa risoluzione. Se ti senti più a tuo agio con questo tipo di approccio, imparare queste tecniche può valere la pena.


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.