기차 스케쥴을 구성해봤는데 이게 굴러갈거라는 확신이 없어서 질문 및 리뷰 요청해봄
모든 상하차 역 이름은 [아이템]상차, [아이템]하차 로 구성해놨고
각각 상하차 역은 해당 역에 배당된 기차가 0이고
일정버퍼 이상 (상차역), 일정버퍼 이하(하차역) 시
빨강에 상차신호 , [아이템] = 1 초록에 하차신호 [아이템] = 1을 전역신호로 쏴줌
그리고 각 해당역으로 향하는 기차가 0 일때만 각 상하차역이 켜짐 (C = 0일때)
모든 기차는 화물을 비운상태로 대기역에서 대기한다.
대기역 구성은 아래 스샷과 같음
빨강과 초록신호가 둘다 0이 아닌 물품신호를 발차신호로 내보낸다.
여기서 내가 생각하는것은 출발하는 순간 상차역신호가 -1 이 될것이므로 상차할 역이 없으면 빨강신호가 0이되어 다음열차는 출발하지 않을것임
각 열차 발차신호는 아래 스샷과같이 빨강 래치신호를 각 역마다 부여된 고유의 값을 같이 요구함.
래치신호 대기역에 부여된 고유의 값에 들어가야만
발차 아이템 신호를 열차에 전달하는 구조임 이 구조를 통해 동시발차를 막을 수 있을것이라고 기대함.
첫번째 질문은 이 구성에서 오버부킹이 발생할 것인가임
내 생각은 상차역은 하차역보다 적게 유지하면 어차피 상차역으로 나가는 기차가 나갈때까지 후속열차는 출발하지않고
상차역에서 상차한 열차가 하차역으로 떠나는순간 하차역 신호가 -1이 될테니 다음열차는 오버부킹 나지 않을것이라는 계산인데
이부분에 예상되는 오류가 있다면 지적부탁바람.
아래는 열차의 인터럽트 스케쥴 구성임
두번째 질문은 이 인터럽트는 유체와 화물열차가 같은 인터럽트를 사용함
기차는 화물열차는 화물칸만 유체열차는 유체칸만 장비하고 있음. 이경우 유체열차가 화물발차신호를 받고 출발할 것인지?
만약 그렇다면 신호분리를 따로 해야하는지
그외에 이 구성에서 예상되는 오류가 있다면 알려주길 바랍니다.
요약
1. 이 열차역 세트에서 오버부킹이 발생할것인가?
2. 유체화물차와 일반화물차는 유체신호와 화물신호를 자체적으로 구분할 수 있는가?
3. 그 외 예상되는 오류가 있는가?
일단 2는 딱히 그런거 구분 못할거임 난 고체 유체열차 구분해서 구성했음 - dc App
열차가 출발하는순간 -1이 된다는게 이해가 안가는데 이게 역에서 출력하던 1신호가 사라지는걸 말하는거임? 1신호가 사라지려면 그냥 열차가 출발하는게 아니라 아이템 상하차가 끝나야하는거 아님? - dc App
그리고 역 설치하고 부수는 과정에서 가끔 전역신호에 이상한값이 섞여들어가서 열차가 쓸데없이 부킹되거나 상차한 열차가 갈곳을 잃어버리는 상황이 생기더라 상차 하차 인터럽트를 분리하고 하차인터럽트는 자기 내용물 읽어서 하차역 찾아가게하면 이렇게 상차했는데 갈곳잃은 버려진 열차가 차고지나 제자리에서 대기타다가 다른 하차역에서 요청들어왔을때 새 열차 부킹안하고 버려진애가 출발하게 할 수 있음 - dc App
나는 그냥 단순하게 하차역에서 아이템신호 1을 녹색으로 쏴주고 상하차역에서 열차갯수를 아이템신호1 형태로 적색에 쏴줘서 녹색>적색 이라면 상차역이 켜지게했음 녹색=하차역의 요청, 적색=해당 아이템을 나르는 열차의 갯수 이런 아이디어임 - dc App
모든 역에서 이역에 향하는 신호 C를 출력할수 있어서 나는 이신호가 0이어야만 전역에 신호를 올리도록했음 따라서 열차가 해당역으로 출발하는순간 그역의 신호는 0이 되는셈 나는 모든역의 열차는 1대가 최대대수로 설정했음
전역신호는 나는 레이더 앞에 필터용 연산기를 달아서 필요한 신호만 받게끔 걸러주는걸 추가로 설치하면 될거같음 유체신호랑 화물신호랑 분리하는대에 쓸건데 지적한부분에도 활용가능할거같음
이 방법도 괜찮네
나도 이런 걸 한 달 넘게 했었는 데 일단 첫번 째 질문. '여기서 내가 생각하는것은 출발하는 순간 상차역신호가 -1 이 될것이므로 상차할 역이 없으면 빨강신호가 0이되어 다음열차는 출발하지 않을것임' 왜 -1이 돼지? 마이너스 신호 쏴주는 뭐가 안보이는 데?
말을 좀 잘못했네 신호스택이 1줄어든다는걸 -1이라고 표현했음 정확히는 1이 줄어드는거지
진지하게 읽고 답글 쓰고 있는 중인 데. 아 일단 여기 디씨 이미지 파일 올리면 너무 심하게 품질을 깍아서 글자하고 등호 부등호 숫자 이런 게 구분이 안된다. 이미지 파일만 어디 좀 해상도 보존 해주는 데로 올려봐. '는' 인지 '같지 않은' 인지 알아 볼 수가 없네.
이미지 클릭하면 원본사이즈로 볼수 있음
끝까지 읽고 다 이해하는 건 아닌 데. 일단 이거, '여기서 내가 생각하는것은 출발하는 순간 상차역신호가 -1 이 될것이므로 상차할 역이 없으면 빨강신호가 0이되어 다음열차는 출발하지 않을것임' - 한 틱 안에 일어나는 일 - [철판]상 역 적색 전역 신호 1 - [철판]하 역 녹색 전역 신호 1 - 대기역 조합기 입력 신호 -> 적색 [철판1] + 녹색[철판1] - 대기역 조합기 출력 신호 -> [철판1] - 대기역 기차들 신호 [한 틱 동시에] -> [철판1]
결과적으로 열차들이 동시에 출발 합니다.
저도 이런 방식을 바닐라로 처음 시도 했던 이유가 어느 유튜버가 이 동시 출발 문제를 클락(틱) 제너레이터를 써서 동시 발차를 막을 수 있는 방법을 올려 줘서 '와 이거 되겠는 데' 하고 시작했다가. 실제로 되드라구요?
래치 신호로 해결보긴함 그게 2번쨰 스샷구조임
됩니다 근데 대기역 만들 때 역 마다 고유 번호(1, 2, 3, 4, ...) 하나 씩 입력해줘야 하는 번거로움은 있습니다. 근데 뭐 큰 거시기는 아니죠.
틱제네레이터, 래치신호로 2번째 빨강색 신호를 주고있음 그래서 초록선 신호로 발차신호를 받고 AND (그리고) 연산으로 고유번호가 일치할때 발차신호를 열차로 쏴주는 구조로 구성함
'빨강 래치 신호 ...' 이 아래 있는 이미지가 핵심인 것 같은데 제 시력이 안 좋아서 그런가 그림 안에 내용이 안 보입니다. 세밀하게.
일단 쥐쥐
아무튼 같은 방식의 시스템을 저도 오래 고민하고 굴려봤던 입장으로 이런 방식 무조건 가능 합니다.
근데 이제 뭐 부가적으로 뭐랄까 딱 꼬집어서 말할수는 없는 데 '필요 이상으로 손이 많이 가는 상황이 좀 생길 수 있다' 주로 인터럽트 생성하고 새로운 자원 역 이름 입력 하고 이럴 때요. 운영 자체는 백프로 됩니다. 제가 한 한 달 굴려봤어요
일단 무조건 하나 충고하고 싶은 건 모든 열차들에 적용하는 '연료 떨어졌을 때 연료 역으로 가서 연료 충전하기' 이거는 하지 마세요. [철판]상 -> 화물 가득 채움 ->]]] 연료 인터럽트 발생 -> 연료역 가서 '연료 가득 채움' 만족 [[[ -> 다음 원래 일정은 [철판]하 ]]] - [[[ 구간이 인터럽트로 발생하는 데요. 연료 채우고 다음 일정 갈 때 [철판]하 갈데가 없으면? 요청 역이 없으면 ? 연료역에서 계속 대기 하고 다른 열차들의 진입을 막습니다. 길막 시작 돼고 연쇄 길막마.
이부분은 인터럽트 도중 다른 인터럽트 개입허용을 하지않게 하면될거같음 핵연료를 돌리고 있기때문에 충전할때까지 유예가 엄청기니까 괜찮을거같음
근데 바닐라로는 그게 가능하지가 않음 나도 석탄부터 시작해서 로켓 연료 핵연료 다 쓰고 했는 데.글로벌로 연료역을 굴릴려면1. 연료가 떨어짐2. 연료역에 감3. 연료 꽉 채움4. 그 다음에 어디 감?4. 를 해결 할 방법이 전역 적인 방법으로 딱히 없어연료 인터럽트가 어느 순간에 걸릴 지 모르 잖아.
나는 이 방식을 포기한 건 아니고 일대일이 아니라 M:N으로 할 수 있을까? 해보다가 지금 이거도 저거도 아니고 개판 된 상태 ㅋㅋ
이 방법은 M:N을 1대1매칭한것만 발차시키자라는 아이디어로 구상해봤음 주조소가 엄청 물량을 뿜어내고 소비량이 공급량을 따라가질 못해서 현재는 1:N인 상태임
일대일이면 무조건 잘 돌아가 이거는
이거 궁리하는 게 굉장히 재밌거든? 구현하는 것도 재밌고. 근데 무조건 불가능한 부분도 있으니. 염두에 두고 가시길 바랍니다.
전역 신호 안뿌리고 상차역 버퍼상자에 일정개수 이상일때 기차역에 기차 개수 L=1으로 신호 보내고 인터럽트에서 역이 가득 찾는지 확인해서 출발시키면 됨
이건 나도 동감인 게 전역 신호 굳이 필요 없고 L=0 L=1 이거만 회로로 조절 해도 열차들 알아서 배차되기는 함.