FFF의 2.0 업데이트 내용 중 기차역 우선순위 보다가
지금 버전에서 회로로 만들면 어떻게 할 수 있는지 궁금해져서 질문 올림.
< 조건 1 >
각 아이템에 대해서 상/하차역이 각자 우선순위 값을 가짐.
상차역은 양수, 하차역은 음수 우선순위 값을 가지고, 우선순위 값이 클수록 최우선 역이 됨.
< 조건 2 >
상위 우선순위를 가진 역이 켜지면, 하위 우선순위의 역이 모두 꺼짐.
하위 우선순위의 역을 꺼서 상위역부터 열차가 배정되도록 설정함.
< 조건 3 >
각 역의 상자 재고에 따라서 열차 수 제한을 검.
예를 들어 1량 열차(40칸)가 오는 로켓연료 상차역의 상자에 로켓연료(1스택당 10개)가 800개가 들어있으면
회로로 계산해서 800 / ( 40 * 1 * 10 ) = 2 [대] 만큼의 열차가 이 역에 상차하러 올 수 있는거임.
< 조건 4 >
모든 역을 하나의 광역 회로 네트워크로 묶고, 광역 신호로 각 아이템의 기차 상태를 체크함.
예시로, 철판 광역신호 값이 104이면, 백의 자리 이상은 우선순위 값으로,
나머지 자리는 이 아이템에서 필요한 열차 대수 값을 신호로 보냄.
조건2에서 우선순위로 역 끄는게 이 광역신호를 기준으로 함.
각 조건을 모두 만족해서 회로를 짜보려고 하니까 역 하나에 연산기, 조합기가 대충 30개 정도 필요하더라고....
또, 상차만 굴리면 어떻게 굴러가긴 하는데 하차까지 같은 아이템 신호로 쓸려고 하니까
조건1이랑 조건2가 상충되서 동시에 할 수가 없더라...
뭔가 이 방법으로 우선순위 구현하는게 아닌거 같아서 요거 관련해서 이미 구현해본 팩붕이가 있는지 물어볼려고 글 씀.
만들어보는즁 - dc App
간단하게 만들기 어렵네 - dc App
역을 켜고 끌수도 있지만 가까운 역은 진입부분에 쓰인 신호를 회로로 강제로 빨간불로 못지나가게 하는 방법으로 입장을 막고, 역에 멈춘 차량의 값을 읽는등 읽는 거랑 사용하는거랑 나누면 되지 않을까?
또 한명의 바닐라LTN의 늪으로 빠져드는구나
vltn은 어짜피 한번에 요청하나만 발생하니까 요청 들어오면 12345 돌려서 해당 우선순위 역이 중간에 채가도록 했는데 바닐라 기차처럼 품목별로 역 나눠서 할때 멀티쓰레딩 어떻게 할지 감이 안잡힘 - dc App
그냥 간단하게 생각나는건 우선순위를 0~30까지만 줄 수 있다고 치고, 같은 품목에 대해서 우선 순위가 겹치는게 없다고 가정하면 좀 할만하지 않을까 싶음 우선순위가 가장 높은 역은 역이 활성화 될 경우 그 아이템에 대해서 1<<30 (0x40000000)을 내보내고 순위가 가장 낮은 역이 활성화 될 경우에는 그 아이템에 대해서 1<<0 (0x1)을 내보내도록 함, 이 신호는 전역 네트워크로 내보내게 되는데 동시에 전역 네트워크로부터 다시 값을 읽어서 자기 보다 높은 자리수에 활성화 된 역이 있는지를 체크해보고 만약 있다면 자기 자신 역은 끄도록 함 전역 네트워크는 초록 빨강 2개 쓸 수 있으니깐 하나는 공급역, 하나는 요청역전용으로 쓰려면 가능하긴 하지 않을까
그..럼 회로 좀 복잡해지겠네 역 하나하나 컨트롤하는게 아니라 바닐라 기차처럼 굴리려 했는데 - dc App
이정도면 재고충분한지(또는 공간 충분한지 ) 체크해서 활성화 시도 여부를 A로 내보내는 회로 A<<(우선순위 N) 해서 B를 전역네트워크로 내보내는 회로 전역 네트워크로부터 값 비교하여 제일 우선순위 높은지 체크하여 C를 내보내는 회로 A와 C가 둘 다 1일 경우 역 활성화 역 당 조합기 3개 선에서 어떻게든 되지 않을까 하는 생각이 들음
전역 네트워크 2개를 사용해서 공급/요청 나누는 아이디어는 신박하네 ㄷㄷ 왜 그 생각을 못하고 있었지 그리고 우선순위를 고유번호로 만들고 비교하는 것도 동일 우선순위를 가진 역이 2개 이상 켜질 때 신호 합쳐지는 문제 해결하는 회로를 짤 필요 없으니까 압축도 되고
근데 우선순위로 켜져있는 상차역이 켜져있는 하차역보다 열차 수용량이 적으면 남은 열차가 쉬어야되는데 이건 그냥 타협해야되는건가...
기차역을 통해서 현재 이 역에 오고있는 기차의 수또한 회로로 얻을수있기 때문에 자기자신한테 할당된 열차가 있다 싶으면 요청을 끄면 될것같음. 그럼 후순위역쪽 기차역이 활성화 될 수 있겠지
와 오고있는 기차 신호 언제 쓰는건지 감도 못잡고 있었는데 이럴때 써먹는 거였구나... 덕분에 어떻게 해야될지 대충 알 거 같음 ㄳㄳ
아 그리고 위에 설명은 역을 키고 끄고 느낌으로 말했는데 역을 꺼버리면 오던 열차도 다 다른곳으로 도망가버리니까 역을 끄면 안되고 그냥 최대로 올 수 있는 열차수 쪽을 제어하는 식으로 해야할거임