게임 Hacker News · 5시간 전

"확률 뚫고 대박 띄운다"… 팩토리오 난수 생성기 뜯어낸 용자 등장

핵심 요약
  • 팩토리오 확장팩 '스페이스 에이지'에 추가된 아이템 품질 뽑기 확률을 예측하기 위해 한 유저가 게임의 난수 생성기(PRNG)를 리버스 엔지니어링했습니다.
  • 개발자 포럼 기록과 디버그 심볼 디컴파일을 통해 'taus88' 난수 알고리즘 구조와 상태값을 파악해 다음 난수를 100% 계산할 수 있음을 규명했습니다.
  • 해당 인게임 조작 방식은 팩토리오 2.0 전용이며, 난수 처리 방식이 변경된 2.1 버전에서는 게임 내 구현체가 막히지만 이론 자체는 여전히 유효합니다.
요약 시뮬레이션 명작 게임 '팩토리오(Factorio)'의 대규모 확장팩 '스페이스 에이지(Space-Age)'에서는 아이템과 건물의 스탯을 대폭 올려주는 '품질(Quality)' 시스템이 새롭게 도입되었습니다. 제작기에 품질 모듈을 장착하면 낮은 확률로 더 높은 등급의 아이템이 제작되는 방식으로, 제작진은 대량 생산을 통해 통계적으로 고품질 아이템을 확보하는 방식을 유도했습니다. 하지만 완전히 결정론적(deterministic)으로 구동되는 팩토리오의 시뮬레이션 특성상, 인게임 확률 역시 진짜 무작위가 아닌 '의사 난수 생성기(PRNG)'를 통해 연산됩니다. 이에 한 기술적인 유저가 난수 생성기의 내부 구조와 상태값을 완전히 파악하면 미래의 난수 결과를 100% 예측해 고품질 아이템 획득 시점을 노릴 수 있다는 점에 착안해 리버스 엔지니어링에 나섰습니다. 작성자는 11년 전 팩토리오 공식 포럼에서 개발자가 남긴 글을 단서로 게임이 Boost 라이브러리의 'taus88' 생성기(3개의 선형 되먹임 시프트 레지스터 LFSR을 XOR 조합한 구조)를 사용한다는 사실을 확인했습니다. 이어 게임 실행 파일과 함께 제공된 디버그 심볼(.pdb) 파일을 기드라(Ghidra) 및 바이너리 닌자(Binary Ninja)로 디컴파일 분석하여 실제 게임 내 `RandomGenerator` 클래스의 내부 연산 로직을 정밀 검증했습니다. 다만 이 게임 내 난수 조작 구현 기법은 팩토리오 2.0 버전 기준이며, 향후 팩토리오 2.1 패치에서는 난수 사용 방식이 변경되어 인게임 구현체는 작동하지 않게 됩니다. 하지만 게임이 동일한 난수 알고리즘을 유지하는 한 수학적·이론적 배경은 계속 유효하다고 분석했습니다.
Sponsored · 광고