Atualmente, estou trabalhando em um jogo de plataformas 2D baseado em blocos semelhante ao Terraria em alguns aspectos, embora esteja tendo dificuldades com a geração do terreno. Eu tenho alguns princípios básicos, embora eles não saiam como algo útil.
Eu tentei algumas técnicas diferentes, como o Perlin Noise, e li sobre outras, como o deslocamento do ponto médio, embora não tenha certeza do que seria melhor ou uma combinação de técnicas diferentes para gerar áreas diferentes. (Como deslocamento do ponto médio para a forma geral do terreno e ruído Perlin para as cavernas.)
Eu encontrei uma excelente explicação de como eu poderia colocá-lo em camadas com a Accidental Noise Library , embora esteja em C ++, e eu não conheço C ++ suficiente para compilá-lo em uma DLL que eu possa usar em C #. Tentei copiar isso em C #, embora não saiba como mesclar dois efeitos (o gradiente para a base geral e o fractal para os detalhes).
Atualmente estou usando um fractal de plasma e os resultados são extremamente variados. Por exemplo, ele pode gerar terreno onde quase não há superfície, ou pode gerar terreno onde não há superfície.
Um exemplo de um mapa correto, seria melhor com mais algumas melhorias. (Preto é sólido, branco é ar):
E um exemplo de um mapa terrível. (Preto é sólido, branco é ar):
Basicamente, o que estou perguntando é: qual seria a melhor maneira de gerar o terreno ou forçá-lo a garantir que haja uma quantidade razoável de área de superfície, com o tempo de geração o mais rápido possível. Ou, alternativamente, como eu seria capaz de obter o mesmo resultado que a Accidental Noise Library, mas em C #.
Qualquer exemplo seria muito apreciado.