TECH 으로 돌아가기
TECH HACKER NEWS 오늘 9분 읽기 27 READS

팩토리오 '품질' 시스템을 수학으로 풀다 — 게임 속 마르코프 체인과 최적화 이야기

개발자들이 '퇴근 후 또 출근한다'는 게임

Factorio는 개발자 사이에서 유독 인기가 많은 공장 자동화 게임이에요. 광석을 캐고, 제련하고, 부품을 만들고, 컨베이어 벨트로 이어서 점점 거대한 생산 라인을 만드는 게임인데요. 병목을 찾고, 처리량을 계산하고, 스파게티처럼 엉킨 설계를 리팩터링하는 과정이 개발 업무랑 너무 닮아서 '퇴근하고 또 출근하는 게임'이라는 농담까지 있어요.

2024년 10월에 나온 확장팩 Space Age는 여기에 품질(Quality)이라는 시스템을 추가했어요. 같은 아이템이라도 일반(Normal), 고급(Uncommon), 희귀(Rare), 에픽(Epic), 전설(Legendary)까지 다섯 등급이 생겼고, 등급이 높을수록 성능이 좋아져요. 문제는 이 등급이 확률로 결정된다는 거예요. 그래서 '어떻게 해야 가장 적은 자원으로 전설 아이템을 뽑을 수 있을까?'가 플레이어들의 큰 고민이 됐죠. 오늘 소개할 글 'Solving Factorio Quality'는 바로 이 문제를 수학으로 풀어보는 글이에요. 게임 얘기지만, 들여다보면 실무에서도 쓰이는 확률 모델링과 최적화가 그대로 들어 있어요.

품질 시스템은 어떻게 동작할까

기본 규칙부터 볼게요. 조립기 같은 제작 기계에 품질 모듈을 끼우면, 결과물이 재료보다 한 단계 높은 등급으로 나올 확률이 생겨요. 한 단계 올라가는 데 성공하면 거기서 또 한 단계 더 올라갈 작은 확률(10%)이 연쇄적으로 붙고요. 운이 좋으면 일반 재료로 한 번에 희귀 이상이 나올 수도 있다는 거죠.

여기에 재활용기(Recycler)가 등장해요. 재활용기는 아이템을 분해해서 재료의 25%를 돌려주는데, 이때 품질 등급은 그대로 유지돼요. 그리고 재활용기에도 품질 모듈을 끼울 수 있어요. 그러면 이런 루프가 만들어져요.

1. 재료로 아이템을 만든다 (품질 모듈 덕분에 가끔 높은 등급이 나옴)
2. 원하는 등급이 아니면 재활용기에 넣어 재료로 되돌린다 (이때도 등급이 오를 수 있음)
3. 돌아온 재료로 다시 만든다

뽑기를 계속 다시 돌리는 구조인데, 한 바퀴 돌 때마다 재료의 75%가 사라져요. 그러니까 '확률은 조금씩 쌓이지만 자원은 계속 새어 나가는' 루프인 거죠.

왜 어려운 문제일까: 트레이드오프

머리가 아파지는 건 선택지가 서로 부딪히기 때문이에요. 기계의 모듈 슬롯은 한정돼 있는데, 여기에 품질 모듈을 넣으면 등급 확률이 오르고, 생산성 모듈을 넣으면 같은 재료로 더 많은 결과물이 나와요. 생산성을 높이면 루프에서 새어 나가는 자원을 줄일 수 있고, 품질을 높이면 루프를 덜 돌아도 돼요. 둘 중 뭐가 나은지는 레시피, 모듈 등급, 목표 등급에 따라 달라지고, 심지어 루프의 단계마다 다른 조합이 최적일 수도 있어요. 감으로 찍기엔 경우의 수가 너무 많죠.

수학으로 모델링하기: 마르코프 체인

이런 문제를 푸는 대표적인 도구가 마르코프 체인(Markov chain)이에요. 이게 뭐냐면, '지금 상태'만 알면 '다음 상태로 갈 확률'이 정해지는 시스템을 표현하는 방법이에요. 보드게임에서 주사위를 굴려 칸을 이동하는 것과 비슷해요. 지금 몇 번 칸에 있는지만 알면, 과거에 어떻게 왔는지와 상관없이 다음 칸으로 갈 확률이 정해지잖아요.

품질 루프에 대입하면 상태 = 아이템의 등급(과 재료인지 완성품인지), 전이 확률 = 모듈 구성에 따라 정해지는 등급 상승 확률과 재활용 손실이 돼요. 전설 등급에 도달하면 루프를 빠져나가니까 이건 '흡수 상태'라고 불러요. 한번 들어가면 나오지 않는 상태라는 뜻이에요.

이렇게 행렬로 정리하고 나면, '일반 재료 1개를 넣었을 때 최종적으로 전설 아이템이 기대값으로 몇 개 나오는가'를 선형 방정식으로 계산할 수 있어요. 흡수 마르코프 체인에서는 흡수되지 않는 상태끼리의 전이 행렬을 Q라고 할 때 (I - Q)^-1 형태의 행렬(기본 행렬, fundamental matrix)로 기대 방문 횟수를 구하는 게 교과서적인 방법이에요. 파이썬이라면 numpy의 linalg.solve 한 줄로 끝나는 계산이죠. 그다음엔 모듈 조합을 바꿔가며 이 값을 비교하면 최적 구성을 찾을 수 있고, 조합이 많아지면 전수 탐색 대신 선형계획법(LP) 같은 최적화 기법을 쓰기도 해요. 글쓴이가 구체적으로 어떤 모델과 가정을 썼는지, 결론이 어떻게 나왔는지는 원문의 표와 그래프로 확인해보시길 추천해요. 수식을 따라가는 재미가 꽤 있거든요.

업계 맥락: 게임 속 '계산기 문화'

Factorio 커뮤니티에는 원래 계산기 문화가 뿌리 깊어요. 생산 비율을 계산해 주는 웹 계산기나 게임 안에서 생산 라인을 설계해 주는 모드들이 오래전부터 쓰여 왔죠. 품질 시스템은 여기에 '확률'이라는 차원을 더해서, 단순한 비율 계산을 넘어 확률 모델링이 필요한 영역으로 끌어올렸어요.

그리고 이 기법들은 게임 밖에서도 그대로 쓰여요. 마르코프 체인은 재시도 로직의 성공 확률 분석, 회원가입 퍼널의 사용자 이탈 분석, 큐잉 시스템 모델링에 쓰이고, 선형계획법은 클라우드 인스턴스 비용 최적화나 물류 경로 배분 같은 문제의 단골 도구예요. '75%가 새는 루프에서 목표에 도달하는 기대 비용'이라는 구조는, 실패하면 비용 일부를 잃고 재시도하는 분산 시스템 작업과도 닮았고요.

한국 개발자에게 주는 시사점

마무리

한 줄 정리: 게임 속 '전설 아이템 뽑기'도 마르코프 체인과 최적화로 풀면 감이 아니라 계산의 영역이 돼요.

여러분은 게임이나 취미에서 만난 문제를 코드나 수학으로 풀어본 경험이 있나요? 그리고 실무에서 재시도, 뽑기, A/B 테스트처럼 확률이 끼어드는 시스템을 설계할 때 기대값을 어떻게 검증하고 계신지 궁금해요.


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://exyr.org/2026/solving-factorio-quality/
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...