어느정도 애드온의 형태를 갖추었고, 내가 구현하고자 하는 기능들도 정상적으로 동작함을 여러번 테스트했다. 이제 유저들에게 내 애드온을 배포해볼 차례였다.
일단 테스트버전이라는 이름으로 간단하게 배포해보고 싶었다.
개발자들은 git에 익숙하지만 일반 유저들은 익숙할리 없었기에 단순 압축파일로 만들어 인벤 커뮤니티에 애드온 설명과 함께 배포했다.
조회수 4000, 추천수 80정도의 반응을 얻어내어 생각보다 많이 뿌듯했다.
사실 별 반응이 없었다면 업데이트를 멈추지 않았을까 생각한다.
코드에 문제가 있거나 사용 중 불편한 부분, 버그를 제보해 달라고 코멘트를 달았지만 관련한 반응은 전혀 없었다... 분명 버그가 있었을텐데?
아무튼 테스트버전을 무사히 배포했다!
위 테스트버전을 배포한지 한달정도 지났다. 와우도 새 시즌이 출시되었고 내부 API들도 업데이트되었다.
난 시즌이 열리자마자 API업데이트 목록부터 확인했다 (제발 목록에 내가 사용한 API가 없기를 바라며)
주요 기능중 하나인 아이템 드랍 추적에 사용하던 API와 EVENT가 삭제되었다.
변경도 아니고 냅다 삭제되어버렸다. 당연하게도 시즌 업데이트 후 내 애드온은 정상적으로 동작될 수 없었다. 이 부분을 수정하여 재배포해야했다.
기존 동작방식
LOOT_HISTORY 데이터가 정리되어 화면으로 보내지는 LOOT_HISTORY_AUTO_SHOW 이벤트를 트리거로 삼아 C_LootHistory.GetItem API로 해당 데이터의 아이템 고유 값을 당겨와서 기록
새 동작방식
아이템 드랍시 채팅창에 출력되는 문구를 분석해 데이터를 얻기로 했다.
CHAT_MSG_LOOT EVENT 이벤트의 매개변수로 넘겨지는 메시지를 :단위로 쪼개 메세지를 제외시키고 아이템의 고유 번호만을 찾아내어 기록
조금 더 깔끔하게 아이템의 정확한 데이터만을 훔쳐서(?) 기록해주고 싶었지만 방법을 찾지 못했다.
새로 업데이트된 LOOT_HISTORY API들은 매개변수로 구조체를 주고받는데 어떻게 정의된지, 어떤 멤버 변수에 접근해야하는지, 이 데이터가 맞는지 확신할 수 없었다. (레이드 특성상 테스트의 기회가 적은편)
결국 상대적으로 테스트에 용이한, 레이드에 진입하지 않고서도 어느정도 테스트가 가능한 채팅창 String을 가져오게 되었다.
시즌 변경에 따른 네임드 이름, 개수 탭 등을 변경했다.
드랍테이블에 있는 아이템만 기록했으므로 새 시즌 드랍테이블로 변경했다.
골드를 나눌 때 파티장에게 넘겨주고 개인분배하는 일이 많았다.
따라서 파티당 골드 (개인 골드 x 5)를 메인 패널에 표기해주도록 변경했다.
curseforge는 각종 게임의 애드온을 호스팅하는 웹사이트다.
애드온의 버전 관리를 도와주는 앱도 지원하고 있어 와우 애드온 공유에 흔히 사용하며 사용자도 많은 편.
여기에 업로드하지 않으면 내 애드온을 업데이트할때마다 커뮤니티에 새 글을 써야하고 사용자가 파일을 일일히 다시 받아 재설치해야만 한다.
기존 커뮤니티에 썼던 글을 토대로 애드온의 기능을 간단히 소개해 업로드해보았다.
내가 냅다 업로드한다고 내 애드온이 바로 게시되진 않았다. 운영진의 승인을 받아야 게시물이 공개되는 형태였다.
https://legacy.curseforge.com/wow/addons/hisop-auction-helper
게시된지 일주일정도 지난 지금 160정도의 다운로드수가 기록되었다. 이정도면 만족!