나는 당신이 지금 무엇을 요구하는지 더 잘 이해하고 있다고 생각합니다.
노이즈는 무작위가 아닙니다. 무작위로 보이지만 완전히 수학 공식을 기반으로하며 반복 가능합니다. 모든 정보는 공식으로 인코딩됩니다. 즉, 무한 영역을 포괄하는 수식을 가질 수 있고 필요한 영역의 좌표에 수식을 사용할 수 있습니다. 인접한 영역이 필요한 경우 새 좌표에서 수식을 재사용하면 수식이 연속 값을 생성하므로 영역이 매끄럽게 결합됩니다.
다음은 높이 생성을 위해 펄린 노이즈 대신 사인을 사용하는 단순화 된 예입니다. X 축에서는 월드가 무한하지만 Y 및 Z 축에서는 1 단위 만 상상할 수 있습니다.
공식은 다음과 같습니다. height(x,y) = sin(x/20)
게임이 시작되고 근처 지역의 높이를 생성합니다. (0,0) ~ (9,0) :
[0.0, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.34, 0.39, 0.43]
우리는 오른쪽으로 올라가는 언덕이 있습니다. 끝까지 걸어 가서 (10,0에서 19,0)까지의 값을 생성해야한다고 가정 해 봅시다.
[0.48, 0.52, 0.56, 0.61, 0.64, 0.68, 0.72, 0.75, 0.78, 0.81]
언덕이 꾸준히 상승하고 있으며 (10,0)의 값은 (9,0)의 값과 잘 어울립니다. 사인 함수가 연속적이기 때문입니다. 이는 기본적으로 2 개의 인접 숫자를 입력하면 2 개의 인접 결과를 얻을 수 있음을 의미합니다. 따라서 월드 좌표를 월드를 정의하는 함수의 매개 변수로 사용하면 한 번에 생성하는 양이 많든 적든 상관없이 연속적인 풍경을 얻을 수 있습니다. 새 부품을 생성하면 높이가 이미 미리 결정되어 있기 때문에 기존 부품에서 자동으로 흐릅니다.
세계가 변하지 않는다면 공식에서 주어진 지점의 높이가 정확히 무엇인지 계산할 수 있기 때문에 아무것도 저장할 필요조차 없습니다. 분명히 Minecraft와 같은 것으로 세상은 완전히 변형 가능하므로 각 덩어리를 만들 때 저장하면됩니다. 인접한 청크 사이에 높은 일관성이 있다고 가정하면 (즉, 1 블록이 잔디 인 경우 옆 블록도 잔디 일 것입니다) 데이터를 매우 효율적으로 압축 할 수 있습니다. 런 길이 인코딩이 작동합니다. 그러나 거의 모든 표준 압축 알고리즘도 마찬가지입니다.
가장 명확한 값으로 높이에 대해 이야기했지만, 동일한 시스템을 사용하여 원하는 특성을 생성 할 수 있습니다. 연속적인 속성과 입력 값이 월드 좌표 인 곳에서 수학 함수를 사용하여 랜드 마크, 광물 매장량, 스폰 지점 등 원하는 위치를 결정할 수 있습니다. (분명히 한 공식의 값이 다른 점에 영향을 줄 수 있습니다. 공중에 석탄 퇴적물을 배치하는 데 아무런 의미가 없으므로 세계 높이 맵을 생성 한 다음 지상보다 훨씬 낮은 블록의 석탄 가능성 만 계산하십시오.)