정확한 UPS 하락 원인 찾는다고 넘 삽질했는데, 결국 방법을 찾아서 공유함
우선 F4를 누르면 나오는 디버깅 매뉴에서
show-detailed info 와 show-time usage 를 확인하면 하락 원인을 대략적으로 알 수 있음
show-detailed-info를 보면 저렇게 빨간색으로 동그라미 친 부분이 Active Entity 즉 활성화 된 객체 숫자임
UPS 하락과 비례하는 값이므로 참고할 필요가 있음
그리고 show-time-usage를 보면, 각 업데이트에 경과 된 시간이 표시되는데 이게 핵심임
짤보면 Update: 25~~~/~~~/~~ 이런식으로 값이 나오는데, 업데이트를 한번 하기까지 걸린 시간임
여기서 1은 1ms임. 즉 1/1000초
이 값이 1000이면 1초란 얘기임
짤에서 빨강 파랑 노랑으로 밑줄 그은 / 로 나눠진 값들은 각각
현재값 / 최근 1분간 최소값 / 최근 1분간 최대값 을 뜻함
UPS가 60이면 1초에 Update를 60번 한다는 얘기임
따라서 이 Update 값이 16.6666..( 1000 / 60 ) 을 넘어서면 UPS가 60아래로 떨어지게 됨
근데 이 통계에는 문제가 있음
짤방을 보면 Entity update가 유난히 오랜시간을 소모해서 이 넘이 문제라는 건 알겠는데
도대체 이 넘이 어떤 넘인지 정확히 알 수가 없다는 것임
Entity에는 바이터, 밸트, 열선, 로봇, 레이더 등등 모든 객체가 다 포함되거든
구글링해봐도 하위 정보를 보는 방법이 안나오길래 고민하다가
각 Entity 군을 한 종씩 지웠을 때 변화되는 시간을 측정하면 되겠다란 생각을 했음
우선 활성상태의 Entity 수를 맵에서 확인해봤음
F4의 매뉴 중에 show-active-entities-on-chunk-counts 로 확인이 가능함
참고로 숫자 중
빨간색은 활성화 된 Entity
파란색은 플레이어가 접근 시 활성화 되는 Entity
초록색은 적이 접근 시 활성화 되는 Entity임
대충 보니 바이터가 매우 의심스러움
그래서 우선 바이터와 둥지부터 날려봄
방법은 ` 키로 콘솔창을 열고
를 치면 됨
해당 명령어는 https://wiki.factorio.com/Console#Kill_all_enemies 에서 확인할 수 있음
참고로 치트 명령을 처음 실행할 때는 두번 입력해야됨. 콘솔창에 한번 더 입력하라고 안내가 나오니 알 수 있을 것임
매우 깔끔하게 날아갔음
Update 시간도 22에서 8로 확 줄어들었음
UPS 하락시키는 주요원인은 일단 찾았는데 여전히 남아있는 저 Entity update 8이란 수치가 마음에 안듬
그래서 어떤게 8이나 잡아먹는지 Entity를 한 종류씩 날려봤음
바이터 다음으로 의심가는 넘은 날라다니는 수만 마리의 로봇이였음
F4에서 show-logistic-robots-on-map 으로 현재 활동 중인 로봇을 맵에서 확인 가능함
근데 이놈을 날려볼랬더니 위키에 방법이 안나옴
그래서 팩토리오 API 문서를 뒤져서 스크립트 함수를 찾아봤음
https://lua-api.factorio.com/latest/index.html
API 문서 링크임
/c local entity="robo"
local surface=game.player.surface
local count=0
for key, ent in pairs(surface.find_entities_filtered({force=game.player.force})) do
if string.find(ent.name,entity) then
if ent.can_be_destroyed() then
ent.destroy()
count = count + 1
end
end
end
game.player.print(count)
그리고 이런 스크립트를 짯음
여기서 첫줄을 보면 /c local entity="robo" 이렇게 되있는데
entity 이름에 robo가 들어가는 모든 놈을 다 찾고 지우는 스크립트임
요거 한방으로 로보포트 물류로봇 건설로봇 다 날아감. 왜냐면 다 robo란 글자가 들어가니까
아무튼 이 스크립트로 날려봤음
깔끔
update time이 4ms 줄어듬
여전히 남은 4ms가 마음에 안들어서 이것저것 다 날려봤는데
요약 결과로는
레이더 1700개 날렸을 때 0.5ms 감소
다이소 쪽 밸트 날렸을 때 0.5ms 감소. 밸트가 거의 없긴 했음. 참고로 밸트 날릴 때 express로 검색했음. 왜냐면 belt로 검색하면 분배기가 안날아가서..
15G 를 생산하는 원전 부속들을 전부 날렸을 때 1ms 감소
투입기 전부 날렸을 때 0.5ms 감소. 이건 근데 이미 로봇을 날려서 대부분 셧다운 상태라 적게 줄어든듯..
등등..
생각보다 원전과 레이더가 update time을 적게먹는다는 사실을 알게됐음
근데 이런 요인들은 기지 구조에 따라서 다 다른거니까 직접 확인해보는게 정확할 것임 ㅇㅇ
오....좋다... 추천박고감
오 이거 해봐야겠다
근데 원전이 가동중일 때랑 아닐 때랑 비교해봐야 되는거 아닌가 싶네
방금 17GW짜리 원전 날리고 전기 에너지 인터페이스로 교체 해봤는데 update time 19~20ms에서 17~18ms 정도로 줄긴 하네 근데 진짜 생각보다 크진 않은듯
아니다 한 10분 평균 내니까 그게 그거같음
가동중인 공장에서 inseter 다 날렸을때 active entity 30k 감소, 벨트 5ms + entity 10ms 정도 나오던게 벨트 0.3ms + entitiy 3.5ms 정도 나오네ㅋㅋ
테양열은 ups에 전혀 영향 없나?? 지금 태양열 때려칠까생각중 원전ups보니까 - dc App
기지가 커질 수록 1ms가 아쉬울 태니까 ups 하락이 시작된다면 태양열로 가는게 맞겠지 ㅇㅇ
확실한건 똥컴 새끼가 메가베이스 하고 싶다면 빌런마냥 바이터 꽉꽉 채워넣고 게임할게 아니라 평화모드 즐겜하는게 컴퓨터에 이롭다 이거지?
바이터가 있는게 재밌기도 하니까, 유지하고 싶다면 효율 모듈로 공해를 낮춰서 활성 바이터를 줄이는 방법도 있음
ups 생각하면 일단 바이터부터 조져야한다는거지? 그것도 세계에서 삭제시킬정도로
바이터는 무한해서 줄일 수가 없는데, 그나마 최선의 방법은 되도록 사각형 형태로 확장하는 것 같음
ㄴ경계 면적이 최소화 되도록
공해에 닿는 적만 활성화 되는건가요?
확장 시에도 활성화되는데, 확장은 드문 이벤트라 UPS에 거의 영향을 안주는 것 같음. 사실상 공해만 보면 될듯
와 여기도 능력자 많구나