팩토리오의 그리드 시스템은 기지를 일정한 크기의 블록 단위로 분할해 설계하는 방식이다.

블록 단위 설계를 통해 생산 라인을 표준화할 수 있으며, 이로 인해 관리와 확장이 단순해진다.

그리드의 경계는 보통 철도로 구성되며, 동시에 장거리 물류망의 역할을 겸한다.

이로 인해 각 그리드마다 상·하차를 위한 비교적 큰 공간이 필요해지고, 기지 전체가 커지는 경향이 있다.




그러나 경계를 구분하면서 물류망의 역할을 함께 수행할 수 있는 수단은 철도만이 아니다.

벨트 역시 일정한 조건하에서는 동일한 역할을 수행할 수 있다.

이 글에서는 철도 대신 벨트를 사용해 그리드를 분할하고, 구획 간 물류를 연결하는 방식을 제안한다.




이 지점에서 자연스러운 의문이 하나 생긴다.

벨트는 물류를 이동시킬 수는 있지만, 설계 단계에서 출발지와 목적지가 고정된다.

물류 요청과 공급이 상황에 따라 변하는 철도 시스템을, 과연 벨트로 대체할 수 있을까?


아래 예시는 벨트 기반 그리드에서 물류가 실제로 어떻게 경로를 따라 이동하는지를 보여준다.



이후 내용에서는 이 동작이 어떤 전제와 규칙 위에서 성립하는지를 기술적으로 설명한다.

설계 원리에 대한 설명을 원하지 않는 경우, 이 부분은 건너뛰어도 무방하다.


이 시스템의 핵심은 교차로에있다.

각 요청자는 네트워크에 물류요청을 게시하고

공급자는 요청된 물류를 그리드 시스템에 방류하는 역할만 수행한다.

이후 물류가 어디로 이동할지는 개별 교차로에서 결정된다.

각 교차로는 도착한 물류의 목적지를 기준으로, 다음에 이동할 방향을 선택한다.

이 판단에는 Greedy Routing 알고리즘이 사용된다.

Greedy Routing은 분산 네트워크 환경에서 사용되는 경로 선택 전략으로,

각 노드가 전체 경로를 알지 못하더라도 현재 위치에서 목적지에 가장 가까운 이웃 노드로 메시지를 전달하는 방식이다.

이 과정을 반복함으로써 메시지는 점진적으로 목적지에 도달한다.


이를 현재 설계에 적용하면 다음과 같다.


아래 그림에서 빨간 사각형은 출발지, 녹색 사각형은 목적지이다.



녹색 사각형 영역에서는 해당 구획이 요구하는 물류 신호(이 예시에서는 ‘철판’)에 대해 값 1을 송신한다.

이 신호는 벨트의 진행 방향을 역으로 거슬러 인접한 교차로로 전파된다.

현재 벨트의 진행 방향이 12시 방향이므로, 신호는 6시 방향으로 전달된다.

교차로는 수신한 신호에 1을 더한 뒤,

다시 벨트의 진행 방향을 거스르는 방향으로 갱신된 신호를 송신한다.

이 시스템에서는 물류 이동이 직진과 우회전만 가능하므로,

직진 방향의 역방향인 6시와, 우회전 방향의 역방향인 3시로 값 2의 신호가 전파된다.

이 과정을 반복하면, 각 구간은 목적지까지의 상대적인 거리 값을 가지게 되며,

그 결과는 아래와 같다.





이제 물류 공급자가 위치한 구역에서 처음으로 도달하는 교차로를 살펴보자.

이 교차로에서 목적지를 기준으로 각 선택지의 경로값을 비교하면,

  • 직진 경로의 값은 5,

  • 우회전 경로의 값은 6이 된다.

이 값은 목적지에 도달하기까지 앞으로 지나가야 할 구획의 수를 의미한다.

시스템은 두 값 중 더 작은 쪽을 선택하므로, 이 교차로에서는 직진이 선택된다.

다음 교차로에서도 동일한 판단이 이루어진다.

이 지점에서는

  • 직진 시 경로값이 5,

  • 우회전 시 경로값이 4로 계산된다.

이번에는 우회전 쪽의 값이 더 작으므로, 시스템은 우회전을 선택한다.

이와 같은 판단이 각 교차로마다 반복되며,

그 결과 물류는 아래와 같은 경로를 따라 목적지에 도달하게 된다.



원리에 대한 설명은 여기까지다.

보다 구체적인 구현 방식이 궁금하다면, 제공된 청사진 내부의 **‘교차로 파트’**를 직접 분석해보길 권한다.

각 교차로는 해당 교차로 파트 청사진 4개를 조합하여 구성되어 있으며,

이 조합을 통해 앞서 설명한 판단 규칙과 신호 전파가 구현된다.





다음은 청사진 구성에 대한 설명이다.

청사진은 아래와 같은 항목으로 분류되어 있다.




이 중 ‘베이스’ 항목은 그리드 시스템의 기초 골격을 구성하는 요소다.

‘베이스’ 청사진북은

  • 직선 구간

  • 교차로

  • 엔드캡

의 세 가지 구성 요소로 이루어져 있다.



직선 구간교차로를 조합하여 원하는 크기의 그리드를 구성할 수 있다.

최소 크기는 직선 구간을 전혀 사용하지 않은 32×32 사이즈이며,

교차로 사이에 직선 구간을 적절히 삽입함으로써 32의 배수 크기로 자유로운 그리드 구성이 가능하다.



이렇게 구성한 그리드에는 한 가지 구조적 문제가 있다.

직진과 우회전만 가능하다는 특성상, 그리드의 가장자리 모서리 영역은 의미 없는 공간으로 남게 된다.

해당 지점에서는 직진을 하든 우회전을 하든 더 이상 진행할 수 있는 경로가 없기 때문이다.

이를 보완하기 위한 요소가 엔드캡이다.

그리드의 끝단을 엔드캡으로 마감하면, 그리드 바깥 방향으로 향하던 물류가 다시 그리드 내부로 복귀하게 된다.

엔드캡에는 경로 계산을 위한 신호 전달용 회로도 포함되어 있어,

교차로들은 경로 탐색 시 그리드 끝단을 경유하는 경로 또한 정상적으로 고려할 수 있게 된다.





기초토대가 구성되었다면 다음은 물류를 구성할 차례이다.

각 구획의 벨트와 연결된 빨강 신호선은 전체 그리드 시스템과 연결된 전역망으로,

시스템 전체에 존재하는 물류량을 나타낸다.

이 전역망을 이용해 사용자는 원하는 공급–요청 로직을 직접 구성할 수 있으며,

요청자는 자신의 위치를 알리기 위해 지역망인 녹색 신호선으로

요청하는 물류의 신호를 1 전송하면 된다.

'물류' 탭의 ‘물류공급’ 및 ‘물류요청’ 청사진은,

가장 일반적으로 사용될 것으로 예상되는 공급–요청 패턴을 일반화한 기본 구현이다.

필수 구성 요소는 아니며, 필요에 따라 전역망과 지역망을 직접 활용해

보다 복잡한 로직을 구성할 수도 있다.

다만 이는 고급 사용자의 영역에 해당하므로,

대부분의 경우에는 일반화된 청사진을 사용하는 것을 권장한다.

이 청사진의 사용법은 다음과 같다.


먼저 물류공급 청사진이다.

아래쪽 벨트로 취급할 물류를 투입하면 된다.

전역망에서 해당 물류의 신호가 음수일 경우,

신호가 양수가 될 때까지 물류가 자동으로 투입된다.

이 청사진은 기존에 벨트가 설치되어 있던 위치를

분배기로 대체하는 방식으로 동작한다.

따라서 설치 시에는 Shift + Ctrl을 눌러

강제 설치를 활성화해야 한다.






다음은 물류요청 청사진이다.

기본적인 설치 방법은 물류공급 청사진과 동일하다.




설치 과정에서 아래의 세 가지 파라미터를 설정해야 한다.

  • 요청 대상

  • 최대 재고

  • 최소 재고

요청 대상은 이 구획에서 요청하고자 하는 아이템을 선택하면 된다.


또한, 아래쪽 벨트와 연결된 신호선을 통해
해당 구획의 현재 재고량을 입력하는 추가 작업이 필요하다.
일반적인 상자의 경우, 상자와 벨트를 신호선으로 연결하는 것만으로 충분하다.

이렇게 수집된 재고량이 최소 재고 이하로 떨어지면,
시스템은 최대 재고에 도달하기까지 필요한 수량을 계산해
그리드 시스템에 물류 요청을 게시한다.

요청 방식은 단순하다.
부족한 수량만큼을 전역망에 음수 값으로 전송한다.

앞서 설명한 것처럼, 물류공급 청사진은
전역망에서 해당 물류의 값이 음수일 경우 이를 감지하고
물류를 공급하도록 설계되어 있다.


이상으로 설명을 마친다.

청사진에는, 위에서 설명한 구조를 바탕으로 구성한

최소한의 물류 시스템 예제가 함께 제공된다.

구성 방법이 잘 와닿지 않는다면

해당 예제를 참고하는 것을 권장한다.

샌드박스 모드에서 청사진을 그대로 설치하기만 해도

시스템이 실제로 동작하는 모습을 확인할 수 있다.

예제는 무한히 공급되는 철광석과 구리광석을 입력으로 받아,

이를 빨강 과학 팩으로 만드는 32×32 최소 크기의 그리드 시스템으로 구성되어 있다.







다만, 이 구조가 모든 상황에 적합한 해법은 아니다.

벨트 시스템은 최고 등급인 녹색 벨트를 사용하더라도

수송 대역폭 면에서는 열차와 비교하기 어렵다.

기지의 모든 물류를 벨트 그리드로만 구성할 경우,

결국 모든 물류가 하나의 벨트 네트워크에 집중되는 구조가 되며,

이는 개념적으로 단일벨트 메인 버스 시스템과 크게 다르지 않다.

앞서 제시한 예제에서는

가장 단순한 동작을 보여주기 위해

철과 구리 같은 기본 자원을 그리드에 직접 투입했다.

그러나 이러한 저가치·대량 물류

본래 벨트 그리드 시스템과 잘 어울리는 대상은 아니다.




그리하여 '하이브리드 베이스' 탭에는 철도와 이 시스템을 혼합한 베이스를 구성하는 기본키트가 들어있다.

기존베이스와 마찬가지로 '직선구간' '교차로' '엔드캡' 으로 구성되어있으며

엔드캡은 이후로 이어지는 선로를 방해하지 않도록 설계되었기에 열차는 순수 열차그리드 구역으로 손쉽게 나갈수있다.




사실 이는 본인도 아직 시도해보지못한 영역으로.. 이런 혼합구성의 활용에 대해서는 여러분에게 맡기도록 하겠다.


정리하자면 이 시스템은 열차를 대체하기보다는 복잡한 다품종 소량생산이나 기지내 세밀한 물류분배에서 새로운 대안이 될수있을거라 본다.

비록 대역폭의 한계는 명확하지만, 벨트가 얽히고설키며 목적지를 찾아가는 모습은 열차와는 또 다른 시각적 즐거움을 준다.

내 고민의 결과물이 누군가의 공장에 작은 영감이 되었으면 좋겠다고 기대하며

아래 청사진문자열을 공유한다.


(12월 30일 수정 : 교차로당 조합기수 32 -> 28 최적화)


https://factoriobin.com/post/gtyfhe

벨트그리드 - FactorioBinFactorioBin is a site for quickly and easily sharing Factorio blueprintsfactoriobin.com