https://factoriobin.com/post/qu63ai
두 개의 청사진으로 이어져있는데
가장 첫 부분은 위에 상수조합기가 연결되어있음
그다음부터는 상수조합기 필요없이 쭉 이어주면 됨
빨간선이 저렇게 세로로 쭉 이어져야함
원리
일단 벨트와 투입기와 분쇄기에서는 전부 내용물 읽기를 수행하고 있음
예를들어 고급품질의 금속소행성이 있다면 고급품질의 금속소행성 재처리를 하도록 설정하는게 목적
분쇄기의 경우 내용물 읽기도 해야하고 제작법 설정을 하기도 해야하기 때문에 잘못 합선나지 않도록 하는게 (1) 연산기
분쇄기에 연결된 녹색선이 (1)의 입력으로 들어가면서 그대로 (1)의 출력에 나오도록 하였음
한편 벨트와 투입기도 내용물을 읽었는데 이건 빨간선으로 연결해서 (1)의 입력으로 넣어주었다
이것도 초록색선으로 하면 벨트의 있는 소행성 신호가 그대로 분쇄기에 연결된 초록선이랑 합선 되어서 분쇄기의 레시피가 꼬이기 때문에 다른색 선을 쓴것
결국(1)의 출력은 녹색선으로 들어온 분쇄기내용물 신호와 빨간선으로 들어온 투입기벨트의 내용물의 합산 값이 나가게 된다
(예시 : 분쇄기에서 나온 고급금속3, 투입기 벨트에서 나온 고급탄소3 고급금속2 고급산화물2 희귀금속1, 그 합산 값인 고급금속5 고급탄소3 고급산화물2 희귀금속1)
이 출력은 녹색선을 타고 (2) 비교기로 들어간다
여기는 조건을 녹색선으로 들어온 신호가 0보다 클 경우, 그에 해당하는 빨간색 선 값을 프로메튬 신호로 바꿔서 내보내게 했다
빨간선으로는 상수조합기에 세팅된 값이 들어오는데
12종의 신호가 1,2,4,8,16,32,64,128,256,512,1024,2048 이렇게 2의 제곱수가 되도록 설정된 값이다
현재 상태의 경우 녹색선으로 들어오는 신호는 고급금속5 고급탄소3 고급산화물2 희귀금속1
이것들은 각각 빨간선 테이블에 의해
고급금속5 -> 프로메튬2
고급탄소3 -> 프로메튬32
고급산화물2 -> 프로메튬512
희귀금속1 -> 프로메튬4
로 바뀌게되고 다 더하면 프로메튬550이 나온다
사실 꼭 프로메튬 신호로 할필요는 없고 걍 아무거나 써도 되는데 소행성처리하는거니까 남는 소행성 신호중에서 골랐음
550은 2진법으로 쓰면 0b0010_0010_0110 인데 각각
0b0010(고급산화물이 있음)_0010(고급탄소가 있음) _0110(희귀금속,고급금속이 있음) 이라는 정보가 담겨져 있는 셈임
이렇게 얻은 신호는 녹색선을 타고 (3)연산기로 들어감
여기서는 전단에서 받은 프로메튬 신호와 상수조합기에서 빨간선을 타고 온 신호끼리 and 연산을 수행함
여기의 상수조합기는 먼저 봤던 상수조합기처럼 1,2,4,8,... 2의 제곱수로 세팅이 되어있는데 다만 신호의 종류는 소행성 신호가 아니라, 그거에 짝이 맞는 "소행성 재처리" 신호임
여기서의 연산은
일반금속 0b0000_0000_0001 and 0b0010_0010_0110 = 0b0000_0000_0000 = 0
고급금속 0b0000_0000_0010 and 0b0010_0010_0110 = 0b0000_0000_0010 = 2
희귀금속 0b0000_0000_0100 and 0b0010_0010_0110 = 0b0000_0000_0100 = 4
특급금속 0b0000_0000_1000 and 0b0010_0010_0110 = 0b0000_0000_0000 = 0
일반탄소 0b0000_0001_0000 and 0b0010_0010_0110 = 0b0000_0000_0000 = 0
고급탄소 0b0000_0010_0000 and 0b0010_0010_0110 = 0b0000_0010_0000 = 32
희귀탄소 0b0000_0100_0000 and 0b0010_0010_0110 = 0b0000_0000_0000 = 0
특급탄소 0b0000_1000_0000 and 0b0010_0010_0110 = 0b0000_0000_0000 = 0
일반산화 0b0001_0000_0000 and 0b0010_0010_0110 = 0b0000_0000_0000 = 0
고급산화 0b0010_0000_0000 and 0b0010_0010_0110 = 0b0010_0000_0000 = 512
희귀산화 0b0100_0000_0000 and 0b0010_0010_0110 = 0b0000_0000_0000 = 0
특급산화 0b1000_0000_0000 and 0b0010_0010_0110 = 0b0000_0000_0000 = 0
를 수행하는 거다
비트끼리 마스팅 연산을 통해서
고급금속 고급탄소 고급산화물 희귀금속 라는 신호를
고급금속재처리 고급탄소재처리 고급산화물재처리 희귀금속 재처리 신호로 바꾼 것이다
https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=79390
인덱싱을 활용한 자동 소행성 재처리 구조*들어가기 전에 빅-샤라웃투 https://www.reddit.com/r/factorio/comments/1gi529x/quality_grind_strategy/이 글은 거의 이 레딧 포스트의 해설에 가까움.소행성 재gall.dcinside.com선별조합기의 인덱스 기능을 이용한 방법도 있던데
아무래도 선별조합기 2개보단 연산기 1개 비교기 1개 쓰는게 좀 더 싸긴 하다
사실 여기까지의 결과를 분쇄기에 물려도 동작은 할 것이지만 살짝 문제가 있다
보았는가?
너무 빠르니 천천히 보자
레시피가 바뀌는 순간
탄소 재처리를 하려다가
갑자기 산화물 재처리로 바뀌더니 투입기가 산화물을 집기 시작한다
근데 그 찰나에 또 금속 재처리로 공정이 바뀌었다
소행성은 이미 집은 산화물을 기계에 넣었지만, 이미 공정은 금속 재처리로 바뀌었기 때문에 잘못 넣은 산화물은 그대로 배출구로 직행되고
그 이후에 다시 금속을 집은 소행성에 의해 공장이 작동한다
이렇게 신호간의 우선순위 이슈에 의해 이미 처리되고 있던 레시피가 강제로 레시피가 바뀌어 버리는 상황이 발생되기 때문에
버벅이는 것을 막기 위한 추가적인 회로가 붙는다
연산기(3)의 출력은 빨간선을 타고 비교기(4)로 들어간다
이 회로는 빨간선으로 신호가 들어오는게 있을 경우, 그 신호의 지속시간을 카운팅해주는 회로다
스샷으로는 감이 안오니 움짤로 보면
빨간신호가 뭔가 들어올때마다 그에 해당하는 신호가 틱마다 1씩 증가하는 것을 볼 수 있다
결과적으로 제일먼저 입력되었던 신호의 경우, 가장 큰 출력 값을 가진다
오래된 빨간신호가 죽을때마다 출력신호칸이 왼쪽으로 한칸씩 이동하는 모습이 보일거임
거의 다했다
비교기(4)의 출력은 선별기(5)로 들어간다
선별기에서는 가장 큰 신호만 필터링을 해준다
그리고 이 출력은 분쇄기로 연결되어서 가장 짬이 높은 소행성에 대해 분쇄 레시피를 실행할 것이다
이러면 레시피 변경시 버벅이는 것을 막을 수 있다
뭔가 이런 글이 이미 팩갤에 꽤 있을 줄 알았는데 별로 없길래 한번 정리해봤음
일단 만들기는 일반~특급에 대응해서 작동하도록 했는데
나는 일반품질 재처리는 별도 단지에서 전용으로 굴리고, 고급 이상에 대해서만 이 가변회로를 쓰고있음
계산 때려보니 일반재처리 분쇄기가 18개 있다면, 고급이상 재처리 분쇄기는 9.216개 필요한 것같더라
산화물 재처리 속도가 2초가 아니라 1초라는걸 빼먹고 계산하긴했지만 그거 고려해도 대충 저런 느낌으로 나오긴 할듯
선별조합기 쓰는걸 비교조합기로 바꾼 개선버전
https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=93237
소행성 가변 품질작 개선https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=93058 소행성 가변 품질작 청사진 - 팩토리오 마이너 갤러리https://factoriobingall.dcinside.com
음음 완벽히 이해했어(이해못함)
프로그램 배우지 않았으면 비트 연산 이해하기 힘들텐데...
그것떔에 최대한 연산 풀어서 쓴건데 이해 안되면 어쩔수 없지 뭐
이렇게하면 장점이 전설 분쇄기랑 전설 모듈 아낄수있는건가? 잘 이해를 못해서
특급재처리 레시피 전용으로 할당한 분쇄기가 있다면 그건 하루종일 놀고있을텐데 이렇게 가변적으로 처리하게 하면 분쇄기가 쉬지 않고 일하니깐 분쇄기+모듈 갯수가 줄어드는 효과가 있지
더 복잡하게 하라고!!
인덱싱 사용하는 회로도 레시피 플리커링 이슈 있는데 못고쳐서 그냥 올린거였는데 이글은 고쳤네 개고수 ㅊㅊ - dc App
SR래치 마개조하면 기존의 신호가 사라졌을 때만 새로운 신호를 통과시키는 방식이 되나 하나하고 머리좀 쥐어짰었는데 다행이도 쉬운 방법을 찾았음 ㅋㅋ
실질적으로 기존 선별투입기 넣은 회로를 2개로 줄여버리고 거기에 되먹임 하는걸 제거한 버전. 나는 기존 선별 버전에 어차피 한개 먹으면 다시 뱉어야 되니까 줍는 팔에 정지 신호 떼버리고 어차피 정지 했을때 다 버리고 다시 먹으면 된다는 느낌으로 돌림.. 비트연산 맘에 드네..
궁금한게 본게임 하면 회로 넘버 몇까지 되있음?
@팩붕이5(118.235) 가장 최근에 추가한게 1928이네
@이파 계속 신호 연습 하면서 뗏다 붙였다 하는데 넘버 계속 올라가길래 물어봤음... 이거 초기화 하는 방법이나, 이거 높아져서 나빠지는점 있음?
@팩붕이6(218.54) 내가 알기론 초기화는 없고 숫자 높아져도 42억 넘어갈정도 아니면 별로 상관없을걸
지린다 맨날 레시피 맞는걸로 바꿀려고 조합기만 n개 설치했네
본업이 뭐임ㄷㄷ? 임베디드 같은거 하나
디지털회로설계함
@이파 오오.. 멋져브러