2. Escala, amplitude, offset e semente
Os quatro botões que você vai girar em qualquer motor.
A função de ruído é sempre a mesma. O que muda o resultado é como você chama a função. A linha de código abaixo se atualiza com os controles.
O que cada um faz
| Parâmetro | Onde entra | Efeito visual | Nome em outros lugares |
|---|---|---|---|
| escala | multiplica a coordenada de entrada | escala pequena = manchas grandes e suaves; escala grande = detalhe miúdo | frequência, zoom (o inverso), noise scale |
| amplitude | multiplica a saída | contraste; em terreno, altura máxima | maxHeight, heightMultiplier |
| offset | soma à coordenada de entrada | "anda" pelo campo de ruído; offset aleatório = mapa diferente | origem, sampleOffset |
| semente | escolhe a tabela de permutação (os gradientes) | campo de ruído completamente diferente | seed; no Unity não existe: usa-se offset aleatório no lugar |
A armadilha da coordenada inteira. Ligue "amostrar só inteiros" no painel. O mapa vira cinza uniforme.
Em todo nó inteiro o Perlin vale zero, e se você passa
(x, y) do grid direto, sem multiplicar por uma escala fracionária, só amostra nós.
É o bug número um de quem começa: Mathf.PerlinNoise(x, y) com x e y inteiros.
Faixa de saída
O algoritmo devolve algo entre −1 e 1 (e raramente chega nos extremos). Cada motor entrega isso de um jeito:
| Ferramenta | Faixa | Para levar a 0..1 |
|---|---|---|
Unity Mathf.PerlinNoise | ≈ 0..1 (já remapeado) | nada |
Godot FastNoiseLite.get_noise_2d | −1..1 | n * 0.5 + 0.5 |
| libnoise, a maioria das libs | −1..1 | n * 0.5 + 0.5 |
Se você somar oitavas (demo 3) a faixa cresce. Sempre saiba em que faixa está antes de usar o valor como altura, cor ou probabilidade.
Determinismo. Clique em "redesenhar" quantas vezes quiser: o mapa não muda. O mundo inteiro pode ser reconstruído a partir de (semente, offset, escala). É isso que permite chunks que somem e voltam iguais, itens que não voltam depois de coletados e mapas compartilháveis por um número.