|
2026-09-01 16:46
조회: 8,936
추천: 84
제리호크 UI 코어파트 개발 후기(장문)제리호크 UI 코어파트 담당 개발자 입니다. 그게 뭔데? 하시는 분들은 아마 아래 글들을 보시면 대충 감이 오실것 같습니다. --------- UI 최근 근황 https://www.inven.co.kr/board/lostark/6271/4061863?my=chuchu V2 개발 : https://www.inven.co.kr/board/lostark/5347/163027 프로토타입 : https://www.inven.co.kr/board/lostark/5347/162946 --------- 예... 뭐 그렇습니다. 레이드 하면서 일일이 확인하기 번거로운 아크그리드 스택을 따로 ui로 보기 편하라고 만든 프로그램입니다. (제가 늙크크라서기도 합니다) 간단하게 원리를 설명드리자면, 원하는 아이콘 (아크그리드 스택 2종)을 지정한 범위에서 찾아 그 아이콘 위에 있는 숫자로 버프 스택을 UI에 뿌려주는 방식입니다. 화면인식 특유의 딜레이를 줄이고자 꽤 고심한끝에 수십 ms 이내에서 구현하는데 성공했습니다. 물론, 현재도 화면인식 특유의 한계상 특정 해상도, 혹은 버프아이콘 크기 환경에 따라 인식이 도중에 풀리거나하는 문제가 종종 보고되는것 같습니다만 잘 되시는분은 잘 되고, 안되시는 분은 안되고.... 뭐 그렇습니다. 인식률 관련 개선도 어떻게 진행할지 따로 천천히 공부도 좀 해보고 있습니다. 원래는 제가 혼자 써보려고 만들었던걸 우연히 비슷한 고민을 하고계시는 '튀김'님이 계셔서 호크 직게에 배포하기 시작했고, '튀김'님이 멋진 ui를 입혀주신 v2 이후의 버전이 탄생했습니다. (나름 직게에서 의견 수렴도 하시고, 고민도 많이 하신 흔적이 보였습니다. 고생해주신 '튀김'님께 감사드립니다.) 개발 히스토리는 이쯤 해두고, 사실 원래 하고 싶은 얘기를 좀 풀어볼까 합니다. --------------------여기서부터 진짜 하고 싶은 이야기들입니다. 긴 글이 읽기 싫으신 분들은 아래 네줄요약 읽으시면 됩니다. 개발하면서 느꼈던건 여러가지가 있습니다만, 가장 크게 느꼈던 부분은 '이걸 굳이 화면인식같은 온몸비틀기' 로 개발을 해야하는가, 였습니다. 목적은 단순합니다. '보기 힘든 버프아이콘 스택 수를 보기 편하게 하고싶다' 그런데 그걸 달성하기 위한 과정 속에서, 고려해야할 부분이 크게 두 가지 있었습니다. 1. 어떤 방식으로 구현할 것인가 2. 사용하더라도 문제 없는 비인가 프로그램일 수 있나 1번 은 설명하기엔 너무 지루하고 현학적인 내용이므로 굳이 설명하지는 않겠습니다. 진짜로 하고싶은 얘기는 2번에 관련된 이야기 입니다. 만약, 제가 인식오류 없이 정확하고, 빠르고, 버프창에서 가려져도 문제없이 동작하는 프로그램을 만들고자 했다면 로스트아크 클라이언트가 다루는 정보중 스택 정보를 빼와서, 그걸 화면에 띄우면 됩니다. 그러면 '기능상으론' 아무런 문제가 없습니다. 화면인식보다 정확하고, 빠르고, 가볍게 동작합니다. 심지어 버프창에서 아이콘이 보이지 않게되더라도 표시 할 수 있을겁니다. 그런데, 클라이언트 내부 데이터나 메모리에 직접 접근하는 순간, 적어도 제가 생각하는 안전선은 명백하게 넘어가게 됩니다. 정확도나 성능은 훨씬 좋아지겠지만, 게임 클라이언트가 외부에 제공하지 않는 정보를 직접 취득하는 방식이기 때문입니다. 물론 화면인식 방식이라고 해서 공식적으로 허가받은 프로그램이 되는 것은 아닙니다. 제리호크 UI 역시 그 부분에서는 예외가 아닙니다. 그래서 기능을 만들 때도 제가 넘지 않을 선을 정해두고 개발했습니다. 이를테면, 페널티가 발생하는 입력을 굳이 프로그램이 막지 않게 한다거나. *실제로 구현할까, 했던 생각은 했지만 굳이 실행으로 옮기진 않았습니다. 그럼 이쯤에서, 다시 제가 이걸 개발하면서 크게 느꼈던 부분을 되짚어 보겠습니다. '이걸 굳이 화면인식같은 온몸비틀기' 로 개발을 해야하는가. -------- 아크그리드 라는 시스템이 도입된지도 꽤 많이 지났습니다. 찾아보니 어느덧 1년이 좀 지난 것 같네요. 로스트아크는 꽤 많은 클래스들이 있는 rpg 게임입니다. 하나의 클래스에도 2가지 직각 + 직각별 아크그리드 조합에따라 파생되는 전투 스타일의 차별화까지 생각하면 절대 고려해야할 볼륨이 적지 않으리라 내심 짐작하고 있습니다. 다만, 그렇다고 해서 손을 놓으면 안되는 부분도 아직 많이 남아 있는 것 같습니다. 그런 부분들을 일일이 열거하기엔 글이 지금도 긴데 말도 안되게 더 길어질테니, 이번 제리호크 ui 관련으로 국한해서 이야기를 좁혀보겠습니다. 제리호크 ui같은게 왜 튀어나왔을까요. 간단합니다. ㅈㄴ 불편하니까요. 사실은 제가 거의 외면하고 있던 부분이다가, 개발 과정 중 직면한 사실들은 아래와 같습니다. 남은 서포터 버프 시간, 현재 내가 갖고 있는 버프는 어떤게 있고 어떤 효과를 갖고 있는지, 어떤 버프나 효과가 얼마나 중첩되있고, 그 중에서 사용할 수 있는게 있다면 몇 번이 남았는지, 그 놈의 로스트아크식 버프아이콘 단순 나열만 보고 효과과 수치, 남은 시간을 직관적으로 파악할 수가 없습니다. 저는 그냥 제리호크 아크그리드 운명 아이콘가지고 스택을 계산하려고 했을 뿐인데 위와같은 문제점이 그냥 보이더란 말입니다. 심지어 이 나열은 전투가 진행됨에 따라 버프아이콘 위치까지 막 정신없이 뒤섞입니다. 아이콘은 간혹 색깔이 비슷한것도 있고, 아이콘이 반짝거리는것도 있습니다. 이런 상황에서 제 비루한 주변시야와 금붕어에 필적하는 기억능력은 다음과 같은 결론을 도출합니다. '아 그냥 뭐 어련히 공증, 버프 돌고있겠지, 전분 까보면 알겠지, 데미지가 이상하지만 뭐 그냥 내가 뭘 잘못해서 그렇겠지, 데미지가 이상하면 예둔이 터졌겠지' 예, 버프 축약이 있긴합니다. 그러니 제가 오버해서 서술했다, 라고 느끼신분은 제 글에 비추를 때리셔도 달게 받겠습니다. 근데 저는 패턴 피하기도 바쁘고, 그놈의 카운터, 저가보기도 바쁩니다. 그 놈의 나이란게 들면 뭐 그렇게 되는거 같습니다. 축약을 했든 안했든 그게 별로 도움이 되는 것 같지가 않단 말입니다. 그런 와중에, 여기에서 표시되는 정보에 차별이 있으면 어떨까요. 누구는 필요한 스택, 게이지 등이 캐릭터 옆에 예쁘게 표시되고, 누구는 체력바 위에서 내가 찾고자 하는 아이콘을 찾아서 스택과 남은 시간을 봐야합니다. 인간은 결국 적응의 동물이라고, 이런 차별도 익숙해지려면 뭐 언젠가는 익숙해지겠죠. 근데 적어도 이런 '정보제공' 에 있어서는 클래스 격차가 있어서는 안된다고 생각합니다. 왜 비슷한 메커니즘을 가진 캐릭터 끼리도 '정보제공' 에 차이가 발생할까요. 그게 하나의 밸런스라고 생각할 수 도 있겠지만, 선뜻 동의하고 공감하기엔, 적어도 저에게는 망설여지는 부분이 있습니다. -------- 그래서 결론은 뭐냐? 비슷한 문제를 겪고 있는 클래스들이 몇몇 있는 것 같았습니다. 의외로 신캐인 차원술사도 그렇다는 얘기가 있어 꽤 의외라고 생각했습니다. 신캐는 그런부분 공들일 줄 알았는데...? 아무튼, 그런 클래스들을 위한 위젯들도 만들어 볼까합니다. 언제까지? 스마게가 대대적인 전투 ui 개편을 할 때 까지. 그 때가 되면 필요없어지고 버려지는 프로그램들이겠지만, 그런 날이 오는게 더 좋은거 아니겠습니까. 적어도 제가, 주변의 지인이, 또 누군가가 필요로 한다면 만들어 나가 볼 생각입니다. 본업이 있어서 개발속도가 빠르진 않겠지만, 적어도 천천히 나가다보면 뭐라도 되겠죠. 다음에 또 글을 쓸때는 새로운걸 가져와보겠습니다. 긴 글 읽어주셔서 대단히 감사합니다. -------------------장문 알러지를 위한 4줄 요약 1. 나다 2. 제리호크 ui는 돌파고, 초파고, 젬파고처럼 화면인식 기반으로 개발했다 ㄹㅇ로 3. 로스트아크 각종 버프아이콘 표시, 남은시간, 스택 표시 ㅈㄴ 구닥다리다 4. 스마게 니들이 대대적 개선해 줄 때까지 내가 하나씩 만들어 볼 거다
EXP
16,807
(30%)
/ 18,201
|




라인아크