Prima di tutto, ci sono alcuni suggerimenti per la generazione della storia di Dwarf Fortress. Qualcuno ha chiesto sui forum Bay12 qualche tempo fa, e una trascrizione è stata condivisa e puoi trovare dove inizia la discussione cercando: "il nostro argomento oggi è la generazione del mondo e della storia".
Non so esattamente come faccia Dwarf Fortress, ma spiegherò come sto pianificando di implementare una prima bozza di base nel mio gioco. Userò un semplice automa cellulare . Se guardi attraverso questi prototipi di Spore , come la coltura cellulare e il bioma.
Questi sono esempi di automazioni cellulari e cosa possono produrre. Fondamentalmente creerò regole per diverse razze. Alcuni esempi di regole potrebbero essere:
- La loro ostilità verso le altre razze
- Le loro preferenze climatiche
- I loro requisiti di risorse
- I loro tassi di natalità e durata della vita
- I loro desideri (ricerca tecnologica, commercio, esistenza pacifica, dominio del mondo)
- Le loro capacità (costruzione di strutture, raccolta di risorse, guerra, ecc.)
- E così via...
Quindi, l'input più critico per far funzionare tutto questo è un mondo in cui lanciare queste razze. Il terreno determinerà le loro preferenze ed espansioni. Quindi, una volta che hai generato un mondo, scegli posizioni casuali nel mondo in cui queste razze vivrebbero opportunamente e lascino perdere. Ora inizia a succedere qualcosa di interessante. Ora che hai terra e razze con desideri e capacità, puoi iniziare a costruire una storia. Queste razze raccolgono risorse, quindi vengono costruite strutture:
- Città in aree ad alta risorsa, alta vivibilità.
- Le strade collegano le città più grandi.
- Ponti attraverso fiumi.
- Gallerie attraverso le montagne.
- Fortezze vicino alle prime linee di espansione in risposta alle battaglie.
Qualsiasi struttura può essere razziata / conquistata da altre razze. Più a lungo esiste una struttura (come una città o una fortezza) nella storia, più è difendibile, più è difficile sostituirla. E più è desiderabile per le razze che vogliono il controllo. Le battaglie si svolgono dove le razze si incontrano (almeno una è ostile). Le battaglie prendono il nome da punti di riferimento o strutture vicine, o se la battaglia è significativa o i punti di riferimento non sono nominati, i punti di riferimento prendono il nome dalla battaglia.
Strade, ponti e tunnel si espandono attraverso il commercio e il trasporto di risorse. Ciascuno ha un throughput massimo che può aumentare con la spesa in risorse. Costruire una fortezza di pietra in mezzo alle praterie? Quelle strade avranno un uso pesante trasportando la pietra richiesta. Diventeranno più grandi e avranno un nome.
Si verificano catastrofi naturali che colpiscono le popolazioni e il corso della storia. I terremoti potrebbero ridurre una città in rovina o far crollare un tunnel. Un'alluvione potrebbe lavare via una strada o un ponte.
Non è così approfondito come la Fortezza dei Nani, ma è un inizio. Ora come puoi immaginare, (e come menzionato da Johnathan Hobbs) più queste razze si espandono, più cellule vengono simulate. Non solo vengono simulate più celle, ma le simulazioni sono più complesse in quanto ora ci sono strutture da costruire / mantenere, battaglie da condurre, commercio da ... commercio, e così via. Questo diventa pesante per qualsiasi lingua. Javascript potrebbe rallentare prima. Tuttavia, puoi sempre sacrificare la complessità per una maggiore velocità.
È tutta una simulazione (anche se complessa), stai solo registrando gli eventi importanti lungo il percorso e chiamandolo storia.
Ho anche appena trovato un post sul forum Bay12 per le persone che fanno brainstorming su come rendere più veloce la generazione mondiale della Fortezza dei Nani. Non l'ho letto, ma potrebbe fornire alcuni suggerimenti se si verificano problemi con l'implementazione troppo lenta.