팩토리오의 난수 생성 알고리즘을 역설계하다
Key Point
PRNG의 결정론적 특성을 이용한 게임 내 난수 예측 기법을 공개하므로, 게임 메커닉 최적화에 관심 있는 개발자들과 보안 연구자들이 참고할 수 있다.
핵심 요약
- 팩토리오는 품질 기반 아이템 시스템에 taus88 난수생성기(LFSR 3개를 XOR 조합)를 사용한다.
- 게임 바이너리의 디버그 심볼(PDB)과 Ghidra 같은 역어셈블 도구를 이용해 RandomGenerator 클래스의 정확한 구현을 분석했다.
- PRNG의 내부 상태를 알면 동일한 알고리즘으로 미래 난수를 예측할 수 있다.
- 이를 통해 어떤 제작이 높은 품질을 얻을지 미리 계산하고 최적화할 수 있다.
- 팩토리오 2.1부터는 RNG 사용 방식이 변경되어 기존 분석은 2.0 버전에서만 유효하다.