본문 바로가기

게임 개발/맵 제작

[게임개발/C#] 맵에디터 랜덤 맵 생성 관련 시드값 설정하기

728x90

마인크래프트나 문명같이 맵을 랜덤하게 생성해주는 게임에서

랜덤 맵을 생성할 때 시드값 (Seed) 이라는 것이 있어

시드값을 똑같이 입력하면 랜덤 맵일지라도 똑같게 만들어진 맵에서 플레이할 수 있습니다.

 

이 것을 구현하기 위한 Random 클래스 사용방법입니다.

 

 

- 기본적인 랜덤 값 생성 방법입니다.

Random rand = new Random();
int num = rand.Next();
Console.WriteLine(num);
출력 결과
1499166260   ( 0 이상 Int32.MaxValue 미만의 정수 값 )

이렇게 실행하면 매 번 실행할 때마다 랜덤한 값을 얻을 수 있습니다.

 

 

 

- 시드를 활용한 랜덤 값 생성 방법입니다.

// 먼저 seed로 사용할 랜덤값을 구합니다.
Random randSeed = new Random();
int seed = randSeed.Next();

// 실제 사용할 값은 seed를 사용하여 얻습니다.
Random rand = new Random(seed);
int num1 = rand.Next();

Console.WriteLine(num1);


// 이후 필요할 때 고정된 seed 값을 넣으면
// 매번 같은 값이 나오게 됩니다.
seed = 100;
Random rand2 = new Random(seed);
int num2 = rand2.Next(1, 10000);
int num3 = rand2.Next(2, 10000);

Console.WriteLine(num2);
Console.WriteLine(num3);
출력결과
1823767262    ( 매 실행할 때마다 다른 값이 나옵니다. )
9687                ( 시드값때문에 매번 같은 값이 나옵니다 )
1593                ( 매 번 같은 값이 나옵니다 )

 

 * 시드값을 문자열로 입력하는 게임의 경우에도

string strSeed = "너구리";
Int32.TryParse(strSeed, out seed);

문자열을 그대로 int형으로 변환하여 사용해도 됩니다.

728x90