2025-11-08
[etc] duckov 하다가 mod 개발한 썰
이전 글과 연관된 내용이야. https://frogred8.github.io/docs/039_story_for_contribution duckov란 게임에서는 인벤토리 무게 비율이 75%를 넘으면 이동이 느려지는데 그게 UI에 표시가 안되다보니 인벤토리가 가득 차면 아이템 선별할 때 넣었다 뺐다 하면서 그 경계를 아슬아슬하게 채우고는 했었어. 그게 꽤나 불편해서 이걸 표시해주는 UI가 있으면 좋겠다 싶어서 검색해봐도 별다른 mod가 없어서 내가 직접 만들어보기로 함. - 1일차 먼저 duckov에 있는 dll에 어떤 클래스, 함수가 있는지 쭉 흝어봤어. 살펴보면서 대충 키워드 기준으로 북마크해뒀는데 이게 나중에 도움이 많이 되더라. 그 다음에 다른 mod는 어떻게 개발했는지 dll 디컴파일러로 열어서 구경하며 github에서 자료도 찾아봄. - 2일차 mod 프로젝트 구성하고 연동해서 게임 화면에 뭐라도 띄워보는게 목표였는데 c# dll 빌드 환경 설정에만 시간을 70% 쓴 듯. 역시 초기 설정이 제일 어려워 으으.. 그런데 이게 steam을 통해서 실행하는 프로세스의 dll 이다보니 비주얼 스튜디오로 attach process를 해도 중단점이 안잡히더라고. 그래서 로그 베이스로 개발해야하는데 dll 현재 폴더가 아니라 아예 다른 곳에 남더라. unity 프로젝트가 항상 그런건지는 잘 모르겠지만 어쨌든 그 경로를 찾아내서 snaketail로 실시간 로그를 보며 개발했어. C:\Users\[YourUsername]\AppData\LocalLow\TeamSoda\Duckov\Player.log 이 고난을 거치며 프로젝트 구성을 넘어가니까 만드는 것 자체는 크게 어렵지 않았어. 아예 새로운 ui 컨트롤러 구성은 또 다른 영역일 것 같지만.. 이 날은 화면 가운데에 대충 텍스트 박스까지 생성하고 현재 무게 값 연동까지 끝내서 초과 달성한 것으로 만족. - 3일차 텍스트 박스를 hp바 아래의 특정 좌표로 맞춰놓으니까 꽤 그럴듯해졌는데 나중에 해상도 바꿔보고 절망 크윽.. 해상도에 따라 설정한 좌표가 달라질 필요가 있어서 그냥 fhd 전용 툴로 쓸까 한참을 고민하다가 심기일전하여 제대로 만들어보기로 함. 텍스트 박스 생성할 때 hp바 객체를 찾아다가 부모로 설정하고 상대좌표로 바꿔놓으니 다른 컨트롤이랑 연동되어 잘 나오고 해상도 바꿔도 이슈없이 잘 나와서 만족. 이렇게 hp바와 연결해놓으니까 이게 꺼지면 같이 꺼지기 때문에 LootView(줍는 화면)에서 따로 만들어야 하는 작업이 남았어. 한두줄 짜리 작업이지만 전체 코드가 없는 mod 개발이다보니 로그만으로 추적하는게 쉽진 않더라. 100번은 껐다 킨듯. 그래도 시간은 내 편. - 4일차 어제부터 계속 이상하게 동작하던 주요 원인을 알아냈어. LootView(줍는 화면)에서 무게가 표시될거라 추정되는 WeightHUD 인스턴스를 찾아와서 그 아래쪽에 배치를 했는데 그 텍스트 박스 위치가 랜덤하게 변경되는거야. 몇번은 잘 되는것 같다가도 가끔 다른 곳(아마도 화면 바깥)으로 이동해리면 안보여서 이게 생성이 안된건지 알 수가 없어서 참 고생했어. 꽤 고통받다가 알아냈는데 WeightHUD 객체가 고유하지 않고 두 개의 UI에서 따로 생성하여 사용하고 있어서 생성 순서에 따라 얻어오는 객체가 매번 달랐던거야. 기존 로직은 첫번째 객체만 가져와서 사용하고 있었는데 이걸 알고 나서는 그 타입의 객체 목록 전체를 검색하여 정확한 인벤토리 창 아래에 있는 객체로 연결하니 그제서야 텍스트 박스가 고정된 위치에 잘 나왔어. View가 변경되는 OnActiveViewChanged 이벤트 호출 시점에는 내가 연결할 부모 UI 객체들이 아직 생성된 상태가 아니라서 내 객체의 생성 타이밍 조절하는거나, 값이 변경될 때만 UI를 갱신한다던가, scene 전환 시 다른 버그는 없는지 자체 qa를 하면서 자잘한 것들을 처리한 후에야 비로소 steam에 완성된 mod를 공개할 수 있었어. https://steamcommunity.com/sharedfiles/filedetails/?id=3601687155 - 소회 게임을 좀 편하게 하고 싶어서 시도해본건데 어떻게든 완성하긴 했네. mod 개발하면서 난관에 부딪힐 때마다 검색해봐도 인터넷에는 mod 적용 가이드뿐이라 간단하게나마 mod 개발에 대해 글로 정리해보고 싶었어. steam workshop(창작마당)에 올려놓고 구독자가 늘어나는거 보니까 흐뭇하네. 만든 mod는 github에 공개해놨으니 심심한 사람들은 한번씩 구경해 봐. https://github.com/frogred8/duckov_weightviewer 이전글: https://frogred8.github.io/ #frogred8 #duckov #mod
steam workshop(창작마당)

계속 올라가는 구독자

실제 개발환경
