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
'게임 개발 > 맵 제작' 카테고리의 다른 글
[게임개발/C#] 타일형 랜덤맵 배열 섞기. 피셔-예이츠 셔플. (0) | 2022.12.15 |
---|---|
[게임개발] 타일형 랜덤맵에서 고립된 공간 만들지 않기. Flood Fill 활용. (0) | 2022.12.15 |