[처음 입문하는 공장장을 위한 열차 사용법]
1. 메인버스에 처음 입문한 공장장을 위한 쉬운 열차 사용법반갑다젠장할 시험이 이번주인데 미쳤다고 누가 물어본 적도 없는 기차의 쉬운 사용법에 대한 글을 싸고있는 플탐 700시간짜리 애기 공장장이다나같은 놈도 쉽게 쓰고있는, 아주 기초적인 형태의 확장성 좋은 열차 터미널의 형gall.dcinside.comhttps://gall.dcinside.com/mgallery/board/view/?id=factorio&no=106926&page=2
2. 메인버스에 처음 입문한 공장장을 위한 쉬운 열차 사용법https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=106924&page=1 1. 메인버스에 처음 입문한 공장장을 위한 쉬운 열차 사용법gall.dcinside.com[처음 입문하는 공장장을 위한 열차 인터럽트 사용법]
https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=107792&page=4
3. 처음 입문한 공장장을 위한 열차 인터럽트 사용법 -기초편-https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=106924&s_type=search_subject_memo&s_keyword=%EAgall.dcinside.com암만 생각해도 이번 편은 처음 하는 사람이 쓰기엔 너무 어려울 것 같아서 제목에서 '입문하는' 뭐시기 걍 빼버렸는데
아무튼 최근 우탐모를 하면서 기존에 쓰던 것 보다 더 똑똑하게 기차를 쓰는 방법에 대한 수요를 느끼게 되어, 혼자 고찰하고 연구해본 결과 만들어내게 된 시스템을 공유하려고 이번 글을 씁니다.
서론은 여기까지로 하고 바로 들어가보겠습니다
1. 시스템의 구성
일단 이 시스템은 크게 4가지 요소로 구성됩니다.
1) 대기소, 2) 상차장{공급자}, 3) 하차장{공급받는자}, 4) 테이블
여기서 제일 생소한 이름인 테이블이 무엇이냐?
간단하게 말하자면 그냥 '빨간(녹색) 전선'입니다.
그런데 이 전선은 이 시스템을 구성하는 나머지 모든 요소들과 다 '직접' 이어져있어야합니다.
물론 신호 전달만 할 수 있으면 그만이기 때문에 AAI 모드의 신호 송수신기를 이용해도 괜찮습니다.
아무튼 이 시스템에 속하는 모든 상차장, 하차장, 대기소를 싹다 한 가지 색의 신호 전선으로 이어주면 제가 명명한 '테이블' 이라는 것을 완성한겁니다.
2. 테이블에 하는 일
이 테이블 위에는 열차로 옮기고자 하는 각 자원의 종류마다 두 가지의 신호를 올려두게 됩니다.
첫째로 각 자원의 '요청 신호'입니다.
이 요청신호는 각 하차장의 창고가 직접 발신합니다.
예시 사진의 경우, 이 벽돌 하차장은 창고의 재고가 5k 밑으로 떨어지게 되면 '벽돌 요청 신호'를 1만큼 테이블에 올려둡니다.
수량 비교 조합기의 출력 부분을 보면 빨간 전선으로 전신주와 신호를 주고받고 있는것을 알 수 있습니다.
그리고 테이블에 올라와야하는 두 번째 신호는 각 요청에 대한 '현재 배달원 수' 입니다.
예시 이미지를 보시면 이 벽돌 하차장의 정류장은 '기차 수 읽기' 항목을 통해 현재 정류장에 접근하고 있는 기차가 몇 대인가? 에 대한 정보를 알파벳 B 신호를 통해 테이블에 올리고 있습니다.
예시 사진은 현재 '품질'을 포함한 DLC 콘텐츠를 모두 제외한 채 우탐모를 하고있기에 어쩔 수 없지만 품질이 있다면 '현재 배달원 수' 정보를 품질이 다른 동종의 신호로 사용해도 상관 없습니다
그리고 모든 상차장은 역시 '기차 수 읽기'를 통해 하차장과 똑같은 종류의 신호를 테이블에 올려야합니다!
3. 대기소가 하는 일
대기소는 테이블에 올라와있는 신호를 각 기차에 전달하고, 일이 없는 상태의 기차들을 한 곳에 모아 보관하는 역할을 합니다.
"테이블에 올라온 신호를 왜 대기소에서만 전달하나?"
에 관한 내용은 다음 단락에서 설명하겠습니다
4. 기차의 일정 구성
일단 이 시스템에 등록된 모든 배달원들은 주 일정에는 오직 '대기소'에 가기 하나만 넣어준 뒤, 모든 실제 업무는 인터럽트를 통해 자동으로 관리합니다.
그리고 각 인터럽트의 구성은 다음과 같습니다.
조건1, 조건2, 조건3을 모두 동시에 만족할 때, 요청된 해당 자원의 상차장으로 가서 -> 화물을 채우고, 하차장에 가서 -> 화물을 비우면
이 배달원은 무사히 하나의 업무를 마친 것입니다.
그리고 이 기차가 다시 대기소로 돌아가있는 상태에서 세 가지 조건을 동시에 만족하는 요청이 생길 때 또 출발해서 하나의 일정을 완수합니다.
그리고 각 조건들은 다음을 의미합니다.
조건 1 = '요청 신호'가 있으면 출발하세요
조건 2 = 지금 들어온 '요청 신호'를 먼저 수행하고있는 배달원이 없을 때만 출발하세요
조건 3 = 상차할 물건이 없다면 요청이 있더라도 출발하지 마세요
조건 1에 대하여
조건 1을 만족하기 위해서는 하차장의 창고에 쌓인 재고가 목표 수량보다 적어 요청신호를 발신하고 있는 상태여야 합니다.
이 부분에서 "테이블에 올라온 신호를 왜 대기소에서만 전달하나?" 라는 질문에 대해 답할 수 있습니다.
한 종류의 자원을 받는 하차장이 여러개 있을 때, 요청을 받아 출발한 기차가 '실제로 자원을 요청하고 있는 하차장'으로 이동하려면, 자원을 요청하고있지 않는 하차장의 정류장은 꺼져있어야 합니다.
하지만 하차장을 켜고 끄는 조건에 쓰이는 신호는 아래 예시 사진을 보면 아시겠지만 '요청 신호'와 똑같은 신호를 사용하고 있습니다.
이런 상황에서 하차장의 '기차에 신호 보냄'의 체크를 TRUE로 설정하면, 하차장에서 출발하려는 기차는 '와 미친 요청 신호가 몇 천 개가 있네' 이러면서 또 일하러 갑니다
물론 수량비교조합기 등을 하나 더 써서 다른 종류의 신호로 정류장의 on-off를 제어하면 위 오류를 막을 수 있지만 저는 하차장마다 신호조합기 하나 더 쓰기 싫어서 그냥 이렇게 했습니다
조건 2에 대하여
이 조건이 없으면 겨우 아이템 몇백 개만 채워도 만족되는 요청신호 하나를 위해서 첫 번째 기차가 이동하는 시간동안 그 뒤에 있는 기차들을 무한정 중복으로 호출합니다.
그렇기에 실제로 움직이고 있는 기차들의 숫자도 함께 읽어 테이블에 올린 뒤, 이 두 신호를 비교하는 조건을 추가해줬습니다.
여기서 주의해야할 부분은 위에서도 얘기했지만 각 자원의 [상차장]에도 똑같이 기차 수 읽기를 통해 각 자원마다 고유한, 같은 신호를 테이블에 올려줘야합니다.
그렇지 않으면 이 조건을 추가했음에도 불구하고 첫 번째로 출발한 기차가 대기소 -> 상차장으로 이동한 뒤에 상차를 완료하고 하차장으로 이동하기 시작하는 순간까지 후속 기차들을 무한정 호출하게 됩니다.
조건 3에 대하여
아무튼 이 시스템은 몇 개의 기차로 하여금 여러 종류의 자원의 공급을 동시에 관리하도록 하기 위해 존재하는 것입니다.
그런데 있지도 않은 물건을 위해 그 물건이 실제로 생길 때 까지 굳이 상차장까지 가서 허송세월을 하고있으면 그만큼 다른 물자를 수송할 수 없게 됩니다.
따라서 요청에 따라 물건을 수송하기 위해 필요한 만큼의 재고가 실제로 있는지 확인하기 위해 이 조건이 존재합니다.
하지만 조건 2를 구현하기 위해 이미 자원 한 종류당 두 가지 씩이나 되는 신호를 할당해 테이블에 올리고 있습니다.
이 조건을 구현하기 위해서 신호를 또 한 가지 더 할당하자니 복잡하기도 하고 귀찮기도하고 아무튼 문제가 많습니다.
그렇기때문에 기차가 실제로 사용할 수 있을 만큼의 재고를 보유하지 못한 공장은 그냥 꺼버립니다.
그리고 회로 조건이 아닌 '~~ 정류장이 가득 차지 않음' 이라는 조건을 활용해 회로 신호가 아닌 방법으로 세 번째 조건을 구현했습니다
결론
이 시스템을 활용하면 LTN이나 다른 모드가 없더라도 기차들이 여러 종류의 재료들을 '실제로 수요가 있을 때'를 자동으로 판별해서
적절하게 옮겨줍니다
한 종류의 자원을 요청하는 하차장이 여러개 있어도 잘 작동합니다.
심지여 많은 수의 하차장이 몇 놈은 요청하고 몇 놈은 요청을 안하고있어도 잘 작동합니다.
같은 종류의 아이템을 요청하나, 목표하는 재고 수량이 서로 달라도 작동합니다.
아무튼 잘 작동합니다
혹시 설명이 부족한 부분이 있거나, 이 시스템에 예기치 못한 오류가 있거나, 본인의 게임에 이를 적용하려 할 때 문의할 점이 있다면 댓글 바랍니다
복잡하게 신호 보내지말고 그냥 열차 잔뜩 찍어서 하차 대기역에 세우는건 어떨까요
하지만 신호로 자동으로 막 막 효율적?이고? 라기보단 멋있게 열차 쓰는걸 하고싶었슴
간지못참지..
아 그리고 공장이 전체적으로 그리드 형식이 아닌데, 길게 이어진 선로의 옆에다 툭 튀어나와있는 상하차장으로 중간재료 대량생산 공장들을 지어놓은 상황이라 대기역 공간이 없어요 지금 내가 싸놓은 똥 위에서 어떻게든 많은 물류를 감당해내려고 몸 비튼 결과가 위 글임...
이거 회로선 연결안해도 정류장에서 다 해결 가능함 게다가 초록색 아이콘(화물용, 유체용) 있는데 그거 쓰면 모든 열차를 두 그룹으로 묶고 그룹으로 묶인 애들은 그게 무슨 화물이든 위에 적힌 모든 동작들을 할 수 있음
역시 회로 관련해서는 암만 고민해도 더 좋은 방법이 계속 있구나
@팩붕이1(223.38) 정류장 활성화 비활성화 사용하고 바로밑에 기차에 신호보냄 체크하면 기차가 어디에있든 달려옴
어떻게 할 수 있는지?
@팩붕이2(218.147) 근데 '기차에 신호 보냄' 이거는 그냥 해당 정류장에 정차해있는 기차만 인식하던데 뭔가 오해하고있는거 아님??
@마느그서장남천동살재
https://gall.dcinside.com/mgallery/board/view?id=factorio&no=107838
이거 그대로 따라하면 될 듯
잘 쓰고 있어서
기차모드를 한번도 안써봐서 잘 모르겠는데, 그냥 평범하게 상차역 하차역 설정하는거랑 비교할때 이렇게하면 무슨 장점이 있나요?
그낭 평범하게 상차 - 하차역만 지정하면 하나의 기차가 오직 한 가지 종류의 재료만 계속 운송하죠 그리고 상차장에서 물건을 채웠을 때 무조건 출발할텐데, 도착지점의 하차장의 창고가 거의 꽉 찬 상태라면 화물이 안비워져서 계속 기다릴테고, 그동안 같은 자원을 요구하는 다른 하창이 있다면 그 곳이 방치될거고..
@팩붕이1(223.38) 이걸 해결하겠다고 하차장에서 n초 뒤 출발하기 조건을 넣자니 자재 유통이 불필요한 상황에도 기차가 계속 달릴테니 교통 흐름에 방해도 되겠죠 그래서 애초에 회로를 통해 출발 해야할 때만 출발하게 한거고 비교적 적은 수의 기차가 많은 개수의 창고를 전부 채워줄 수 있도록 만들어서 철길의 교통 흐름에 문제가 없도록 한거죠
아 그리고 저도 기차 관련한 모드는 한 번도 안써봤어요 이 글 내용은 바닐라의 기능으로만 만든겁니다 ㅇ0ㅇ
@팩붕이1(223.38) 음 설명해주신 부분이 잘 이해가 안가는데 상차역 1의 물건을 하차역 A B가 함께 받는다고 할때 기차 두대를 각각 1-A, 1-B 구간을 운행하게 만들면 문제가 안생기지 않나요?
@Nautica 근데 결론적으로 제가 하고싶은건 그거에요 하차장의 재고가 많이 빠져있으면 그때는 다른걸 옮기던 기차까지 협력해서 두 개, 세 개의 기차가 동시에 한 종류에 붙어서 빠르게 재고를 채워주도록 설정하는거죠 그걸 그냥 하차장 하나마다 대기역까지 하나하나 다 만들면서 기차를 여러개 세우자니, 지금 플레이하는 게임에 물건 하차장만 40개가 넘어가거든요
@팩붕이1(223.38) 그런데 거기다 각각 기차를 두개 세개씩 다 따로 배정해서 굴리면 기찻길 위에 기차 수가 백수십 개가 될텐데 이건.... 좀 그렇죠 심지어 지금 게임 전체 분량의 반을 채 다 못한 상황이라는거죠 앞으로 기차로 물류할 아이템 가짓수고 정류장 개수고 점점 계속 늘어날텐데 기차 100개 200개 이렇게 선로에 옮겨놓으면 러시아워 장난아니겠다 싶었죠
@팩붕이1(223.38) 기차를 좀더 효율적이게 쓸 수 있다는거군요. 설명 감사합니다~
@Nautica 결론은 효율이죠! 실제 기차를 한 8대 정도만 놨는데 얘들이 실제로 요청이 있을때만 출발해서 수십가지 창고를 전부 관리해주니까요 게다가 재고 소모 속도가 특히 빠른 하차장에 재고 수준에 따라 요청 신호를 추가로 등록시키도록 해서 여러개의 기차가 하나의 창고를 동시에 채워주는게 가능하니까요 이걸 바닐라로 구현한게 아무튼 이 글인겁니다 bb
6번째 짤에서 회로 P가 뜻 하는게 뭔가요
회로 P가 기차수량 제한하는건가요? 조건 2에 대한 설명이 부족한 것 같습니다! 기차수 읽기는 B인데 어째서 P가 되었나요?? - dc App