Eu quero gerar um mundo completamente único com biomas (como o que Minecraft e jogos similares fazem). Não entendo como eles geram esses mundos inteiros a partir de um único número "semente". Alguém pode fornecer uma visão geral básica da técnica?
Eu quero gerar um mundo completamente único com biomas (como o que Minecraft e jogos similares fazem). Não entendo como eles geram esses mundos inteiros a partir de um único número "semente". Alguém pode fornecer uma visão geral básica da técnica?
Respostas:
Como você gera um X aleatório a partir de uma semente? um valor inicial é o estado inicial de um gerador de números aleatórios. Na maioria das linguagens de programação, você pode definir essa semente. Por exemplo, C usa srand()
. Se você não especificar uma semente específica para começar, geralmente um valor de carimbo de data / hora será usado como semente. Dessa forma, cada vez que você executa, os números aleatórios são diferentes.
// C example
srand(1);
for(i=0; i<3; i++)
printf("%d\n", rand());
srand(1);
for(i=0; i<3; i++)
printf("%d\n", rand());
1270216262
1085377743
1481765933
1270216262
1085377743
1481765933
Como você pode ver, sempre que você semeia com um determinado valor (usei 1 como semente), os números aleatórios resultantes são os mesmos.
Como você cria um mundo de vida minecraft baseado em números aleatórios? Notch tem um post sobre isso. Além disso, você pode conferir os tutoriais de outras pessoas sobre "mundos parecidos com minecraft". Gostei deste, por exemplo: renderização semelhante ao Minecraft no OpenGL 4 . A idéia básica é usar o ruído Perlin (ou ruído simplex). Aqui está uma boa pergunta sobre as funções de ruído: Entendendo o ruído Perlin