https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=106924&s_type=search_subject_memo&s_keyword=%EA%B8%B0%EC%B0%A8&page=3

1. 메인버스에 처음 입문한 공장장을 위한 쉬운 열차 사용법반갑다젠장할 시험이 이번주인데 미쳤다고 누가 물어본 적도 없는 기차의 쉬운 사용법에 대한 글을 싸고있는 플탐 700시간짜리 애기 공장장이다나같은 놈도 쉽게 쓰고있는, 아주 기초적인 형태의 확장성 좋은 열차 터미널의 형gall.dcinside.com


https://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


위의 링크들은 이전에 썼던 기차 물류 터미널에 대한 설명글이다


지금까지는 저정도만 해도 딱히 불편하지 않았는데,
이번에 dlc를 빼고 우탐모를 다시 시작해보면서 보다 복잡한 기차 물류에 대한 수요를 느끼게 되었다

따라서 여러 시행착오를 겪으면서 인터럽트 기능을 어떻게 활용할 수 있는가?에 대해 고찰하고 연구해본 결과 만들어진 결과물이 꽤 만족스러워 공유하기 위해 와봤다

우선 먼저 설명하겠다.



[아래 링크는 본문의 '다음' 내용입니다]

https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=107945&page=4

4. 열차 인터럽트 사용법 -응용편-[처음 입문하는 공장장을 위한 열차 사용법]https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=106924&s_type=search_subjecgall.dcinside.com




"인터럽트란 무엇인가?"


인터럽트는 기차에 조건에 따라 일정을 유연하게 할당해주는 도구이다



기차에 일정을 할당하면 할당된 일정들을 순서에 따라 항상 '모두 다' 수행한다.


하지만 인터럽트를 활용하면 기차가 각자의 주 일정을 수행하던 가운데, 조건이 맞을 때 한 번씩 추가 일정을 수행하도록 설정할 수 있다



이 내용을 알게되고서 자연스럽게 위 링크의 내용 중에 한가지 보강하고 싶은 내용이 생기게 되었다.

이에 관해 먼저 얘기해보겠다



위 사진은 이전에 쓴 글의 내용 중 기차의 일정을 설정하는 방법에 대해 설명했던 부분인데

이런 식으로 설정하면 기차가 일정을 1회 실행할 때 마다 연료량이 충분함에도 불구하고 항상 주유소에 한 번 멈췄다 가기 때문에 비효율이 발생한다

그러나 해당 글을 작성했을 시점에는 작성자도 인터럽트에 대해 완전히 무지했기 때문에 이 점을 감수하고 게임했다.


하지만 인터럽트 기능을 이용하면 정말로 연료가 필요할 때만 주유소를 방문하도록 만들어줄 수 있다



사진은 현재 내 우탐모를 플레이중인 세이브에서 실제로 사용중인 구리광석 수송 그룹의 일정을 캡쳐한 것인데


보면 이전에 설명했던 것과 달리, 주 일정에 '하차장에서 화물 비우기', '상차장에서 화물 채우기' 딱 2가지만 존재한다


그리고 밑에 인터럽트 목록을 보면 두 가지 인터럽트가 존재하는 것을 알 수 있다



일단 위쪽의 인터럽트는 잠시 무시하고 주유소 방문 인터럽트를 설정하는 법을 먼저 설명하겠다



인터럽트를 구성하는 요소는 크게 두가지로 나뉘는데, 하나는 '인터럽트의 발동 조건' 하나는 '수행할 일정'이다.


그중 인터럽트가 발동하도록 하는 조건들의 종류는 위 사진과 같다



지금 우리는 '연료가 부족할 때'라는 조건을 만족하면 '연료를 채우러 가는' 일정을 수행하도록 하고싶다.

그런데 다시한번 위 사진을 보면 '기관차의 연료 개수'를 조건으로 설정할 수 있다는 것을 알 수 있다.


그래서 나는 기차가 갖고있는 '처리연료'의 개수가 100개보다 아래로 떨어지면 이 인터럽트가 발동하도록 설정해줬다.


발동 조건을 설정했다면, 이 조건을 만족했을 때 수행할 일정을 설정해주면 됀다





이렇게 설정해주면 됐다 이제 기차는 실제로 연료가 설정된 개수보다 적을때만 주유소에 가서 연료를 채운다


그런데 이전에 썼던 글을 읽어봤다면 알겠지만
기차는 '자기 크기에 맞는' 주유소를 가야한다.
정확하게는 '기관차의 개수'에 맞는 주유소를 가야한다

물론 모든 기차가 전부 같은 개수의 기관차로 구성되어있다면 신경쓸게 아니지만

나는 기관차가 1개인 기차, 2개인 기차를 모두 사용한다.

따라서 주유소 인터럽트를 두 가지 만들어서 쓰고있다.


위 사진은 '밥좀 먹고 크게 일하자' 라는 이름의 인터럽트이다.
보면 목적지가 주유소(大) 인 것을 알 수 있다

따라서 기관차 개수가 다른 기차는 다른 인터럽트를 부여해주어야한다.






그런데 이렇게 놓고 플레이하다가 한가지 문제를 마주쳤다.


내 글을 읽은 사람은 이런 상황을 겪지 마라고 이 문제에 대한 내용도 함께 알려주겠다.



기차는 상차장에 가서 물건을 싣고
하차장에서 내려놓아야 하는데

간혹 게임을 하다보면 채굴기지가 고갈되어 원자재를 생산하는 속도보다 소비하는 속도가 더 클 수 있다

이때 모든 상차장이 다 물건이 없어서 꺼져있게 되면 기차는 갈 데가 없어서 냅다 제 자리에 누워 우에엥 울어버린다 (...)



연출된 장면이긴 하나 하필이면 얘가 주유소를 갔다가 냅다 누워버리면? 이대로 멈춰서 길을 막아버린다

이렇게 주유소를 여러개 만들어놓으면 그래도 위험이 덜하긴 하지만


이렇게 드러누운 기차가 여러개 생겨서 길을 다 막아버리면?
정말이지 곤란한 상황을 연출하게 된다


그리고 이 일이 실제로 일어났었다 (...)



따라서 이 문제를 사전에 막아주는 간단한 방법에 대해 설명하고 이번 글을 마치려고 한다.



다시한번 인터럽트 편집 화면을 보면, 인터럽트가 발동하는 조건 중에 '목적지가 가득 찼거나 경로 없음' 이라는 조건이 있다.


이 조건을 사용하면 상차장에 가야하는데 상차장이 다 꺼져있으면 그 자리에서 드러누워 우는 대신 특정한 일정을 수행하도록 해줄 수 있다.

이때 이 친구가 가도 좋을 곳은 대부분 자신의 하차장이다.


그리고 하차장에 가서 출발 조건으로 '~~정류장이 가득 차지 않음'을 설정하고 대상 정류장을 자신의 상차장으로 지정해주면

상차장이 막혀있을 시점에 자신이 어디에 있었든지간에 항상 하차장에 돌아와서 상차장이 열릴 때 까지 대기한다



이렇게 설정해주면 애가 이상한데서 드러누워 길을 막고있을 상황이 절대로 생길 수가 없다



다음에는 내가 연구해 알아낸 '인터럽트를 활용해 더 복잡하게 기차를 이용하는 방법'에 대해 서술하는 글을 써보도록 하겠다.

대충 요약하자면, 나는 LTN을 써본 적이 없지만, 대충 LTN의 기능을 바닐라 인터럽트만을 이용해 구현해냈다고 생각되는 시스템을 고안해냈다!



아무튼 여기서 [처음 입문한 공장장을 위한 열차 인터럽트 사용법 -기초편-]을 마치도록 하겠다



그리고 아래 링크는 위에서 설명한 더 복잡하고 효율적인 사용방법에 대한 글이다


https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=107945&page=4

4. 열차 인터럽트 사용법 -응용편-[처음 입문하는 공장장을 위한 열차 사용법]https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=106924&s_type=search_subjecgall.dcinside.com