또 보게 되어 반갑다 게이야


내친김에 좀만 더 달려야겠다


다음 연습문제를 뭐로 할까 고민하고 있는데


마침 소행성 수집기로 고생중인 게이가 밑에 보여서


바로 이거로 정했다







실험을 도와줄 우주선이다


심플함을 위해 전기는 무한전기로, 총알은 무한상자로, 추진제는 무한파이프로 때웠고


순수하게 소행성만 수집만 관찰할거다


열심히 소행성을 수집하고 그 중 1/16 정도를 폐기처분하는 우주선이다


이제 이녀석을 열심히 굴려보자





벨트 위에 각각 소행성이 몇개씩 있는지를 조사한 결과다


기본적으로 소행성의 분포는 불균일하기 때문에 이런 현상이 발생하는 것이다


즉, 우리의 섭섭함은 소행성의 분포가 불균일해서 특정 소행성(금속 소행성)이 과도하게 수집된다는것


그럼 우리가 구상할만한 논리적 해결은 아마 이정도가 아닐까?


"80개보다 적게 보유중인 소행성만 수집하자"


다행히도, 이걸 구현하기 위한 모든 기능이 팩토리오에 구비되어 있다


한번에 하나씩 알아보도록 하자



1. 벨트 위의 아이템 개수를 회로로 출력할 수 있다


말 그대로이다


상자에 회로를 연결하면 상자의 내용물을 전부 신호로 출력하는 것처럼


벨트도 비슷한걸 할 수 있다





일단 벨트를 전선에 연결하는것까진 좋은데





기본적으로 벨트는 회로 네트워크와 꽤나 다양한 상호작용을 할 수 있다


활성화/비활성화는, 공장의 경우와 마찬가지로 조건을 걸어 벨트의 이동을 스톱시킬 수 있다


경우에 따라서 요긴하게 써먹을 수 있다


이번 시간에는 벨트 내용물 읽기를 써먹을 것이다


세 가지 메뉴가 있는데 유지(모든 벨트)를 골라줄 것이다


왜 그렇게 했느냐?





우주선을 한바퀴 빙 두르는 벨트에 노란색 테두리가 씌워진것을 볼 수 있다


우리가 지금 사용중인 벨트 내용물 읽기-유지(모든 벨트) 기능은


한 구간으로 인식하는 전체 벨트의 모든 내용물을 신호로 출력해준다


생각해보면, 우린 지금 우주선이 가진 소행성의 총 개수를 신호로 받아와야 한다


그런고로, 소행성이 흘러가는 혈관 역할을 하는 벨트 위에 존재하는


소행성의 총 개수를 사용하면 될 것이다




2. 수량 비교 조합기 입문


수량 비교 조합기란 아이템이 존재한다


지금부터 이 녀석의 기능을 알아보도록 하자






상자 다섯개에 다섯가지 자원을 각각 100, 50, 25, 13, 7개 넣은 다음 상자들을 전선으로 연결했다


이제 저 녹색 전선에 저 아이템들의 개수가 신호로 흐를 것이다





기본적으로, 수량 비교 조합기는 1*2의 크기를 가지는 아이템이다


입력포트출력포트를 모두 가져야 하기 때문이다


일단 강철상자의 회로를 조합기의 입력단자에 연결해보자





설명 없이 이해하기엔 꽤나 난해한 인터페이스다


그래도 뭐 좌측하단의 입력 신호 칸에 우리가 만든 신호가 흘러들어오고 있는것 정도는 알겠다


일단 예시와 함께 배워보자





설명인 만큼 대충 세팅해보았다 무슨 일이 일어나는중일까?


수량 비교 조합기는 입력된 신호들로 논리 연산을 한 다음, 설정한 신호를 출력하는 기계다


사진은 목재 채널의 값(100)과 석탄 채널의 값(50)을 비교하여


"석탄의 값이 더 클 경우, 철판 채널의 값(1)을 출력하라는 세팅이다


현재는 목재가 석탄보다 신호 값이 크기 때문에 아무 출력도 안 뱉고 있다


그럼 석탄을 좀 더 상자에 넣어볼까?





사진에는 안 나와있지만 상자에 석탄 100개를 더 넣어서 총 150개가 되었고


석탄 채널의 값은 이제 150이 되었다


오호, 이젠 수량 비교 조합기의 조건이 만족되었고(조건칸이 녹색이 되었다)


이에 따라 채널의 값 1이 출력신호란에 보이고 있다


요약하자면,


수량 비교 조합기는 입력된 신호를 가지고 논리 연산을 수행하여 원하는 신호를 뱉는 기능을 가졌다


사실, 수량 비교 조합기의 진면목은 지금부터다





저 요상하게 생긴 노란 아이콘은 "각각"의 의미를 가진다


결론부터 말하자면, 채널별로 논리연산과 출력값 설정을 따로따로 진행한다


사진 속 세팅의 경우, "각각 채널(이 경우엔 석, 목, 돌, 철, 구)별로 채널의 값이 30 미만이면 그 채널로 1을 출력하라" 라는 의미다


실제로, 석탄과 목재는 30개 이상이어서 출력신호가 없지만 돌, 철광석, 구리광석은 1 이라는 출력신호가 잡히고 있다




참고로, 출력을 설정할때 저 "각각" 기능을 사용하지 않을 수도 있다


위 사진의 경우, 출력 채널을 "각각" 대신 철판으로 바꾼 모습인데


출력신호로 철판 3이 잡히고 있다


왜냐? , 철광석, 구리광석 채널에서 각각 철판 1이 출력되었고


이들이 모두 합쳐졌기 때문이다


저번에 설명을 생략했던 디테일 중 하나가 이것인데,


기본적으로 같은 채널여러개의 신호 발생원이 존재하면, 이들은 전부 합산된다




확실히, 철판이 가득찬 상자 네 개를 신호로 연결했더니 4800 * 4 = 19200이라는 신호가 찍히고 있음을 확인 가능하다


상자 네 개가 모두 신호 발생원이고 이들을 회로로 연결했기 때문에


각자가 뿜뿜하는 철판 4800 이 모두 합산되어 철판 19200이 된 것이다







3. 일부 기계는 회로 신호를 통해 유동적인 필터 설정이 가능하다


거의 다 왔다 딱 한가지만 더 설명하면 이번 심화 예제를 풀 수 있다





잘 알다시피 투입기는 이렇게 필터를 설정할 수 있다


놀라운것은, 저 필터조차도 회로를 이용해 컨트롤할 수 있다




이렇게 투입기에 회로를 연결한 다음





필터 설정 체크박스를 클릭해주면 이렇게 다섯가지 품목이 허용 품목으로 설정된다


기본적으로, 1의 신호라도 들어오는 모든 품목이 허용 목록으로 세팅된다


그럼 돌을 상자에서 빼버린다면(= 채널의 값이 0이 된다면) 어떻게 될까?





이젠 놀라기도 지친다 상자에서 돌을 제거했더니 돌이 허용 품목에서 제외되었다!


편의상 투입기를 가져와서 설명했는데 소행성 수집기에도 완벽히 동일한 기능이 제공된다





4. 만들어보자


문제를 풀기 위한 모든 지식을 습득했다 이제 만들기만 하면 된다


우리가 가진 도구들은 다음과 같다


ㄱ. 벨트가 보유중인 소행성의 모든 개수를 출력하는 기능


ㄴ. 채널별로 논리 연산을 진행하는 기능


ㄷ. 회로 신호를 소행성 수집기의 필터로 설정하는 기능


즉 우리는 ㄱ을 통해 소행성의 재고를 받아온 다음,


이 신호를 요래요래 가공하여 개수가 부족한 소행성의 신호만 남겨서 소행성 수집기에 먹이면 될 것이다!





내가 대충 만들어 보았다 눈여겨보아야 하는 부분을 붉은 사각형으로 표시했다


벨트의 내용물 읽기 기능으로 신호를 떼다가 수량 비교 조합기에 연결했고


수량 비교 조합기에선 80보다 작은 채널에 대해서만 1의 출력값을 뱉도록 설정했다


마지막으로, 소행성 수집기에선 신호에 존재하는 소행성만 수집하도록 필터링 설정을 했다


실제로, 소행성 수집기에 "금속, 산화물, 탄소 소행성을 수집하겠다" 라는 아이콘이 보이고 있다


이제 한번 굴려볼까?




참고로 기계 사이의 거리가 너무 멀면 회로 전선을 연결할 수 없다


이럴때는 사진처럼 전신주를 통해 중계한다거나 해야한다


아무튼 신호를 모든 소행성 수집기에 먹여준 다음 우주선을 작동시키면






성공이다! 소행성의 개수가 전부 80 근처로 유지되는 중이다!


그럼 완성인가? 싶겠지만... 마지막 한 조각이 부족하다


이 우주선의 모든 시설을 해체했다가 다시 설치하면





이런 식으로 아무것도 수집하지 못한다!


왜냐, 처음엔 벨트 위에 아무것도 없기 때문에 신호 또한 아무것도 없고


이거이거를 수집하라는 신호조차 뱉을 수 없기 때문이다


이랬다간, 특정 소행성을 다 써버렸을때 그 소행성을 두번 다시 수집하지 못할 수도 있다


어떻게 해결하지?



5. 일정 신호 조합기





이건 일정 신호 조합기 라고 하는 아이템이다


내가 설정한 신호를 비가 오나 바람이 부나 변함없이 출력해준다


앞서 우리가 겪은 문제점은, 소행성의 개수가 0이 된 순간 채널 자체가 사라져버린다는 것이었다


그럼, 이 일정신호 조합기로 각각 소행성의 신호를 1 만큼만 출력하면 되지 않을까?




이렇게 세팅하고





이렇게 연결해서 금속소행성 1, 탄소소행성 1, 산화물소행성 1 을 수량 비교 조합기의 입력으로 가산해준다


이제 다시 가동시키면 어떻게 될까?






어떻게 되긴 존나 잘되지 씨발호로쎅스ㅋㅋㅋㅋㅋ


이처럼, 회로는 무작정 따라하는것도 뭐 나쁘지 않지만


왜 이렇게 만드나를 차근차근 따져본다면 이해의 깊이를 한층 더할 수 있다


밑에 게이 이거 만드느라 삽질중이던데 도움이 되었으면 좋겠다





오늘은 이만하고 내일이나 모레 다른거로 찾아오겠다


-계속-