이전 글4k spm 메가베이스 후기 - 0
4k spm 메가베이스 후기 - 1 <그리드 디자인>


이전 글 쓴지 몇달 지나서 그때 어떻게 했나도 이제 가물가물한데

그래도 한번 이어서 적어봄


그래도 뭘 쓸지 대충은 적어둬서 보니까


"기차를 100+대 굴리는 시스템에서 어떻게 손쉽게 관리할 것인지"


이런 얘기를 했더라고


그동안 모드넣고 엔밥 그리드 베이스 플레이 해보고 멀티도 몇번 가보고 해외 커뮤니티에서 기가베이스 구경도 하면서 살펴보고 결론을 내리면

저게 그렇게 말처럼 쉬운건 아니다라는 건데

그래도 일단 이번에는 내가 썼던 방법이 뭔지 소개하는 형식이 될 것 같음.

단점도 많지만 베이스 구성을 어떻게 하느냐에 따라 충분히 써먹을만한 좋은 방법이 될 수도 있으니까 역시나 이번에도 참고 정도로만 보기 바람.


1. 기차 길이 정하기


가장 먼저 기차 길이 이야기부터 해보자.

사실 기차 길이 정하는게 그리드 크기 결정하는데 제일 중요함.


예를 들어 공방을 갔는데 이런 채팅을 봤다고 치자.


"기차는 2-4-2로?"

"싱글헤드 2-4로ㄱㄱ"


멀티 공방을 몇번 가봤거나 팩토리오 위키에 관련 항목을 읽어봤거나 커뮤니티좀 봤다 하는 사람들은

이게 무슨 뜻인지 알건데

기차 길이를 줄여서 말하는거임.


viewimage.php?id=2bbcd332eac031a9&no=24b0d769e1d32ca73fed86fa11d0283193a07a4d5f003bc499f11eaf7f9dfed252713108a6e1c753201eea756fbda76eeb0242e6d7fed08f30510c59625d1b7e96d7c5


2-4-2 에서 앞 뒤 숫자는 기관차의 개수, 중간 숫자는 화물차(또는 유체 화물차나 대포 열차)의 개수. 머리가 양쪽에 달려서 더블헤드라고 함.


viewimage.php?id=2bbcd332eac031a9&no=24b0d769e1d32ca73fed86fa11d0283193a07a4d5f003bc499f11eaf7f9dfed252713108a6e1c753201eea756fbda76eeb0242e6d7fed08b685b085b6958487edf479a


그리고 2-4 같은 경우는 보통 앞이 기관차, 뒤에 오는 숫자가 화물차의 수임.

싱글헤드는 머리를 한쪽만 달아서 단방향으로만 갈 수 있는 기차를 말함


더블헤드 장점은 기차 역을 엄청 컴팩트하게 지을 수 있어서 공간효율이 좋다는 것

싱글헤드 장점은 공간효율은 에바참치인데

그걸 무시하고도 더블헤드는 뒤에 달린 머리때문에 느려지는게 눈에 보여서

싱글헤드로 하면 확실히 가속이 빨라짐. 결과적으로 더 많은 기차를 굴리기에 적합함.


그러면 메가베이스를 만든다 치고 기차 길이는 어떻게 정할까


가능한 맨 처음에 공장 사이즈에 맞는 기차 길이를 정하고 시작하는게 좋음


처음에 내가 했던 생각은 이럼


'1-2-1 로 메가베이스 만든 거 보니까 기차가 너무 자주 돌아다니고 수도 많아서 관리하기 힘들어 보여'

'메가베이스는 기차가 엄청 필요할거야. 물류가 생명인데 당연히 더 빠른 싱글헤드겠지'

'밸런서를 쓰려면 화물차는 4의 배수인게 좋겠어'

'기차는 길수록 좋겠지? 그럼 2-8 정도면 될거야'

'만들어보니 2-8은 역 만드는게 너무 힘들어. 그냥 2-4로 하자'


사실 그냥 이정도로 의식의 흐름에 따라 결정됨.

이래도 뭐 큰 문제는 없을 수 있지만 규모가 커지면 이런저런 문제가 생김


좀 길어질 것 같은데 설명하자면 이럼.


그리드에서 자원을 기차가 공급하는 거보다 공장이 빨리 소모하면 문제가 생기는데,

공장이 필요한 자원보다 하나라도 공급이 적게 되면 모든 공정이 그 자원, 그 공정 때문에 느려짐.

그럼 기차 대수를 더 늘려서 공급을 맞춰주면 되지 않느냐 생각할텐데

기본적으로 기차 하나당 역 1개, 또는 기차 하나당 대기열 1개를 배정해야 갈 곳 없는 기차가 얌전히 역이나 대기열에서 기다리기 때문에 길을 막는 현상을 방지할 수 있음.

근데 기차역은 대기열이나 진입로 등등을 포함하면 부피가 워낙 커서 한번 정하면 쉽게 바꾸기 어렵기 때문에 첨부터 잘 정해야됨.


결과적으로 기차 길이는 공장이 자원을 소비하는 속도보다 더 빠르게 공급할 수 있도록 충분히 길어야 됨.

그게 아니라면 동시에 하차역을 여러개 굴려서 짧은 기차로도 공급을 증가시켜줄 수 있지만 기차 트래픽이 기차 대수만큼 늘어나서 더 넓은 기차길이 필요할거임.

공장 크기에 따라, 교차로 종류에 따라 어쩌면 복복선(4차선)으로 부족할수도 있음.


기차 크기 기준으로 셀 최적화 하는 글을 누가 잘 적어줘서 그거 보고 참고하는게 좋을듯


[일반] 아무도 안물어본 그리드 디자인


자기가 만드려는 셀 하나에서 자원을 얼마나 빨리 소비하는지, 그러려면 벨트 몇개, 아니면 로보포트 몇개가 필요한지,

그정도 자원을 옮기려면 기차를 얼마나 길게 할지, 몇대 굴려야되는지 잘 계산해보고 공급이 항상 수요보다 넘치게 해주는게 좋음.


계산하기 쉬운건 아닌 것 같고 한번 경험 해보면 어느정도 감이 오는데

대충 내 경험을 이야기하자면 이정도인거 같음.


복복선(4차로) 기준으로

a.1-2 기차를 쓰면 1k spm이 한계.

b.2-4 기차로 2k spm정도 까지는 무난, 그 이상은 적절한 자원 허브 사용 필수.

c.기차가 공급할 수 있는 속도보다 공장이 자원을 빠르게 소모하면 문제가 생기므로 공장이 크다고 무조건 좋은게 아님. 기차 길이에 맞는 사이즈로 공장을 지을 것.

d.동일한 역을 여러개 설치할 경우 진입로 하나당 최대 4개 까지만 설치.


자원 허브는 나는 안써봐서 자세히는 설명 못해줌.

이곳 저곳에 많이 쓰이는 자원을 한 곳에서 생산하면 그쪽에 기차 트래픽이 몰리니까 방지하려고 중간에 허브를 거치는 개념일거임.


실제로 기차 사이즈 때문에 생긴 문제가 상당히 있었는데 기찻길 확장, 아니면 허브 설치 말고는 해결법을 모르겠더라.


d는 무슨말인가 예를 들면


viewimage.php?id=2bbcd332eac031a9&no=24b0d769e1d32ca73fed86fa11d0283193a07a4d5f003bc499f11eaf7f9dfed252713108a6e1c7536643bd1a6abca768dd0a44781c87f56c4b4469df12be24

이건 공장 그리드 하차역의 일부인데

많은 수의 대기열 (사실 저렇게 많이 필요 없음)과 8개의 하차역이 보일거임

이렇게 했더니 모든 기차가 대기열을 지나고 위쪽의 단 1줄짜리 진입로 레일을 통해서 8개 역으로 가야되니까

저 부분에서 심한 병목이 생기더라


viewimage.php?id=2bbcd332eac031a9&no=24b0d769e1d32ca73fed86fa11d0283193a07a4d5f003bc499f11eaf7f9dfed252713108a6e1c7536643bd1a6abca768dd0a44224582a5681c433bdf12be24


지금 보면 저건 메인버스 이렇게 만드는거랑 똑같은거임ㅋㅋ


그럼 어떻게 하느냐 하면

아예 공장을 작게 지어서 하차역을 병목 안 생길 정도로만 적게 만드는거임

기차 크기가 그리드 디자인에 중요하다고 한 이유가 이거임

물론 지금처럼 역 많이 만들어도 되는데 공장을 작게 만들거면 그냥 역도 적게 만드는게 낫지 않을까.



viewimage.php?id=2bbcd332eac031a9&no=24b0d769e1d32ca73fed86fa11d0283193a07a4d5f003bc499f11eaf7f9dfed252713108a6e1c7536643bd1a6abca768dd0a442218d3f46d49476ddf12be24


광석은 한 칸에 50개 밖에 안 쌓이니까 문제가 더 심해서

결국에는 이런 기괴한 구조까지 쓰게 됨

복복선이니까 들어오는 2줄 각각에서 하차역 쪽으로 별개의 입구를 만들어서 기찻길 하나당 역을 4개씩 배정해줌

이런 꼴 안 보려면 아무튼 공장 크기는 기차 크기에 맞게 지어야됨.


2. 기차 스케쥴 관리


이 맵에서 기차만 250대 넘게 굴러가고 있는데

기차다마 스케쥴을 다르게 해주려면 엄청 헷갈릴거임

그래서 간단하게 관리하려고 자원별로 스케쥴을 통일할 방법을 찾다가 결국에는 지금처럼 하게 됐고

그다지 만족스럽지는 않음

글로 써서 잘 이해가 될지는 모르겠지만 어떻게 했는지 소개해보겠음


궁금하면 세이브 받아서 봐도 됨. 이전 1번 글 댓글에 링크 있으니 참고하셈.



viewimage.php?id=2bbcd332eac031a9&no=24b0d769e1d32ca73fed86fa11d0283193a07a4d5f003bc499f11eaf7f9dfed252713108a6e1c753201eea756fbda76eeb0242e6d7fed0886b515f0b6c0e497e0027cd


일단 맵에서 기차역 이름 표시를 키고 전체 구성을 보자.

분명 비교적 쉽다고 했는데 전혀 쉬워 보이지 않는다.



viewimage.php?id=2bbcd332eac031a9&no=24b0d769e1d32ca73fed86fa11d0283193a07a4d5f003bc499f11eaf7f9dfed252713108a6e1c753201eea756fbda76eeb0242e6d7fed0de3c040d09630c4f7ebf663b


셀 하나를 확대해보자.

해상도랑UI스케일때문에 잘 안 보일것 같지만 설명하자면

오른쪽이 재료 하차역, 왼쪽이 완성품 상차역이다.


자원 하차역의 이름은 셀 안에서는 모두 동일하다.

처음에는 다른 셀에 있는 역도 동일하게 해주려고 했는데 기차가 원하는 셀로 안가는 문제를 해결하는게 쉽지 않아서 결국은 다르게 바꿨음.

역 이름은 사람마다 보기 편한 게 있겠지만 나는 [상] [자원 종류], [하] [자원 종류] [셀에서 생산하는 품목] 이런식으로 했음

0.16때 기차역 이름이 가나다순 정렬로만 보이던 시절에는 이게 제일 편했는데

지금은 역에 대고 shift-click하면 알아서 스케쥴에 추가되기 때문에 자기 보기 편한대로 네이밍하면 될듯


viewimage.php?id=2bbcd332eac031a9&no=24b0d769e1d32ca73fed86fa11d0283193a07a4d5f003bc499f11eaf7f9dfed252713108a6e1c753201eea756fbda76eeb0242e6d7fed0816d000b596e5c4e7e442239


역을 하나 눌러보자.

열차 6개가 동일한 스케쥴으로 운영되고 있다.


원래 역 키고 끄면서 더미 열차를 이용한 다른 기믹을 더 사용했었는데 이게 그동안 하면서 바뀐건지 지금 잘 기억이 안남.

기본적인 원리는 예전에 쓴 도넛맵 글 참고하고 정 궁금하면 나중에 따로 글 써서 설명하는게 나을것 같음.

누가 따로 글 썼던거 같기도 한데 잘 기억이 안나네


이게 어떻게 작동하고 있는지만 간단히 설명하면

하차역의 경우는 기차가 역에 정차하거나 하차역 상자가 다 차면 회로 신호로 역을 꺼서 비어있는 다른 역으로 보내는거임


좀만 더 자세히 설명하면

먼저 오른쪽에 활성화/비활성화 부분에 체크가 되어있는게 보인다.

활성화/비활성화는 아래 '활성화 조건' 부분의 회로인 T 가 2보다 작을때만 역이 켜지는 조건임.

역이 비활성화 되면 이미 정차되어 있는 기차는 그대로 있지만 다른 기차는 그 역이 없어진 것으로 판단하고 같은 이름의 다른 역으로 경로를 바꾼다.

하차역 상자 내용물을 읽어서 꽉 차면 역을 꺼서 아직 상자가 비어있는 다른 역으로 향하도록 회로를 걸어둠.

회로 없어도 기차가 이미 정차해있으면 알아서 빈 역 찾아서 가기는 하지만 꽉 찬 역에도 갈 필요는 없기 때문에 회로를 씀.

회로는 지금은 오래되서 왜 저 조건으로 했는지 잘 기억은 안남.

보통 'T가 0이 아님' 조건으로해서 기차 정차한 경우에 역 끄고 다른 열차는 다른 켜진 열차로 가게 하는 식으로 많이 씀


상차역도 비슷하게 충분히 자원이 있을 때만 켜지게 했음.


상차역도 전부 이름 통일하는거 보단 셀 내에서만 이름 동일하게 하는게 좋음.

이 맵에서는 이거저거 해본다고 전부 통일 했는데 결국 문제 생기더라.

기차는 기본적으로 역 이름이 같으면 가까운데로 먼저 가기 때문에 자원이 있을때만 역을 키고 끄더라도 빙빙 돌아서 멀리까지는 잘 안 가게 되는 문제가 있었음


광석 상차역의 경우는 전부 이름을 다르게 했음. 마찬가지로 동일하게 해도 역을 키고 끄는 식으로 하면 동작은 하는데 광석이 워낙 멀다 보니까 의미없이 빙빙 돌면서 트래픽이 많이 생김.


결론은

일일히 상차역/하차역 다른 이름으로 해주면 되지만 자동화 게임에서 그런 노가다 하는게 싫어서 기차역 키고 끄는 회로로 약간 꼼수를 부려본 것

기차역 이름을 자원별로 전부 통일하려면 좀 더 고오급 회로 네트워크가 필요할 것 같음. 아직 미해결 문제임.



viewimage.php?id=2bbcd332eac031a9&no=24b0d769e1d32ca73fed86fa11d0283193a07a4d5f003bc499f11eaf7f9dfed252713108a6e1c753201eea756fbda76eeb0242e6d7fed0806f5b0c0c3b5f1e7e9eda35


그리고 광석 나르는 기차가 워낙 많아지다 보니

계속 그리드 사이를 지나다니면서 많은 트래픽을 유발시키길래

경유지 기능을 써서 경로를 어느정도는 임의로 지정해줄 수가 있었음.



viewimage.php?id=2bbcd332eac031a9&no=24b0d769e1d32ca73fed86fa11d0283193a07a4d5f003bc499f11eaf7f9dfed252713108a6e1c7536643bd1a6abca768dd0a447a4cd5a06b49116cdf12be24


viewimage.php?id=2bbcd332eac031a9&no=24b0d769e1d32ca73fed86fa11d0283193a07a4d5f003bc499f11eaf7f9dfed252713108a6e1c7536643bd1a6abca768dd0a447e1f80f06c1b1639df12be24


저기 모서리 부분에 역 만들고 0.17에 생긴 경유지 기능 써서 이렇게 스케쥴 설정해줌

제련소가 전부다 제일 아래 그리드에 있어서 이렇게 할 수 있었음.

사실 이거보다 그냥 엄청 긴 기차로 그리드 바로 앞까지 광석 끌고와서

허브 이용해서 작은 기차에 나눠 담아주는게 좋아 보임. 다음에 다시 하면 이런 방법 대신 자원별로 기차길 아예 분리해서 할 것 같음.


각 생산 블럭 디자인은 컴팩트 8x8비콘 벨트 디자인이라는데는 의미가 있지만 UPS 측면에서 꽝이라서 누가 요청하거나 하면 스샷+블프 정도로 아주 간략하게 소개하는 정도로 마무리 해겠음.




한줄요약 :


하여간 기차는 몇번을 해도 아직 잘 모르겠다.