0.데브로그
https://store.steampowered.com/news/app/1366540/view/4157463936690492059
Dyson Sphere Program - Dev Log - Interstellar Logistics Optimization - Steam NewsInterstellar logistics has always been one of the most complex systems in Dyson Sphere Program. It is not only complicated in terms of code but also in terms of design. Many engineers have asked us this question, "Youthcat! Why does my ship go to a farther planet to get items instead of a closer one?" Good question! In today's dev log, we will introduce the history and evolution of the interstellar logistics system.store.steampowered.com1. 기존 성간 운송 로직
1.1. 기본 운송 로직
성간 운송은 기본적으로 Supply-Demand Pairing, "요구-공급 쌍"이란 걸 바탕으로 진행됨.
거창한 건 아니고 이렇게 철광석 요구-공급으로 한 쌍을 이루는 걸 말한다.
이제 이걸 페어링이라고 부를 거임.
페어링이 하나 생기면 화물선들이 이걸 기준으로 왔다갔다 하고
성간 정거장이 하나 더 생겨서 공급이 하나 늘어나면 페어링도 따라서 늘어난다.
여기서 문제가 생기는데, 이렇게 정거장이 늘어날수록 연산해야하는 페어링 갯수도 계속 늘어난다는 점임.
게다가 아이템 하나만 운송하는 것도 아니라서 실질적인 페어링 갯수는 더 늘어난다.
때문에 연산량 경감을 위해서 DSP 개발자는 특별한 방법을 썼음.
화물선은 페어링 검토 -> 적합할 경우 화물선 출발의 과정을 순환함.
첫 페어링 검토 과정에서는 페어링들을 차례대로 하나씩 검토한 뒤 조건에 맞는 적합한 페어링일 경우 화물선을 출발 시킴.
그리고 각 페어링이 동등한 기회를 가지게끔 두번째 페어링 검토 부터는 적합했던 페어링부터 검토를 시작함.
이것만으론 딱히 문제가 안되는데, 아래 두번째 로직과 합쳐지면 심각한 문제가 생김.
1.2. 효율적 운송 로직
왼쪽 정거장은 재료용 철을 요구하고 핵융합로를 돌릴 중수소 연료봉을 공급함.
오른쪽 정거장은 둘 다 철을 공급하지만 하나는 연료봉을 요구함.
이 경우 화물선을 어디를 우선해서 갈까?
당연히 하역하는 김에 적재도 할 수 있는 정거장을 우선해서 간다.
아래 정거장으로는 위쪽 정거장에 철이 다 떨어졌을 경우 말고는 화물선을 안 보냄.
이렇게 하역과 적재를 동시에 할 수 있는 정거장을 우선적으로 가게끔 해서 효율적으로 운송시키는 로직이 있다.
문제는 이렇게 거리가 씹창이 난 경우인데, 이래도 화물선은 아래 정거장은 패싱하고 꾸역꾸역 22광년의 여정을 시작한다.
그렇다면 아래 정거장에도 전력망 구성할 겸 연료봉을 줘서 우선순위를 동등하게 만들어 주면 되지 않을까?
하지만 아래 정거장에 연료봉을 주더라도 이를 완전히 해결하지는 못한다.
운송거리 제한이 아니면 해결이 불가능한 문제인데, 운송 로직의 근본적인 문제 때문이다.
2. 기존 성간 운송 로직의 문제
페어링 검토 과정을 설명하기 위한 사진임.
아래 원들은 각 페어링들을 뜻하고, 초록색은 적합한 페어링을 뜻함.
화살표가 가리키는 페어링부터 검토를 시작한다고 가정하면
앞에 있는 6광년 짜리 페어링으로 화물선을 보낼거임.
근데 이제 페어링 검토를 다시 시작하면?
6광년짜리 페어링은 재끼고 그 다음 페어링부터 검토한다. 이렇게 되면 다음 출발은 22광년 페어링으로 향하게 된다.
따라서 화물선이 두번 중 한번은 반드시 22광년 거리로 향하게 되는 거임.
3. 현재 개발중인 해결법
데브로그의 문장을 인용하면
As the saying goes, the complexity of design doesn't decrease; it shifts.
"게임 디자인의 복잡함은 줄어들지 않으며, 변화할 뿐이다."
복잡한 메커니즘을 없애기 보단 이에 맞는 새로운 메커니즘을 만들어 내는 것으로 가닥을 잡은 거 같음.
데브로그 상에서는 5개의 우선순위를 만들어서 유저가 직접 설정하는 방식을 만드는 중으로 나옴.
현재는 높은 우선순위의 페어링이 워프 부재 등의 이유로 막힐 경우에도 낮은 우선순위의 페어링을 무시하는 등의 문제가 있어서 이를 고치고 있다고 함.
고생하는 개발자를 위해 심심한 응원을 보내주자.
난이것도이건데 주는쪽과 받는쪽 중 한쪽에 화물선이 없을때는 어떤 규칙으로 순서 정하는지 아직도 모르겠음
화물선 보내는 쪽에서 저런 과정 따른다고 보면 됨
설명 ㄱㅆㅅㅌㅊ