https://mods.factorio.com/mod/HelmodAddonRequester
자잘한 버그 수정 및 개선을 거쳐서 버전업
예전에 Transport Drone 모드랑 충돌이 난다고 문의가 왔었는데
문제는 내가 저 모드를 안써봐서 답하기가 너무 귀찮았음
그러다가 지난주에 깃헙에 모드 올려둔거에도 이슈 넣길래 그냥 좀 살펴봤다
일단 모드를 둘 다 넣고 켜봤는데
게임 중에서 문제가 생기는 것도 아니고 게임을 키는 과정에서 문제가 생긴다
일단 헬모드 리퀘스터는 뺴놓고 트랜스포트 드론 모드가 어떻게 동작하는지 확인해봄
이 모드, 모든 아이템에 대하여 이런 식으로 레시피를 생성하더라?
우탐모 기반 세이브에 추가한건데 운송 드론을 재료로 쓰는 레시피가 1191개여 ㅋㅋㅋ
대충 시스템을 살펴봄
왼쪽에 있는 파란건물이 요청 운송창고인데 아이템을 아주아주 많이 보관할 수 있는 조립기계로 구현이 되어있고
조립기계에서 쓰려다보니 모든 아이템에 대해 저런 더미 레시피를 선택해두면 열심히 드론이 운반하는 그런 시스템이였음
오른쪽에 있는 빨간 건물은 보급 운송창고인데 그냥 일반 컨테이너로 구현 되어있음
더미 레시피가 잔뜩 생성되는 걸 보고 대충 감이 오기 시작했다
헬모드 리퀘스터에서는 필요한 공장 정보가 담긴 상수 조합기의 청사진을 만들어주는데
청사진이다 보니 저것 또한 하나의 아이템으로 구현이 되어있다
평범한 아이템은 아닌데 GUI에서 버튼을 누를 때만 손에 들리고 손에서 놓으면 인벤토리에는 들어가지 않도록 플래그가 설정된 아이템임
그리고 당연하지만 청사진이기 때문에 여러 개의 아이템을 한 스택으로 묶는 것이 불가능하다
트랜스포트 드론의 소스 코드인데
모든 아이템에 대하여 더미 레시피를 만들어 주는 함수이고 레시피 생산 결과로 max_stack=65000개의 아이템을 저장할 수 있는 공간을 만들어주고있다
근데 Helmod 요청 청사진 아이템에 대해서도 저짓을 하고 있었고 스택이 불가능한 아이템을 65000 스택으로 지정해버리니 모순이 발생해서 게임이 안켜지는 것
사실 요청 청사진의 stackable 플래그를 false 로 지정해뒀기 때문에 46번 라인에서 not-stackable 플래그에 걸려서 max_stack=1로 바뀌어야 하는데 안바뀌더라..
게임 로딩이 끝나면 게임 엔진이 알아서 not-stackable 플래그를 붙여주긴 하는데, 게임 로딩이 끝나지 않은 시점에서는 아직 저 플래그가 안달린 상태라서 문제가 생긴거였음
이렇게 추가해주면 이제 레시피 생성과정에서 문제가 발생하지 않음
근데 생각해보면 저걸 요청할 일은 절대 없는데 레시피를 생성하는 것부터 이상하단 말이지
44번 라인이 이 이상한 현상을 해결할 수 있는 부분이고 아이템 플래그에 hidden 플래그도 추가해버리면 아예 레시피 생성 자체를 건너 뛸 수 있음
즉 옳게 된 수정 결과는 이렇다
이제 Transport drone과 Helmod 리퀘스터는 깔끔하게 잘 켜짐
이렇게 수정해서 그저께 0.0.3버전을 릴리즈 했었음
이왕 수정 시작한 김에 다른 이슈도 해결해봤음
이건 0.0.2일때 수정했던 건데
개인용 로보포트가 켜진 상태에서 건설로봇 요청 버튼을 누른다면 임시적으로 로보포트를 비활성화하고 모든 요청이 완료가 된다면 다시 켜주는 기능을 추가했었음
이걸 안하면 내 인벤토리에 있는 아이템을 내 건설로봇이 뽑아가서 바로 다시 나한테 주는 일이 생겨버린다
https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=60730
<span style="font-size:10pt;">헬모드 애드온 버그 </span> <span style="font-size:10pt;"><span style="font-size:10pt;">부족분 요청을 누르면 내 인벤토리에 있는 로봇들이 내 인벤토리에 있는 물건을 들었다가 내 인벤토리에 다시 넣어줌</span>gall.dcinside.com예전에 쓴 글에 누가 요청했던게 있는데 이 동작을 컴패니언 드론에 대해서도 해달라고 했었음
문제는 저 당시에는 저 모드 또한 내가 써본적이 없었단거임 ㅋㅋ
그래서 저것도 미뤄두고 있었는데 최근에 시블럭 플레이 할 때는 저 모드를 넣고 했었기 때문에 이제는 할 수 있다
일단 기존의 상황
정말이지 충실하게..도 뻘짓을 수행하고 있는 컴패니언 드론의 모습이다
이젠 버튼을 누르면 토글버튼을 꺼주고
기지의 건설로봇들이 아이템을 배달해준다
배달이 완료되면 꺼진 토글버튼은 다시 켜줌
이거까지 수정해서 0.0.4를 올릴려고 했는데 생각하지도 못한 버그를 찾음
이건 진짜 우연히 발견한건데 공장의 갯수가 1000개 넘어가면 생기는 버그가 있었음
공장의 갯수를 파악하기 위해 저 GUI에서 조립 기계 아래에 써있는 숫자를 읽어오게 되어있는데 그게 천의 자리수를 넘어가면 3자리마다 띄어쓰기를 넣더라?
그래서 "2 067" 이라는 문자열을 숫자로 전환하는 과정에서 에러가 발생하고 있었음
진짜 어이없네
이젠 숫자로 전환하기 전에 공백은 모두 날려버린 다음에 숫자로 전환하도록 코드를 수정했음
잘 돌아간다
근데 한번에 1000개 이상의 아이템을 요청할 일이 흔할까? 모듈이면 그럴 수도 있긴 할 것 같긴한데
그리고 이건 엄청 사소한건데 모드 이름에 한글화 넣음
원래 헬모드 번역이랑 비슷한 느낌으로 이름 깔맞춤함 ㅋㅋ
분배 요청 계획기도 트랜스포트 드론과 연계 해달라는 요청이 있었는데 이건 또 언제한다
fixedsys excelsior가 눈에띠네
바꾸기 귀찮아서 걍쓰는데 정들었어
깃허브까지 문의 넣는건 애지간히 같이 쓰고 싶었나보네
헬모드를 1.0부터 써서 사용을 못해봤는데 이제 사용해볼 수 있겠다
캬 좋다
코딩은 모르지만 과정 올려주니 재밌네
굿~
스샷 보다 보니 비활성화가 아닌 비할성화라고 적혀있네
헐