다른 답변은이 특정 요구에 맞는 정적 풍경을 생성하는 데 정말 좋습니다. 시간이 지남에 따라 변화하거나 훨씬 더 사실적으로 보이는 풍경을 만들고 싶다면이 기술을 따르는 사람들이 찾고있는 다른 방법이 있습니다.
다른 답변과 달리 완전히 빈 맵으로 시작합니다. 해수면으로 간주하는 것으로 시작하십시오. Perlin Noise 를 사용 하여 약간의 변동을 추가 하십시오. 256 개의 가능한 고도가있는 경우 어느 방향 으로든 3-5를 넘지 마십시오. 이렇게하면 실제로 오랫동안 시뮬레이션을 실행할 필요없이 처음 몇 십억 년의 풍경이 만들어집니다.
판 구조론
지도를 직선 또는 곡선을 따라 분할하여 판을 만듭니다. 판의 모양이 자세할수록 풍경이 더 흥미로워집니다. 크게 유지하십시오. 각 판에 방향과 속도를 부여하십시오. 주어진 시간 동안 판을지도 주위에서 단계적으로 이동시켜 그 위에있는 모든 타일을 끌어 놓습니다.
두 개의 판이 교차 할 때, 어떤 것이 넘어 질지, 어떤 것이 내려갈 것인지 선택하면,이 선택은 무작위 일 수 있습니다. 아래에 지정된 플레이트의 타일은 높이가 즉시 5 단계 씩 줄어 듭니다. 플레이트가 위 또는 아래에 지정되면 플레이트와의 모든 향후 상호 작용은 다음 규칙을 따릅니다.
- 지정된 판이 지정되지 않은 판을 가로 지르는 경우, 지정되지 않은 판은 반대 유형이됩니다. (따라서 UD 플레이트가 넘어지면 넘어집니다.)
- 오버 플레이트가 언더 플레이트 위에있는 경우 모든 타일은 0-1 고도 단계 위로 이동하고 타일은 오버 플레이트의 경로를 따릅니다.
- 오버 플레이트가 오버 플레이트를 가로 지르는 경우, 모든 타일은 1-2 단계 위로 이동하고 크로스 오버 영역의 타일은 더 이상 드리프트하지 않습니다.
- 언더 플레이트가 언더 플레이트를 가로 지르는 경우 크로스 오버 영역의 두 플레이트에 대한 표고가 66 %보다 큰 영역의 타일은 1-3 단계 위로 이동합니다 (화산 활동에 의한 것처럼 충분한 시간이 지남에 따라 섬이 생성됨) ) 및이 영역의 타일이 표류를 멈 춥니 다.
각 단계마다 현재 속도의 20 % 느리게 교차하는 모든 플레이트. 사실감을 더하기 위해 각 단계마다 이동 방향을 임의로 -10 %에서 10 %로 변경하십시오.
원하는 단계 수를 수행 한 후. 아마 5-10은 충분합니다. 플레이트가없는 타일은 기존의 가장 낮은 레벨로 떨어 뜨려야합니다.
크거나 작습니까?
이 맵은 그대로 사용하거나 4X4 타일 (셀) 청크로 분할하고 개별 고도에 따라 해당 섹션을 확장하여 훨씬 더 큰 맵을 생성하도록 확장 할 수 있습니다. 각 셀의 고도를 점으로 취급하고 해당 점 사이의 큰지도에서 부드러운 그라데이션을 만듭니다. 따라서 큰지도가 4X4 대신 40X40이고 포인트 (0,0)이 10이고 포인트 (0,1)이 1 인 경우, 더 큰지도의 타일은 10,9,8,7,6입니다. 높이는, 5,4,3,2,1입니다. 경사를 완화하기 위해 펄린 노이즈를 추가 할 수 있습니다. 이 모든 스케일링 기법은 Diamond Square 알고리즘 과 유사합니다 .
물
강과 호수, 대양 및 물표를 시뮬레이션합니다. 나는 셀룰러 오토마타를 선호한다 .
높이는 수레 또는 확장 된 int 범위가되어 미세한 그레인 추적이 가능합니다. 물 세포는 포화 값, 예를 들어 1-256의 범위를 갖는다. 지도가 고르게 시작되어야합니다. 개별지도 크기에 맞는 숫자를 사용해야하지만 일반적으로 다음과 같은 규칙을 따릅니다.
- 인접 셀이 더 포화 된 경우 채도를 높이고 높이를 늘리십시오.
- 인접 셀이 덜 포화 된 경우 채도를 줄이고 높이를 잃습니다.
모든 인접 셀에 대해이 점검을 수행하십시오. 충분한 수의 단계를 수행하십시오. 원하는 경우 해당 온도로 포화 / 손실 된 포화 량을 변경하여이 시뮬레이션에 온도를 추가 할 수 있습니다. 고도를 기준으로 변경할 수도 있습니다. 자연 호수와 강이 형성되어야합니다. 일부는 바다에 빠질 것입니다. (해양은 어떤 측정 기준으로도 채워지지는 않지만 해수면 아래에서 물이 채워질 것을 지정합니다.)
다른 답변과 마찬가지로 온도 및 채도 데이터를 유지하여 생물 군계를 만들 수 있습니다. 더 정확하고 재미 있어야합니다. 극에 눈 덮인 생물 군계가 있고 중간에 뜨거운 생물 군계가 있습니다 (매끄러운 온도 목록을 사용하는 경우).
바람을 시뮬레이트하여 고도에 따른 온도 변화를 시뮬레이션 할 수도 있습니다. 원하는 경우 온도 시뮬레이션 실행과 물 시뮬레이션 실행을 앞뒤로 이동할 수 있습니다. 그러나 나는 온도 변화를 사용하여 아무것도 만들지 않았으므로 그렇게하는 방법에 대해서는 언급하지 않을 것입니다.
진화하는 풍경
육지, 물, 열에 대한 시뮬레이션을 유지하고 그 효과를 크게 줄이고 판의 움직임을 막 으면 시간이 지남에 따라 이러한 모든 지표를 계속 변경할 수 있습니다. 계산을 자주 수행하지는 않지만 이런 방식으로 변경에 응답하는 세계지도를 얻을 수 있습니다.
결론
이러한 종류의 기술은 훨씬 더 복잡하지만 훨씬 더 현실적이고 진화하는 효과를냅니다. 가치있는 것으로 가져 가세요?