Primeiro, existem algumas dicas para a geração da história sobre o Dwarf Fortress. Alguém perguntou nos fóruns do Bay12 há um tempo, e uma transcrição foi compartilhada e você pode descobrir onde a discussão começa pesquisando: "nosso tópico hoje é geração mundial e geração de história".
Não sei exatamente como o Dwarf Fortress faz isso, mas vou explicar como planejo implementar um primeiro rascunho muito básico no meu jogo. Vou usar um autômato celular simples . Se você observar esses protótipos do Spore , como a cultura de células e o bioma.
Estes são exemplos de automações celulares e o que elas podem produzir. Essencialmente, vou criar regras para diferentes raças. Alguns exemplos de regras seriam:
- Sua hostilidade em relação a outras raças
- Suas preferências climáticas
- Seus requisitos de recursos
- Suas taxas de natalidade e vida útil
- Seus desejos (pesquisa tecnológica, comércio, existência pacífica, dominação do mundo)
- Suas capacidades (construção de estrutura, coleta de recursos, criação de guerra etc.)
- E assim por diante...
Portanto, a entrada mais crítica para que tudo isso funcione é um mundo para colocar essas raças. O terreno determinará suas preferências e expansão. Então, depois de gerar um mundo, escolha locais aleatórios no mundo onde essas raças viveriam adequadamente e as soltariam. Agora as coisas interessantes começam a acontecer. Agora que você tem terra e raças com desejos e capacidades, pode começar a construir uma história. Essas raças reúnem recursos e as estruturas são construídas:
- Cidades em áreas de alto recurso e alta habitabilidade.
- Estradas conectam as cidades maiores.
- Pontes através dos rios.
- Túneis através das montanhas.
- Fortaleza perto da linha de frente da expansão em resposta a batalhas.
Qualquer estrutura pode ser invadida / conquistada por outras raças. Quanto mais uma estrutura (como uma cidade ou fortaleza) existe na história, mais defensável é, mais difícil é assumir. E o mais desejável é para raças que desejam controle. As batalhas são travadas onde as raças se encontram (pelo menos uma é hostil). As batalhas são nomeadas após marcos ou estruturas próximas, ou se a batalha for significativa ou se os marcos não tiverem nome, os marcos serão nomeados após a batalha.
Estradas, pontes e túneis são expandidos através do comércio e transporte de recursos. Cada um tem uma taxa de transferência máxima que pode aumentar com o gasto de recursos. Construindo uma fortaleza de pedra no meio de pastagens? Essas estradas vão ficar pesadas transportando a pedra necessária. Eles ficarão maiores e receberão um nome.
Desastres naturais ocorrem, afetando populações e o curso da história. Terremotos podem reduzir uma cidade a ruínas ou desmoronar um túnel. Uma inundação pode varrer uma estrada ou ponte.
Não é tão profundo quanto o Dwarf Fortress, mas é um começo. Agora, como você pode imaginar (e como Johnathan Hobbs mencionou), quanto mais essas raças se expandem, mais células estão sendo simuladas. Não apenas mais células estão sendo simuladas, mas as simulações são mais complexas, pois agora existem estruturas para construir / manter, batalhas salariais, comércio para ... comércio e assim por diante. Isso fica pesado para qualquer idioma. Javascript pode abrandar mais cedo. No entanto, você sempre pode sacrificar a complexidade para aumentar a velocidade.
É tudo uma simulação (embora complexa), você está apenas registrando os eventos importantes ao longo do caminho e chamando isso de história.
Eu também acabei de encontrar um post no fórum Bay12 para pessoas discutindo como tornar a geração mundial da Fortaleza dos Anões mais rápida. Não o li, mas pode fornecer algumas dicas se você tiver problemas com a implementação muito lenta.