게임 개발 · 기술 동향미로의 개발노트
카테고리

Factorio · 물류 설계

Factorio는 벨트 폭을 그대로 두고 어떻게 더 많이 운반할까?

모아보기 · 작성 기준일 · 블로그 공개

흐르는 속도와 한 칸에 싣는 수량은 다른 값입니다. 적재를 늘렸을 때 병목이 어디로 옮겨 가는지 살펴봅니다.

Factorio 개발 일지에서 적층 운반 벨트를 소개하는 공식 이미지
Factorio 개발팀이 벨트 위에 아이템을 쌓는 방식을 설명한 개발 일지의 표지.

벨트를 빠르게 만드는 것과 많이 싣는 것은 달라요

한 틱에 이동하는 거리가 같아도, 벨트 한 자리에 아이템을 겹쳐 실으면 그 자리를 통과하는 물건의 수는 늘어납니다. Factorio의 개발진은 새 종류의 투입기가 아이템을 쌓아 벨트에 올리는 방식을 소개했습니다. 벨트의 속도를 일괄적으로 높이기보다, 실제로 많이 싣는 구간을 설계할 수 있게 한 셈입니다.

쌓아서 보내면 어디가 막힐까요?

출발점이 두 개씩 모아 실을 수 있어도 도착점이 한 번에 하나씩만 빼 간다면, 충분한 시간이 지난 뒤에는 그 처리량이 전체 생산량을 제한합니다. 쌓으려고 기다리는 시간도 생각해야 합니다. 공급이 뜸한 구간에서는 적재량을 채우느라 첫 아이템이 늦어질 수 있어요. 이는 한 번에 많이 보낸다는 규칙과 빨리 보내는 규칙을 구분해야 하는 이유입니다.

20칸 실험

20칸짜리 경로에서 한 번에 하나를 즉시 보내는 버전과 두 개를 모아서 보내는 버전을 비교합니다. 공급량과 회수 속도를 각각 바꿔 보면서 첫 도착 시간, 30초 동안 회수한 개수, 끝에 쌓인 재고를 따로 적습니다. 세 값이 서로 다른 방향으로 움직일 수 있다는 게 이 실험의 핵심입니다.

묶음은 움직이는 단위와 소비하는 단위를 나눕니다

간단한 구현에서는 벨트의 한 자리에 ‘아이템 종류’와 ‘수량’을 넣고, 이동은 칸 단위로 처리할 수 있어요. 예를 들어 철판 두 장이 한 묶음으로 도착했는데 소비 장치가 한 번에 한 장만 받는다면, 한 장을 넘긴 뒤에도 칸은 계속 점유된 상태입니다. 수량이 0이 될 때 빈칸으로 바꿔야 뒤따르는 묶음이 전진합니다. 좌표가 하나라는 이유로 장치가 묶음을 통째로 가져가면 운반 방식만 바꾸려던 수정이 소비 속도까지 바꿔 버립니다. 이 구조는 원리를 재현하기 위한 모형이며, 실제 게임의 내부 자료구조를 설명하는 것은 아닙니다.

서로 다른 물건을 한 칸에 섞을지도 결정해야 합니다. 같은 종류만 쌓이게 하면 인출 규칙이 단순해지고, 플레이어도 남은 물건을 쉽게 읽을 수 있어요. 대신 공급 순서가 철판 하나, 구리판 하나로 반복될 때는 두 장짜리 묶음이 만들어지기 어렵습니다. 일정 시간 지나면 덜 찬 상태로 보낼지, 종류별로 작은 대기열을 둘지에 따라 첫 도착 시간과 구현 복잡도가 달라집니다. 처음부터 모든 규칙을 넣기보다는 한 종류만 다루는 모형으로 처리량을 확인하고 조건을 하나씩 더하는 편이 결과를 읽기 쉽습니다.

실험 결과를 해석하는 법

먼저 출구가 막히지 않는 조건에서 공급량만 높입니다. 두 장짜리 묶음이 꾸준히 채워진다면 같은 이동 속도에서 더 많은 물건이 지나갈 수 있어요. 두 번째에는 공급 속도를 그대로 둔 채 출구의 소비량을 줄입니다. 여기서 회수량이 늘지 않고 벨트 끝의 재고만 쌓인다면 개선 지점은 투입기에서 소비 장치로 옮겨 간 것입니다. 마지막으로 두 번째 물건이 늦게 오는 조건을 넣어 봅니다. 첫 물건만 먼저 보내면 처리량 이득은 작아져도 장치가 일찍 일을 시작할 수 있어요.

게임 화면에서는 플레이어가 막힌 지점을 알아차릴 단서도 필요합니다. 투입기 손에 든 수량과 벨트 끝에 남은 수량을 따로 보여주면, ‘묶음을 채우느라 기다림’과 ‘도착했지만 소비되지 않음’을 구별할 수 있어요. 적재량이라는 숫자가 올라간 순간보다 그 차이를 설명할 수 있을 때 물류 규칙이 게임 안에서 읽히기 시작합니다.

출처

같은 카테고리의 글

게임 기술 전체 보기 ↗