랜덤 시드 가져오기 (random_get_seed)
랜덤 숫자를 생성하기 위해 GameMaker는 랜덤 시드 번호로 시작합니다. random_get_seed
함수를 사용하면 이 시드를 가져올 수 있으며, 이를 저장하여 특정 랜덤 이벤트 시퀀스를 재현할 수 있습니다. 예를 들어, 절차적으로 생성된 게임에서 플레이어가 이전에 발견한 지역으로 돌아가고 싶다면, 각 지역의 시작 시점에 이 함수를 사용하여 랜덤 시드를 저장할 수 있습니다. 이후 해당 지역으로 돌아갈 때 random_set_seed()
를 사용하여 이전 시드로 설정하면 GameMaker가 이전에 사용했던 동일한 "랜덤" 함수 세트를 재현하게 됩니다.
문법
random_get_seed();
반환값
- 현재 랜덤 시드 값
예제
ini_open("Save.ini");
ini_write_real("Levels", string(level), random_get_seed());
ini_close();
위 코드는 현재 랜덤 시드를 가져와 ini 파일에 저장합니다.
활용 예제
1. 게임 진행 상황 저장
게임의 진행 상황을 저장할 때 랜덤 시드를 함께 저장하여, 나중에 동일한 진행 상황을 재현할 수 있습니다.
// 게임 진행 상황 저장
ini_open("Save.ini");
ini_write_real("Progress", current_progress, random_get_seed());
ini_close();
2. 특정 지역 재방문
플레이어가 특정 지역으로 돌아갈 때, 이전에 저장한 랜덤 시드를 사용하여 동일한 환경을 재현합니다.
// 특정 지역으로 돌아가기
random_set_seed(saved_seed);
3. 랜덤 이벤트 생성
게임 내에서 랜덤 이벤트를 생성할 때, 시드를 저장하여 동일한 이벤트를 다시 발생시킬 수 있습니다.
// 랜덤 이벤트 생성
var seed = random_get_seed();
random_set_seed(seed);
var event = choose("enemy_spawn", "treasure_spawn", "trap_spawn");
4. 테스트 및 디버깅
게임의 특정 부분을 테스트할 때, 랜덤 시드를 고정하여 동일한 결과를 얻을 수 있습니다.
// 테스트용 랜덤 시드 설정
random_set_seed(12345);
5. 사용자 설정 저장
사용자가 설정한 옵션에 따라 랜덤 시드를 저장하여, 다음 게임 세션에서도 동일한 경험을 제공합니다.
// 사용자 설정 저장
ini_open("UserSettings.ini");
ini_write_real("RandomSeed", random_get_seed());
ini_close();
이와 같이 random_get_seed
함수를 활용하면 게임의 랜덤 요소를 보다 효과적으로 관리하고, 플레이어에게 일관된 경험을 제공할 수 있습니다.