타일 ​​기반 2D 플랫 포머를위한 지형 생성


15

현재 지형 생성에 어려움을 겪고 있지만 Terraria와 유사한 타일 기반 2D 플랫 포머에서 작업하고 있습니다. 유용한 것으로 나오지 않지만 몇 가지 기본 사항이 있습니다.

Perlin Noise와 같은 몇 가지 기술을 시도해 보았지만 Midpoint Displacement와 같은 다른 기술에 대해 읽었습니다. (일반 지형의 중간 지점 변위 및 동굴의 Perlin 소음과 같은)

C ++에 있지만 Accidental Noise Library 로 어떻게 계층화 할 수 있는지에 대한 훌륭한 설명 을 찾았 으며 C #에서 사용할 수있는 DLL로 컴파일하기에 충분한 C ++을 알지 못합니다. C #에서 이것을 복사하려고 시도했지만 두 가지 효과 (일반베이스의 그라디언트 및 세부 사항의 프랙탈)를 함께 병합하는 방법을 모르겠습니다.

현재 Plasma Fractal을 사용하고 있으며 결과는 매우 다양합니다. 예를 들어 표면이 거의없는 지형을 생성하거나 표면이 전혀없는 지형을 생성 할 수 있습니다.

그래도 괜찮은지도의 예가 조금 더 개선되면 더 좋을 것입니다. (검정색은 단단하고 흰색은 공기입니다) :

좋은지도

그리고 끔찍한지도의 예입니다. (검정색은 단단하고 흰색은 공기입니다) :

끔찍한지도

기본적으로, 내가 요구하는 것은 지형을 생성하는 더 좋은 방법이거나, 가능한 빨리 생성 시간과 함께 적당한 양의 표면적이 있는지 확인하도록 강요하는 것입니다. 또는 대안으로 Accidental Noise Library와 동일한 결과를 얻을 수 있지만 C #에서는 어떻게 할 수 있습니까?

모든 예는 대단히 감사하겠습니다.


안녕하세요, 어떻게 만들 었는지 궁금했습니다. 이와 같은 세계를 생성하는 방법에 대한 이해를 얻으려고 노력하고 있으며 결과를 좋아합니다. 펄린 노이즈 2D처럼 보이지 않고 확실히 펄린 노이즈 1D가 아니기 때문에 어떤 알고리즘을 사용하고 있습니까?
G3tinmybelly

답변:


8

나는 Perlin 소음을 고수하려고하지만 특정 고도에서 특정 평균 밀도를 보장하기 위해 높이를 기준으로 가중치를 추가합니다. 마인 크래프트 지형 생성에 대한 노치 게시물 의 일부를 인용하려면 :

그래서 3D Perlin 노이즈를 기반으로 유사한 시스템으로 시스템을 전환했습니다. “접지 높이”를 샘플링하는 대신 노이즈 값을“밀도”로 처리했습니다. 여기서 0보다 작은 것은 공기가되고 0 이상의 값은 접지가됩니다. 맨 아래 레이어가 단단하고 맨 위가 아닌지 확인하기 위해 샘플 결과에 높이 (수위로 오프셋)를 추가하기 만하면됩니다.

본질적으로, 당신은 Minecraft 지형의 작은 조각을 가지고 있습니다. 그래서 소음 2D 펄린을 생성하지만, 무게 때문에 특정 지점 위의 그 무엇입니다 가능성이 특정 지점 아래 공기, 아무것도 될 가능성이 지구로.

이렇게하면 돌출부와 흥미로운 기능뿐만 아니라 일부 동굴과 떠 다니는 섬이있는 훌륭한 지형이 제공됩니다. (떠 다니는 섬을 원하지 않으면 섬을 테스트하고 수동으로 제거 할 수 있습니다.)이 방법은 터널과 같은 것을 제공하지 않으므로 지형 생성 후 다음과 같은 지형을 추가하는 방법이 필요합니다. 무작위 걷기 .


Perlin Noise를 최대한 활용하고 있는지 확실하지 않습니다. 당신이 묘사 한대로 정확하게 한 후에 그것은 많은 떠 다니는 섬으로 많은 동굴을 만들었습니다. 실제 지형 유형 정의가 없습니다. 그래디언트를 사용하여 결과를 측정하면 이 결과를 얻습니다 .
음영 처리 치수

@Shaded Dimensions-Perlin Noise 매개 변수를 조정해야합니다. 원하는 것이 훨씬 더 부드럽고 넓은 패턴 일 때 매우 가변적 인 노이즈가 있습니다. freespace.virgin.net/hugo.elias/models/m_perlin.htm을 확인하고 매개 변수를 엉망으로 만드 십시오. 낮은 지속성과 적은 옥타브를 시도하십시오. (이러한 용어는 다를 수 있으므로 해당 기사를 읽으십시오.)
dlras2

좋아요, 링크 주셔서 감사합니다. 또한 몇 가지 매개 변수를 변경 한 후 가중치가 의도 한대로 작동하지 않는 것으로 나타났습니다.
음영 처리 치수

좋아, 매개 변수를 약간 수정했고 지금은 적어도 수용할만한 것을 얻었습니다. 또한 실제 지형을 먼저 수행하고 싶기 때문에이 테스트를 위해 동굴 생성을 제거했습니다. 이것이 최종 결과 입니다. 떠 다니는 섬을 제거하기 위해 점검을 추가하면됩니다. 다시 감사합니다.
음영 처리 치수

@Shaded Dimensions-니스! 많은 시간 동안 좋은 지형은 매개 변수를 조정하고 노이즈를 오버레이하는 것에서 비롯됩니다. 마음에 드는 것을 얻기까지 시간이 걸리지 만, 항상 지금 가지고있는 것을 사용하고 마무리 조정을 위해 다시 올 수 있습니다. 행운을 빕니다!
dlras2 08-08-23
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.