# 팩토리오의 난수 생성기를 분석하여 “레전드 품질의 아이템”이 나올 미래를 예측하는 시도

> https://bookfactory.kr/board/news/17593
> 게시판: 뉴스
> 작성자: tachikoma43
> 작성일: 2026-09-18T05:27:14.270Z

---

공장 건설 게임 “Factorio”의 확장 콘텐츠 “Factorio: Space Age”에는, 제조한 아이템의 성능이 랜덤으로 상승하는 “품질”이라는 메커니즘이 있습니다. 컴퓨터 과학을 전공하는 대학원생의 게겔 氏はFactorio가 사용하는 겉보기 난수 생성기(PRNG)를 리버싱 엔지니어링하여, 게임 내 회로만으로 난수의 내부 상태를 획득하고 미래에 언제 고품질 아이템이 완성될지 예측하는 메커니즘을 구축했습니다. 더 불리한 난수를 의도적으로 소비하고, 최고 품질의 “레전드”가 나올 때까지 난수열을 진행하는 자동화에도 성공한とのこと입니다. 역으로 Factorio의 난수 생성기를 분석한 결과, 게임 내 회로만으로 난수의 내부 상태를 획득하고 미래에 언제 고품질 아이템이 완성될지 예측하는 메커니즘을 구축했습니다. 더 불리한 난수를 의도적으로 소비하고, 최고 품질의 “레전드”가 나올 때까지 난수열을 진행하는 자동화에도 성공한 것으로 알려졌습니다. Factorio의 품질 시스템에서는 아이템과 시설에 노멀, 앤코몬, 레어, 에픽, 레전드라는 5단계의 품질이 준비되어 있습니다. 품질이 상승하면 조립기의 제조 속도가 향상되거나, 인서터의 작동이 고속화되는 등의 성능이 강화됩니다. 제조 시설에 “품질 모듈”을 부착하면 일정 확률로 재료보다 고품질의 제품이 만들어지고, 더 높은 품질로 한 번에 상승할 가능성도 있습니다.

고품질 아이템을 대량으로 확보하려면, 품질 모듈을 탑재한 장비로 제조를 지속하고, 목표 품질에 미치지 못한 제품을 재활용업체에 투입하는 것이 기본입니다. Factorio 공식도 대량 생산에서는 품질의 출현이 “통계” 문제라고 설명하고 있으며, 일반적으로는 막대한 자원과 시간을 투자하여 레전드 품질을 노리는 것이 됩니다. Factorio에서 사용되는 “난수”는 완전히 예측 불가능한 값이 아니며, 일정한 계산 규칙에서 난수처럼 보이는 숫자를 생성하는 “가짜 난수 생성기(PRNG)”에 의해 만들어집니다. 즉, 알고리즘과 내부 상태가 모두 알려진다면, 앞으로 출력될 난수를 계산할 수 있다는 의미입니다.

게겔 氏はまず Factorio의 전 개발자가 2014년에 게시한 정보에서 “taus88”이라는 유사 난수 생성기가 사용될 가능성을 주목했습니다. 더 나아가 Factorio에 포함된 디버깅 정보를 이용하여 게임 본체를 분석한 결과, Ghidra 및 Binary Ninja와 같은 역컴파일 툴로 코드를 조사한 결과, Factorio의 난수 생성기가 3개의 “선형 피드백 시프트 레지스터(LFSR)”를 조합한 taus88임을 확인했습니다. LFSR는 비트열을 일정한 규칙으로 이동시키면서 새로운 값을 만드는 메커니즘으로, 처리 속도가 매우 빠르지만 충분한 출력을 관측하면 내부 상태를 수학적으로 역산할 수 있는 특징이 있습니다. 그래서 문제가 되는 것은 게임 화면으로부터 어떻게 난수 출력을 관측하는가 하는 점입니다. 게겔 氏가 선택한 것은 “리ペア킷의 재활용”이었습니다. Factorio 2.0에서는 리ペア킷을 재활용한 시 결과에서 난수에 대해 효율적으로 정보 추출이 가능하며, 1회 리사이클에서 2비트 분량을 관측할 수 있다고 합니다. 44회 리사이클하여 88비트 분량의 관측 결과를 수집하면 난수 생성기의 유효한 내부 상태를 재구성할 수 있다고 합니다.

내부 상태를 획득한 후에는 미리 Python으로 계산해 둔 행렬을 Factorio 회로에 통합하고, Factorio 회로 부품을 사용하여 미래의 난수를 계산합니다. Factorio 2.0의 품질 판정은 제조 1회につき 난수를 1회 획득하고, 난수를 품질별로 설정된 기준값과 비교함으로써 완성품의 품질을 결정했습니다. 따라서 미래의 난수가 확보되면 “다음 제조는 노멀”, “수회 후에는 레어”, “더욱 먼 미래에는 레전드”와 같은 예측도 가능해집니다.

Gegell 氏は 예측 결과는 실제 공장에서 활용하는 메커니즘도 만들었습니다. 아래 이미지는 예측된 품질에 따라 사용하는 조립기를 전환하고, 품질별로 다른 벨트(선)로 제품을 전송합니다.

그리고 최종적으로 만들어진 것은 레전드 품질의 아이템을 자동 생산하는 장치입니다. 예측한 난수열 중에서 레전드 품질이 되는 위치를 찾고, 그것 이전으로 정렬되어 있는 불필요한 난수를 다른 처리에서 소비합니다. Factorio 2.0에서는 폐재의 재활용이 짧은 시간 안에 다수의 난수를 소비할 수 있기 때문에 대략적인 난수열을 진행하고, 남은 것을 철의 톱니바퀴 재활용 등으로 조정합니다. 목표로 삼은 난수가 다음으로 나타날 순간, 본래 계획했던 아이템을 제조하는 메커니즘이 작동하게 됩니다.

실험 버전으로 공개되고 있는 Factorio 2.1에서는 아이템 생성 시의 난수 처리 방식 자체가 변경되어 Factorio 2.0용으로 제작된 Gegell 씨의 장치는 사용할 수 없습니다. Gegell 씨에 따르면 기본이 되는 taus88은 계속해서 사용되는 반면, 1회에 얻은 난수를 여러 출력을 공유하도록 변경되었으며, 품질과 관련 없는 일반적인 제조에서도 난수가 소비되는 일이 발생했다고 합니다. Gegell 씨는 Factorio 2.1에 대해 최근 추가된 행성 간 신호를 이용하여 다른 행성에서 불필요한 난수를 소비하고, 원하는 타이밍에 고품질 아이템을 만드는 구성도 가능하다는 점을 언급했습니다. 다만, Gegell 씨는 Factorio 2.1이 앞으로도 추가적인 변경될 가능성이 있으므로, 난수 예측 장치의 업데이트는 일단 지켜보겠다는 입장입니다.

[원문 보기](https://gigazine.net/news/20260918-reversing-factorio-rng/) | 출처: Gigazine