저번에 올라왔던 글 재밌게 봤고 이번에 영상 올라왔는데 아직 갤에는 글 없길래 번역해가면서 영상 내용을 정리해보려고 해
역주는 *나 괄호 등으로 표시했으니 읽을 때 헷갈리지 않게 최대한 노력했으나
글을 다듬는 과정에서 다소 내용이 길어지고 읽기 불편할 순 있으니 미리 사과의 말씀을 드립니닷....
******어떤 청사진이 ups에 제일 좋은지 알려주는 글이 아닙니다******
개요
이 유튜버는 현재 화학팩과 관련해서 ups 콘테스트?를 열고 있음
당연히 일반적으로 엔딩을 보는 정도로 플레이하는 유저에게는 필요없는 정보들이고, 메가베이스 등으로 ups 관리가 필요한 사람들을 위한 영상임
지난번 영상(이 글)에서는 ups 콘테스트 출제작 중 안좋은 것들을 예시로 보여줬고, 이번 영상은 여러가지 부가 설명들과 함께 '최고의 설계'를 선정하지는 않았지만
상위권에 위치한 설계들을 자체 제작한 툴과 피어슨 상관계수를 계산하여 상위권의 설계들이 어떤 공통점을 가지고 있는지를 주로 다뤘음
서론
설계도를 내보낼때 우리가 보기엔 다소 난잡한 문자열로 공유가 되는데, 이를 JSON 파일 형식 변환하면 코드로 직접 볼 수 있음
이 코드에는 청사진 속 모든 개체와 방향, 위치가 포함되어 있고 회로 등의 정보도 모두 저장되어있음
근데 이 유튜버는 콘테스트를 열고 36개가 넘는 청사진을 받았는데, 청사진들의 구성요소를 직접 살펴보는건 물론 가능은 하지만 너무나 비효율적임
그래서 직접 청사진 주소를 입력하면 각 개체가 몇개 있는지 확인할 수 있는 툴을 만들었음
지난 영상에서와 다른 영상에서는 ups테스트 툴을 이용해 ups를 측정했고
이번 영상에서는 청사진의 개체를 모두 뽑아내는 툴을 만들었음
이제 이 둘을 조합하여 상관계수를 구해 '어떤 요소들이 ups에 더 많은 영향을 끼치는지' 알아볼거임
*상관계수는 0을 기준(둘 사이에 관계가 없다)으로 1에 가까울수록 양의 상관관계(A가 커지면 B도 커진다)와 -1에 가까울수록 음의 상관관계(A가 커지면 B는 작아진다) 로 범위를 제한하고 이 안에서 얼만큼 관계가 있는지 알아볼 수 있음
그렇다고 해서 1에 가깝다고 둘 사이에 무조건 관계가 있는건 아님, 예를 들어 분석을 통해 [아이스크림의 판매량이 증가할수록 익사 사고도 늘어난다] 라는 추론이 도출되었을때,
이것만을 믿고 아이스크림의 판매량을 제한하는것은 옳지 않음, 왜냐하면 아이스크림의 판매량과 익사 사고 간의 관계는 직접적인 관계가 아닌 '여름'과 관련 있기 때문임
하지만 여름을 고려하지 않는다면 둘 사이에 상관관계가 있어보일 수 밖에 없기 때문에 이러한 결론 도출은 조심해야함
다행히 이 영상에서는 이러한 오류까지 같이 지적해주기 때문에 재밌게 볼 수 있는 부분이 몇개 있음
본론
1. 주조소/지하 파이프 - 유체 업데이트 시간 간의 상관관계
주조소가 많을수록 유체 업데이트에 소비되는 시간이 많은건 당연해 보이지만, 지하 파이프도 유체 업데이트 시간과 관련이 있는것으로 보였음
심지어 주조소보다 지하파이프가 ups와 더 강한 상관관계를 가진것으로 나옴
지하파이프는 사실상 일반 파이프와 같은 역할을 하고, 단순히 생각하면 빈공간이 많기때문에 오히려 일반 파이프보다 ups에 영향을 덜 줄것같은데 왜 그럴까?
답은 그냥 주조소를 많이 쓸수록 지하파이프도 많이 쓰기 때문임
즉,
지하파이프가 ups를 많이 잡아먹는다 - X
주조소를 많이 쓰면 지하파이프도 많이 써서 지하파이프가 ups를 많이 먹는것처럼 보인다 - O (실제로는 쓰는만큼 쓰는건데 지하파이프 양이 많아지니까)
이러한 중간 도출을 통해 실제 청사진과 비교해보면, '유체 네트워크에 연결된 건물이 많을수록 ups를 더 많이 잡아먹는다'임
*2.0 업데이트와 함께 유체와 관련된 부분이 유체역학(?)을 반영하던 부분에서 네트워크 형식으로 바뀌게 되었는데
이걸 정말로 전기 네트워크나 회로 네트워크처럼 사용하면 ups 부분에서 더 많은 비용이 발생한다는 결론
2. 투입기의 활성화 제어 - 엔티티 업데이트 시간 간의 상관관계
당연한 이야기지만 개체들이 일을 덜 할수록 ups가 최적화됨
묶음 투입기가 8개일 때 활성화(맨 오른쪽 셀) 되어 투입기가 두번 회전하는것보다
16개일때 활성화되어 투입기가 한번 회전하는게 더 좋음
그래서 ups 최적화를 할때 가장 먼저 하는것이 회로 네트워크로 조건을 달아 쓸데없는 업데이트를 줄이는건데
문제는 너무 많은 투입기(심지어 제어가 필요하지도 않은)가 단일 네트워크에 연결되어 불필요한 조건 확인을 반복할 때 ups가 크게 증가하였음
엔티티 업데이트 시간을 줄이겠다고 회로 업데이트 시간을 더 늘린 셈이 되버림
2.1 투입기와 네트워크 최적화 *중요*
(참가자들의 틱당 업데이트의 평균, 파란색-엔티티, 분홍색-회로제어, 초록색-벨트, 노란색-전기,유체 네트워크, 주황색-우주플랫폼, 노랑색-기차)
(화학팩만 사용했으므로 우주플랫폼과 기차는 사실상 측정 불가능한 영역)
*앞서 언급한 'ups 최적화를 위해 회로네트워크에 연결하고 조건을 달아 쓸모없는 업데이트를 줄이는 것이 첫번쨰' 라는 부분은
파란색 그래프를 줄이기 위해 그 중 일부를 분홍색으로 옮기는 작업이라고 보면 됨
전체적으로 보았을 때 18번 참가자의 ups가 가장 낮았고
상대적으로 좋지 않은 ups를 기록한 11번 참가자와 직접 비교하여 어떤 차이점이 있는지 살펴보겠음
- 11번 참가자의 ups 측정 그래프를 240틱으로 좁힌 그래프 (기존 18,000틱)
보면 중간중간 분홍색이 크게 튈때가 있음
분홍색은 회로 제어 네트워크라고 설명했는데 이 부분이 상당히 자주 튀는것을 볼 수 있음
-동일한 그래프 조건으로 변경한 18번 참가자의 ups 그래프
튀는 부분이 상대적으로 적음
이 그래프의 범위가 240틱=4초 인데 이정도인걸 감안하면 장기적으로 봤을때 이렇게 자주, 과도하게 튀는 부분을 제어할 필요가 있음
이제 이 부분을 실제 청사진을 보면서 해석해야함
- 11번 참가자의 회로 구성상태
우선 이 참가자가 필요 이상으로 과도하게 공장을 구성해서(초당 240개 뽑아내면 되는데 공장 스펙은 초당 390개정도를 뽑을 수 있는 정도) ups가 안좋은것도 있지만,
화학팩의 재료인 빨간칩,황,엔진유닛을 모두 단일 네트워크로 구성하고, 일 할 필요가 없는 투입기에도 모두 연결해서 회로제어 업데이트를 과도하게 소비함
회로제어 업데이트는 기본적으로 엔티티 업데이트를 줄이기 위해 일부 사용되는데, 이렇게 과도하게 사용할 경우는 엔티티 업데이트의 감소량보다 네트워크 업데이트의 증가량이 더 많아짐
- 다른 참가자의 설계 중 제일 마지막 부분
이게 짤을 캡쳐해와서 잘 안보일텐데.. 마지막 조립기계에서 과학팩을 꺼내는 투입기에는 회로 연결을 하지 않았음
4스택 반벨트를 채우는 공정에서 120개보다 조금 더 많이 생산하는 경우 어쩔 수 없이 마지막 조립기계는 생산시간이 중간중간 비게 되는데
오히려 회로를 연결하지 않아서 업데이트를 추가 낭비하는것을 개선했음
-영상 속 44:55, 짤로는 잘 안보이니 영상을 직접 확인해보는게 좋음
앞서 첨부한 참가자들의 ups 순위 그래프 중 9위를 기록한 1번 참가자의 설계도인데
그래프를 보면 비슷한 수준의 ups를 기록한 다른 참가자들보다 엔티티 업데이트량은 많지만 회로제어 업데이트는 모든 참가자랑 비교해봐도 가장 적음
회로를 아예 안썼기 때문
유튜버는 이 청사진을 보면서 많이 흥미로워했는데, 그 이유가
1. 벨트를 많이 사용했는데, 생산량이 소비량보다 조금 높아 최종적으로 투입기가 벨트에서 집는 순간에는 벨트 위 아이템이 멈춰있는 상태
2. 엔진유닛의 경우도 톱니바퀴와 철은 1번과 같이 설계하였고, 파이프는 소비량이 많아서 주조소에서 직접 꺼내게 설계함
즉 정말 필요한 상호작용만 하기 때문에 회로 네트워크를 사용하지 않고 ups를 최대한 최적화한 설계라고 했음
그럼 여기서 한가지 의문이 생김
'움직이지 않는 벨트 위에 투입기가 물건을 올리려고 하는것 만으로도 비용이 발생해서 회로를 쓰는건데 지금와서 벨트가 멈출때까지 생산하라고?' 라는 반론이 가능하기 때문임
이 실험 결과 '벨트 위에 아이템을 계속 떨어트리려고 하는 비용보다 움직이지 않는 벨트 위의 아이템을 집는게 더 저렴하다' 였음
재료 A를 소비량보다 살짝 많이 생산해서 최종적으로는 벨트가 병목에 걸리게 하고, A를 소비하는 B건물에 붙어있는 투입기는 멈춰진 상태의 아이템을 줍게 하는것
ups 개선한다고 무작정 회로로 제한걸다보면 그냥 안하느니만 못한 작업이 되는거고
정말 필요한 만큼만 제한을 거는지 직접 알아보는게 중요함
==================================================
여기까지의 내용만 먼저 정리하면
1. 단일 유체 네트워크에서는 붙어있는 건물이 많은수록 비용이 더욱 더 많이 상승함
2. 묶음투입기는 가능한 적게 회전하도록(16개를 꽉 채워서)
3. 회로 네트워크를 사용할 때는 제어가 필요하지 않는 개체들까지 연결하는건 손해
4. 단일 회로 네트워크에 너무 많은 종류의 신호와 제어를 하는것은 안좋음
5. 움직이지 않는 벨트에 아이템을 내리려고 낭비하는 비용보다 멈춰있는 벨트에서 아이템을 주울때 절약되는 비용이 더 크므로,
흐름량이 적은 아이템은 벨트를 이용, 흐름량이 많은 아이템은 공장-공장으로 직접 투입이 좋음
6. ups 개선을 위해 회로로 투입기/공장 제한을 거는건 무작정 거는게 아니라 네트워크 구성과 실제 가동률을 모두 고려해야 함
7. 너무나 당연해서 본문엔 안적었는데 공장이 적을수록 좋음
못적은 내용은 오늘 안에 2편으로 마저 올릴게
투입기가 그렇게 안좋다 하는이유는 투입기 자체에 문제가 있는게 아니라 투입기와 벨트간의 상호작용에 고려할 사항이 너무 많아서 그럼. 투입기가 빈 벨트에 내려놓을 때는 괜찮은데, '거의 꽉 찬 벨트에 내려놓지 못하고 위에서 그냥 대기타고있는 경우'가 특히 별로임. 또 한 transport line(벨트 반줄) 위에 있는 아이템은 전부 묶여서 하나의 개체로 취급되는데 분배기나 물건을 집는 투입기는 transport line을 분리함. 투입기가 아이템을 잡을수 있는지 없는지 위치를 계산하는 방법이 'transport line의 끝지점 위치를 계산한 다음에 그 라인 위 모든 아이템의 간격을 불러와서 하나씩 더하는' 방식이기 때문에 물건을 잡는 투입기는 자기 뒤 3칸정도에서 라인을 그냥 강제로 쪼개버림.
이런 이유들 때문에 '흘러가는 벨트 위에서 물건을 집는' 투입기도 별로임. 가급적이면 멈춘 벨트 위에서 잡는게 좋고. 또 물건을 아주 짧은 거리에서 옮길 때는 공장 -> 벨트 -> 공장 보다도 공장 -> 상자 -> 공장이 유리함. 공장상자상자상자상자공장도 공장벨트공장보다 유리한걸로 알고있음. 투입기/벨트 간 상호작용이 안좋기때문에 투입기를 많이 쓰더라도 벨트를 제거하는 방식이 더 좋은거임. 근데? 따지고보면 화물차나 로켓격납고도 상자임. 크기도 커서 투입기 개수도 더 줄일 수 있고. wagon chesting 이랑 silo chesting의 아이디어가 이렇게 출발함. 아얘 벨트로 아이템을 옮기지 말고 화물차나 격납고 데이지체인으로 다 해먹자는 거임.
우주플랫폼이랑 기차 업데이트시간을 추적하는 이유는 이 기법들이 ups에 얼마나 영향을 주는지 알아보기 위해서임. 저번 영상에서 봤듯이 격납고는 매우 매우 나쁜걸로 드러남. 모든 격납고가 우주물류네트워크랑 연결되어있어서 격납고 개수 x 플랫폼 개수만큼의 업데이트가 계속해서 생기게 됨. 화물차도 마찬가지로 정기적으로 진행되는 길찾기 호출이랑 플레이어가 타 있는지 없는지 조건 때문에 overhead를 가지는 걸로 알고 있음. 근데 격납고랑은 다르게 기차 업데이트(노란색)는 정말 미세한 수준이라 화물차를 수백수천개씩 써도 별 문제가 없고 심지어 실전성까지 있다는게 증명된 거. 35개 빌드중 우승작인 18번도 wagon chesting을 많이 활용했음.
@고속도로 화물차 말고 탱크나 자동차를 써도 동일하게 ups 절약효과를 볼수있어? 어디서 자동차 탱크가 필드에 많이 깔려있으면 안좋다는 글을 봐서
@팩붕이1(45.231) 이건 벤치마크를 돌려봐야 할거같음. 나빠진다는건 알긴 하는데 얼마나 영향이 가는지 모르겠어서
윗댓글이랑 연결해서 생각하면 실제 최적화된 빌드는 조립기계 개수를 최대한 줄인 baseline보다 조립기계 수가 많을 수밖에 없음. 조립기계 많을수록 안좋다는 말은 100틱 중 '90틱을 작동하는 기계 1개'랑 '45틱 작동하는 기계 2개'랑 '30틱만 작동하는 기계 3개'를 비교했을 때 1개<2개<3개 순으로 업데이트 타임이 높다는 말. 실제 작동시간 합계는 90틱으로 똑같은데도. 근데 또 차이가 많이 나는건 아니고 한 10% 정도?
근데 자동화팩은 톱니 주조소 1: 과학팩 조립기계 10의 비율을 맞춘 빌드보다 주조소: 조립기계가 거의 1대 2인 설계가 우승했음. 톱니 주조소 개수를 맞춰서 주조소 -> 벨트 -> 조립기계로 하는 것보다 주조소를 많이 짓더라도 기계 <- 주조소 -> 기계 기계 <- 주조소 -> 기계 형식으로 벨트 안거치고 최대한 직결을 늘린게 나았음. 투입기 개수도 더 많고 주조소랑 조립기계 개수도 더 많았는데도(공간제약 때문에 12비콘 못쓰고 6/10비컨만 사용) 벨트와 상호작용을 최대한 피했다는 이유로 그쪽 업데이트타임에서 이득은 본거임.
혹시 관련내용 추가해서 글 올려줄수있음? 저번에도 글 올렸길래 기다리고있다가 안올라와서 일단 내가 먼저 올리긴했는데 글 올려주면 이거 지울게
@말랑별 이런 글은 많을수록 좋은건데 굳이 지울 필요까지야? 정리글은 내가 메가베이스를 직접 만들어본 뒤에야 쓰던말던 할수있는거라서 몇달은 걸릴거같음
흥미롭구만. 근데 그러면 똑같은 유체 네트워크라고 해도 지하파이프보다 그냥 파이프를 쓰면 ups에 도움이 되는건가? 글의 내용만 보면 그냥 주조소때문이라는거지 지하파이프나 그냥파이프는 똑같다는것 같은데
개 유용한 글인데 추천이 적네 미안하다 해외라 추천이 안되서 감사의 닷글만 적고간다
좋은글 추천