로봇이 작업하는 동안 할게 없어서 뭘 할까 하다 요즘 그리드 글이 자주 보여서 그리드 디자인에 관해서 적고싶어졌음


글은 팩갤러 대부분이 눈팅을 주로 하는 초보라 가정하고 초보 친화적으로 기본적인 부분부터 적어보려고 함



팩토리오에서 그리드를 쓰는 것은 왜일까?


개인별로 이유가 다르겠지만 나는 이랬음



분당 로켓 한 대 이상을 쏠 수 있는 큰 규모의 기지(메가베이스)를 건설하려면 고려해야 될 부분이 있음


확장성(스케일업)



물류 흐름(자원조달)


...


등의 기지 규모가 작을 때는 고려 안 해도 되는 부분들을 고려해야되는데


이 중에서 가장 문제 되는 부분은 랙이었음



기지가 작을 때야 랙이 와 닿지 않겠지만


대규모 기지를 건설해보면 사실상 랙으로 기지의 최대 규모가 제한되는 현상이 발생함



랙을 확인하는 방법은 F4를 누르면 나오는 디버깅 메뉴에서 show-fps를 체크하면


FPS/UPS가 표시되는데, 그중에 UPS(초당 갱신율)가 랙과 연관있는 부분임


랙이 없다면 60을 유지하고 연산이 많아지면 그 이하로 떨어지게 됨


떨어지는 만큼 게임도 느려지게 됨



팩토리오에서 랙을 유발하는 주요 요소는 아래와 같음



벨트


유체 연산(원유정제, 발전소 등)


활성 상태의 바이터



따라서 최대규모의 기지를 건설하려면


벨트와 원자력같이 랙을 유발하는 것들은 가능한 쓰지 않는 것이 좋고


바이터로 인한 랙은 어쩔 수 없긴 한데, 확장을 안 할 때는 많은 바이터들이 비활성화돼서 어느 정도 컨트롤 가능한 부분임



그럼 벨트를 가능한 없앤 기지는 어떤 구조여야 될까?


벨트를 없앴으니 당연히 로봇을 활용해야겠지?


근데 로봇만 활용하면 로봇들이 대륙횡단을 하는 문제가 생기네?


그렇다면 각 생산 구획을 끊어주고, 기차를 이용해서 물류를 운반해야겠지?


거기다 대규모 기지 건설을 위한 확장성까지 고려한다면?


이게 그리드를 쓰는 이유임



그럼 그리드는 어떻게 설계하는 게 효율적일까?


가장 먼저 고려해야 될 부분은 기차임


왜냐면 그리드 간 물류를 운송하는 것은 기차고, 결국 기차의 길이와 동선, 교통량에 따라 물류 흐름이 정해질 거니까



동선은 셀(Cell:모듈이라 하는 사람들도 있는데 보통 Grid 하위개념으로 Cell이란 용어를 사용하니 셀이라고 하겠음)에서


무엇을 생산하냐에 따라서 정해지는 것이니까 셀의 배치에 따라서 달라질 것임. 따라서 셀 디자인과 직접적인 연관은 없음



교통량은 동선과 통행하는 기차 수에 따른 것이므로 역시 셀 디자인과 직접적인 연관은 없음



기차의 길이는 신호 구간의 길이와 대기열의 길이, 상하차역의 디자인 등 셀 디자인과 직접적인 상관이 있음



결국 셀을 디자인하는데 우선으로 고려해야 될 부분은 기차의 길이임



그럼 기차의 길이는 몇이 가장 효율적일까?


가장 흔히들 쓰는 길이는 1-4(기관차-화물차)일 것임


근데 이 길이로 메가베이스를 돌려보면 물류 흐름에 애로사항이 꽃필 것임


화물차 4대로는 물류가 금방 회전되고, 이것을 커버하기 위해 기차를 늘리면 교통이 악화됨


그래서 2-8, 3-12처럼 더 긴 열차를 고려하게되는데


여기서 나는 완벽한 수학적 근거는 없지만 2-8을 선택했음



선택한 이유는 이럼


1. 원형 교차로를 어느 각도에서 진입해도 깔끔하게 탈출함


2. 3-12 이상부터는 기차가 광물 크기를 벗어나서 로봇 동선이 안 좋아짐



따라서 2-8 기차를 기준으로 셀을 설계했음







위 짤은 처음 설계한 셀 디자인임



원형교차로 안 좋은데 왜 썻냐 라고 물을 수 있는데


개인적으로 교통체증에서 교차로가 문제 되는 비중은 작다고 보았고


중요한 건 노선과 교통량이라 생각해서 가장 깔끔하다고 생각하는 원형을 선택했음


실제로도 교차로 때문에 심각할 정도로 교통체증이 발생한 적은 없었음



아무튼, 이 디자인에 만족하고 문제없겠다 싶어서 이걸로 메가베이스를 지어보니 문제가 생겼음


1. 생산구역이 불필요하게 큼.

-> 생산구역 전체를 생산시설로 채워보니 신호기와 모듈 버프를 받은 생산시설의 물류 흐름 속도를 로봇이 못 따라가는 현상이 발생했음


2. 셀이 너무 큼.

-> 셀 간 동선을 최적화하기 위해서는 셀끼리 최대한 붙여야되므로

물이 위치한 구역은 매립할 수밖에 없고, 불필요하게 커진 셀 크기만큼 불필요한 매립이 필요해짐.

이게 셀 하나일 때는 별문제가 안 되는데 메가베이스 전체로 보면 불편함을 바로 느낄 수 있을 정도임



그래서 수정한 게 아랫짤임





이걸 설계할 때 즈음에 대기열에 대한 생각도 정립됐는데



교통량을 줄이고 물류를 원활하게 공급하기 위한 최선의 방법은 무엇일까?


피크 타임 교통 체증으로 인한 물류 공급 끊김을 해결하기 위해서는 버퍼가 필수적임


그럼 버퍼는 무엇으로 하는 게 최선일까?


일반상자? 로봇상자?


난 기차 자체를 버퍼로 하는 게 최선이라는 결론을 내렸음



그럼 기차가 효율적인 버퍼 역할을 하려면 어떻게 해야 될까?


물류를 미리 싣고 와서 대기열에서 대기하다가 하역이 완료된 기차가 빠지면 바로 들어가는 게 최선이란 결론을 내렸음



그럼 물류당 몇 대의 기차를 굴리는 게 최적일까?


3대 = 1역 2대기열


결과적으로 나온 디자인이 6 역 12 대기열임



아무튼, 디자인에 만족하고 문제없겠다 싶어서 적용해봤는데 또 문제가 생겼음


1. 상단 중앙에 선로 변경 부분 신호기 디자인이 조금 잘못돼서 셀에서 나가는 기차가 있을 때 선로 변경도 막힘

-> 이건 사소하게 수정 가능한 문제라서 자세한 설명은 패스..


2. 기지를 확장하는 과정에서 로보포트를 전역적으로 관리하다 보니 불편한 점이 많이 발생함

-> 로봇 네트워크 로컬화


3. 가로로 확장 시 레이더 시야가 안나옴

-> 레이더 추가가 필요해짐


레이더 관련해서 무슨 말인가 할 수 있는데


메가베이스를 운용할 정도라면 캐릭터는 거의 이동을 안 하고 맵만 보고 전략시뮬하듯 게임을 하게됨


이게 어떻게 가능한가 하면 레이더를 설치해서 맵 상에 밝게 드러난 부분은 맵에서 확대해서 고스트(청사진) 건설이 가능하거든


그래서 레이더 시야가 안 나오면 직접 뛰어가서 건설해야 되는 불상사가 발생함



아무튼 이런 문제점들을 수정한 결과가 아랫짤임










잘 보면 전역 로봇 네트워크와 로컬 로봇 네트워크가 한 칸 차이로 떨어져있는데


그 사이에 상자와 투입기가 존재해서 전역과 로컬 간 물류를 교환해줌


여기서 필수적으로 교환이 필요한 게 두종류인데


1. 핵 연료(요청->수동 공급)

-> 정차한 기차에 연료보급


2. 내부에서 철거 등으로 발생하는 불필요한 물류를 외부로 방출(보급->능동 공급)


이 두 가지는 편의상 필수에 가까워서 기본 레이아웃에 포함시켰음



그리고 역을 최대 7개까지 커버 가능하게 늘렸는데


7개역까지 사용되는 경우는, 인공위성과 연구소 둘뿐이라서 나머지는 그 미만으로 사용하게 됨



그리고 건설이 끝나면 오른쪽에 전역과 로컬을 잇는 로보포트를 제거하고 직접 뛰어가서 수동으로 물류 로봇을 공급해주는 것으로 마무리함


이 것도 복잡하게 하자면 자동화가 가능한데, 사실 셀이 건설 완료되는 경우가 빈번하지 않아서 그렇게 불편한 것도 없고 해서 직접 뛰는 것으로 결정했음



아래는 이 레이아웃을 기반으로 건설된 생산시설들임





이건 허브





이건 전자 회로


참고로 구리선이 많은 건 마라톤이라서임



읔.. 뻐킹 사진 20개 제한에 걸림; 몇 개 지워도 더 안 올라가네;;


어.. 음.. 여기까지가 내가 그리드를 설계하면서 깨닫게 되고 수정/적용한 부분들인데; 아무도 안 물어봤지만 누군가에게 도움이 되었길 바람..