Minecraft와 같은 게임은 종자 번호에서 어떻게 전 세계를 생성합니까?


32

나는 생물 군계 (마인 크래프트와 비슷한 게임과 같은)로 완전히 독특한 세계를 만들고 싶습니다. 나는 그들이 하나의 "씨앗"숫자에서 어떻게이 세계를 생성하는지 이해하지 못한다. 누군가 기술의 기본 개요를 제공 할 수 있습니까?


13
노치 (Notch)는 실제로 지형 생성에 대한 블로그 게시물을 작성 했는데 ,이 코드는 새로운 코드에 생물 군계와 FRACTALS 및 기타 마법사가 추가 된 이후 완전히 폐기되었습니다. 2 부도 없었습니다.
고양이

답변:


27
  1. 시드에서 무작위 X를 어떻게 생성합니까? 시드 값은 난수 생성기의 초기 상태입니다. 대부분의 프로그래밍 언어에서이 시드를 설정할 수 있습니다. 예를 들어 C는을 사용합니다 srand(). 시작할 특정 시드를 지정하지 않으면 일반적으로 타임 스탬프 값이 시드로 사용됩니다. 이렇게하면 실행할 때마다 난수가 다릅니다.

    // C example
    srand(1);
    for(i=0; i<3; i++)
        printf("%d\n", rand());
    srand(1);
    for(i=0; i<3; i++)
        printf("%d\n", rand());
    
    1270216262 
    1085377743 
    1481765933
    1270216262 
    1085377743 
    1481765933
    

    보시다시피, 특정 값으로 씨앗을 뿌릴 때마다 (나는 씨앗을 1로 사용했습니다) 결과 난수는 동일합니다.

  2. 난수를 기준으로 어떻게 마인 크래프트 생활 세계를 만들 수 있습니까? 노치는 이것에 관한 게시물을 가지고 있습니다. 또한 "마인 크래프트 같은 세계"에 대한 다른 사람들의 튜토리얼을 확인할 수 있습니다. 예를 들어 OpenGL 4의 Minecraft와 같은 렌더링을 즐겼습니다 . 기본 아이디어는 Perlin 노이즈 (또는 단일 노이즈)를 사용하는 것입니다. 노이즈 함수에 대한 좋은 질문입니다. Perlin 노이즈 이해


1
실제로, 당신은 Perlin Noise를 사용할 수 없을 것입니다.
jcora

6
Perlin 노이즈는 더 큰 지형 생성 방법의 일부로 사용할 수있는 노이즈 시스템입니다. 예. 고도에 따른 임계 값으로 3D 펄린 노이즈를 사용하여 절벽, 동굴 등을 생성 할 수 있습니다 (편집-사실 노치가 한 지점에서했던 것과 정확히 일치하는 답변의 링크에서 볼 수 있습니다)
Kylotan

1
킬로 탄 +1 Notch의 블로그에서 인용 한 내용은 다음과 같습니다. "특히 [2D Perlin 하이트 맵]으로 돌출부를 생성 할 수있는 방법이 없습니다. 따라서 3D Perlin 노이즈를 기반으로 유사한 시스템으로 시스템을 전환했습니다."지상 높이 "를 샘플링하는 대신 소음 값을 "밀도"로 취급했습니다. 여기서 0보다 작은 것은 공기가되고 0 이상의 것은 접지됩니다. "
Jimmy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.