Geração de terreno com ruído #9

Closed
opened 2026-10-03 17:25:07 -03:00 by caio · 1 comment
Owner

Objetivo

Trocar o mundo plano por colinas e vales gerados por ruído, sempre iguais para a mesma seed.

O que vou aprender

  • Ruído Perlin e Simplex
  • Oitavas (fBm) para dar detalhe ao terreno
  • Seed e determinismo
  • Mapa de altura e camadas do terreno

Tarefas

  • Adicionar uma crate de ruído (noise ou fastnoise-lite)
  • Calcular a altura do terreno para cada coluna (x, z)
  • Grama no topo, 3 blocos de terra e pedra embaixo
  • Seed configurável
  • Teste: a mesma seed gera o mesmo chunk
  • (Opcional) gerar os chunks em outra thread

Pronto quando

O mundo tem colinas e vales, e é igual ao abrir de novo com a mesma seed.

## Objetivo Trocar o mundo plano por colinas e vales gerados por ruído, sempre iguais para a mesma seed. ## O que vou aprender - Ruído Perlin e Simplex - Oitavas (fBm) para dar detalhe ao terreno - Seed e determinismo - Mapa de altura e camadas do terreno ## Tarefas - [x] Adicionar uma crate de ruído (`noise` ou `fastnoise-lite`) - [x] Calcular a altura do terreno para cada coluna (x, z) - [x] Grama no topo, 3 blocos de terra e pedra embaixo - [x] Seed configurável - [x] Teste: a mesma seed gera o mesmo chunk - [x] (Opcional) gerar os chunks em outra thread ## Pronto quando O mundo tem colinas e vales, e é igual ao abrir de novo com a mesma seed.
caio added this to the Mundo de blocos milestone 2026-10-03 17:25:07 -03:00
Author
Owner

Implementado em main.

Uma mudança em relação ao plano: em vez de usar as crates noise ou fastnoise-lite, o ruído Perlin foi escrito do zero em src/mundo/ruido.rs (~60 linhas, com testes). É o coração da geração procedural, então vale entender por dentro: grade de gradientes, produto escalar, curva fade e as oitavas do fBm.

O terreno (src/mundo/gerador.rs) combina três ruídos:

  • relevo: morros com 5 oitavas
  • montanhas: uma máscara de baixa frequência que levanta o terreno e cria picos de pedra
  • florestas: decide onde as árvores são densas e onde é campo aberto

Para jogar sempre no mesmo mundo: simple-minecraft --semente 2026. Sem o argumento, a seed é sorteada e aparece no log.

Implementado em main. Uma mudança em relação ao plano: em vez de usar as crates `noise` ou `fastnoise-lite`, o **ruído Perlin foi escrito do zero** em `src/mundo/ruido.rs` (~60 linhas, com testes). É o coração da geração procedural, então vale entender por dentro: grade de gradientes, produto escalar, curva `fade` e as oitavas do fBm. O terreno (`src/mundo/gerador.rs`) combina três ruídos: - **relevo**: morros com 5 oitavas - **montanhas**: uma máscara de baixa frequência que levanta o terreno e cria picos de pedra - **florestas**: decide onde as árvores são densas e onde é campo aberto Para jogar sempre no mesmo mundo: `simple-minecraft --semente 2026`. Sem o argumento, a seed é sorteada e aparece no log.
caio closed this issue 2026-10-03 19:07:57 -03:00
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
caio/simple-minecraft-rust#9
No description provided.