검색같은거 해보면 살짝 응용한 단계부터 시작하는 경우가 너무 많은데,
사실 그 밑의 기본 원리가 있다.
스샷으로 정리함
1. 회로 "네트워크"는 "네트워크"라는 기본 변수 단위로 처리된다.
프로그래밍 언어와 비교하자면 이 "네트워크"라는 단위는 객체(object), 클래스(class), 구조체(structure) 등과 유사하다.
2. 어떤 개체에 마우스 커서를 올리면 밝게 하이라이트 되는 전선이 연결된 네트워크이다.
조합기는 입력에 2가지, 출력에 2가지, 최대 4가지의 서로 다른 네트워크를 연결할 수 있다.
3. 하나의 "네트워크"는 여러종류의 신호값들을 담을 수 있다.
4. 하나의 네트워크로 출력을 이어버리면 내부의 신호들은 합산된다.
5. 하나의 네트워크로 출력을 이어버리면 내부의 신호들은 덧셈으로 합산된다.
6. 색이 달라서 자동 합산되지 않는 두 네트워크도 한 개체에서 만나면, 그 개체는 빨강과 초록의 신호들이 합산된 결과를 인식한다.
7. 조합기의 입력부분은 빨강과 초록이 합산된 결과를 인식한다.
조합기의 출력부분은 빨강과 초록 각각으로 결과를 내보낸다.
8. 조합기가 입력을 받으면 출력 네트워크에 답을 반영할 때까지 1틱(1/60초)이 소요된다.
9. 조합기의 출력을 자기 자신에게 꽂으면 "출력값[다음틱] = 어떤연산(출력값[이전틱]) + 추가 합산내용"이 일어나면서 매틱 값이 갱신될 수 있다.
원리는 이게 전부.
나머지는 다 응용.
혹시 빼먹은거 있으면 알려주쎄요.
[링크 추가]
- 회로 네트워크 이해하는데 도움이 될 디버그 기능
https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=13815
회로하고 스피커로 음악만들기 하는 것도 있던데 0.001초 딜레이나 10초 딜레이 이런것도 가능한건가
딜레이는 최소가 1틱밖에 안되니 0.16666초가 최소겠네. 딜레이는 보통 1틱마다 1씩 누적된걸 나눗셈(일정간격이 필요할 때,)으로 처리하거나 조건(한번만 일어나거나 일어난 뒤 값을 초기화 할 때)을 걸거나 함. 10초면 600틱이니 이 출력을 나누기 600하면 10초마다 1씩 올라갈테고, 비교연산을 더 붙여서 >600 인 경우~ 라고 더 달아놓으면 10초뒤에 뭔일이 생길거고.
아니 0.16666 아니고 0.016666초
무슨말인지 모르겟지만 개추야
이게 무슨말인지 이해못하면 응용도 과정은 모르고 결과만 보고 쓰게됨.
빨간"선", 초록"선". 한 덩어리씩 이어진 "선" 그 자체를 하나의 "네트워크" 단위로 인식하면 됨. 출력은 개체에서 개체로 가는게 아니라 개체에서 선으로 가는 것임. 입력은 개체에서 개체로 오는게 아니라 선에서 개체로 오는 것임. 네트워크 "선"에서는 항상 각각의 신호들에 대해서 합산(sum)연산이 자동으로 일어남.
1틱당 실제시간이 0.016666초임?
이제 다음 응용편도 쓰는데샷