![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/009.gif)
이 문서에서는 Haerubot(이하 해루봇)의 기능 설명과 필요하다면 구현 로직까지 안내합니다.
기능 설명이 있어서 설명서이긴한데……, 거의 개발 관련 비하인드라고 보셔도 됩니다.
설명이 아주 많아서 글이 깁니다. 다른 문서와는 달리 가독성 따위는 생각하지도 않았습니다. 각종 TMI가 판치는 문서이지만 놀랍게도 유용한 정보는 하-나도 없습니다. 그냥 심심한데 궁금한 분들만 가볍게 읽어 보시기 바랍니다.
# Intro 메인 화면
해루봇은 크게 6개 영역으로 구성되어 있습니다.
실질적으로 사용된 View는 총 4개지만, 아무튼 기능상으로 분류해보면 6개 영역이 맞습니다.
새로운 해루봇은 새로운 마음으로 제작했기 때문에 MVVM 패턴을 따랐습니다. Model과 View와 ViewModel의 약어입니다. 망할 패턴 적용 때문에 쥐어 뜯긴 머리카락이 한 무더기입니다. 처음에 설계 방향을 잡는 것이 정말 어려웠습니다. 이해가 잘 안 되더라고요. 솔직히 지금도 진짜로 정말로 제대로 설계했는지는 잘 모르겠습니다. 그렇지만 여차저차 굴러가니 어떻게든 된 게 아니겠습니까? (참고로 저는 전문 개발자가 아닙니다. 그냥 어쩌다 보니 취미로 즐기는 중이에요.)
아무튼 코드 비하인드에 로직을 바로 매핑하는 것은 쉬운 방법이지만, 한편으로는 유지 보수가 정말로 어렵습니다.
이미 호되게 겪었으니 이번에는 좀 돌아가는 방법을 선택했고, 그래서 개발 완료가 더 늦어졌습니다. 핑계 아니고 진짭니다. 그냥 쉽게 갔으면 벌써 다 만들고도 남았을 건데, 유지 보수가 뭐라고 참…….
#1 공지사항 영역
제가 유저분들께 긴급으로 전할 말이나 상시로 띄워 둘 공지사항을 위한 영역입니다.
'자세히 보기'를 클릭해서 웹 브라우저를 통해 링크를 열 수 있습니다. 그리고 일괄 새로고침을 통해서 전체 동기화를 시도하면, 해당 공지사항 데이터도 같이 받아 오게 됩니다. 전보다 좀 더 유동적으로 변했습니다.
그런데 단순한 하이퍼링크도 MVVM 패턴에서는 복잡하더군요. 전처럼 그냥 HTML에서 a 태그 처리하는 것처럼 대충 때려 박으면 되는 줄 알았더니 아니었습니다. 진짜 별 것 아닌데 비교적 힘겹게 구현했습니다. uri 데이터를 convert 해서 이렇게 저렇게…….
어쨌든 공지사항 영역에서의 기능은 서버에서 데이터를 파싱 해 와서 링크를 연결하고 스타일을 적용하는 것이 전부입니다. 진짜 중요한 공지는 빨간색으로 표시가 돼야 여러분들이 눈길을 주실 테니까요. 단순한 텍스트 내용 변경인데 클라이언트 자체를 업데이트시킬 수는 없으니 서버에 데이터를 게시해 두고, 그 파일을 고치는 식으로 사용합니다.
#2 ACT 관리 및 실행 영역
이 영역에는 오직 ACT를 위한 기능성 버튼들을 배치했습니다.
- ACT 연동 : 기존에 설치한 ACT를 현재 실행한 Haerubot과 연동합니다.
로컬에 설치된 Advanced Combat Tracker 폴더를 열면, 내부 파일 목록을 가져와서 무슨 플러그인과 오버레이를 사용 중인지 확인합니다. 물리적인 파일을 기준으로 데이터를 생성하는 과정이기 때문에 가장 중요한 부분이기도 합니다. 예전 해루봇에서는 그냥 폴더만 연결하고 플러그인을 재설치할 것을 유도했기 때문에 완벽한 '연동'이라고 표현하기는 어려웠습니다.
문제가 있다면 업데이트 판정 부분입니다. 해루봇은 설치 날짜와 서버 업로드 날짜를 비교해서 설치 날짜가 서버 업로드 날짜보다 이전이면 업데이트를 하라고 판정합니다. 그런데 예전 해루봇에서는 플러그인만 설치 데이터를 만들어 놓고, ACT는 그렇게 하지 않아서 도무지 방법이 없더군요. 극단적으로는 연동을 시도할 때 설치된 항목의 최신 파일을 전부 다 다운로드한 후, 압축 파일의 스트림을 읽어 수정된 날짜를 얻어와서, 로컬 파일의 수정된 날짜를 비교하는 방법도 있겠지만, 그로 인해 필요한 동기화 토큰과 다운로드에 들어가는 시간 낭비가 더 손해인 것 같았습니다.
이런저런 고민을 해봤다가 그냥 좋은 게 좋은 거라고 무조건 업데이트 판정을 해서 최초 1회 업데이트를 하게 하고, 설치 일자를 오늘 날짜로 처리하는 식을 채택했습니다. 유저 입장에서는 조금 귀찮을 수 있겠지만 제 입장에서는 가장 안전한 방법이더군요. 그래도 신규 해루봇을 통해 백업 파일을 만들고, 그걸로 복원하고 연동할 때에는 날짜 데이터가 있기 때문에 무분별한 업데이트 판정을 하지 않습니다. 어서 과거의 잔재(=옛날 백업 파일)들이 다 사라졌으면 좋겠네요……. - ACT 설치 : 최신 ACT를 설치합니다.
설치를 누르는 순간 웹 데이터를 파싱 해오고, 가장 최신의 다운로드 주소를 통해 파일을 다운로드합니다. 사용자가 지정한 경로에 압축을 풀고 기본적인 설정을 시도합니다. ACT를 순정으로 쓰기에는 불필요한 설정들이 꽤 있어서 설치할 때 xml 작업을 진행하도록 설정해놨습니다. 원래는 그냥 미리 설정한 파일을 다운로드해서 덮는 식이었는데, ACT도 버전이 바뀌면서 뭔가 파일 내용이 바뀌고 그래서요. 해루봇에서 직접 xml 값을 변경하는 쪽으로 노선을 틀었습니다. 이렇게 하는 것이 더 안전합니다. 설치되는 PC 환경을 기준으로 모든 값들이 매핑되기 때문에 불필요한 오류를 줄일 수 있습니다. 굳이 단점을 꼽자면 한 번 껐다 켜야 해서 귀찮다는 점이죠. - ACT 삭제 : ACT 및 모든 설정 파일을 완전히 삭제합니다.
삭제는 그냥 폴더를 날리는 행위긴 한데, 예전 해루봇과 다른 점을 꼽자면 설정 폴더입니다. 예전에는 설정 폴더를 살렸었죠. 왜 그랬을까 곰곰이 생각해보니 'OverlayPlugin'때문이었던 것 같습니다. 설치할 때마다 해야 했던 추가 파일 설치가 너무 번거로우니까요. 설정을 남겨 두면 편하려나 싶었죠. 그런데 이제는 다 날립니다. 깔끔하고 완전하게. 버전이 달라지면서 더미 파일 쌓이는 것도 좀 그렇고 설정 충돌 나는 것도 있는 것 같아서 말입니다. 아, 그래도 플러그인의 개별 삭제일 때는 이전처럼 설정을 살려둡니다. 나름 타협점이죠. - ACT 백업 : 현재 사용 중인 ACT 및 모든 설정 파일을 백업합니다.
Hojoring을 제외한 다른 플러그인들은 대부분 다 ACT 폴더 안에 설정이 저장되니까 백업 과정이 수월하더군요. 백업은 ACT 폴더와 설정 폴더를 같이 묶어 하나로 합치는 과정입니다. 이번에도 용량 제한을 두게 됐습니다. 오래 걸릴수록 UI 반응이 길어지니까요. 용량 제한은 로그 파일 기준 10MB를 넘기면 백업을 할 수 없게 설정했습니다. 삭제하고 다시 시도해야죠.
그리고 이 부분이 참 고민이 많았던 게 UI Freezing이라고 표현해야 할까요? 예전 해루봇에서도 압축할 때 UI가 멈추는 현상이 있었습니다. 비동기로 처리를 해서 UI 스레드를 살렸어야 했는데, 당시에는 그런 처리를 하지 못 했습니다. 하지만 유저 입장에서는 프로그램이 멈춘 것처럼 보이니까 굉장한 불편한 상황이 됩니다. 이 부분을 해결하고자 인스톨러 클래스를 완전히 다 수정했는데, 그 고통을 다시 되새겨보니 너무 괴롭습니다. 어쨌든 모든 것은 쉽게 가려고 하면 망합니다. - ACT 복원 : 백업 파일을 생성한 시점으로 복원한 ACT를 설치합니다.
복원은 정말 고민이 많았습니다. 전처럼 압축 풀기부터 시작해서 파일 이동, 데이터 처리까지 한꺼번에 하기에는 생각해야 할 것들이 너무 많더군요. dat 파일 유무로 업데이트 판정을 내리는 지나치게 간단했던 이전과는 달리 지금은 바이너리 데이터 파일로 저장하는 식이니 처리가 조금 복잡해지더라고요. 그래서 그냥 연동 기능을 재사용하라고 설계했습니다. 멀쩡한 연동 기능을 썩히는 것은 아깝다고 생각해서요. 복원은 단순하게 폴더만 복원하고, 실질적인 데이터는 연동을 통해 연결하도록 했습니다. 의도에 딱 맞아떨어져서 좋았습니다.
그리고 ACT를 연동하는 순간부터 ACT 폴더와 로그 폴더 경로를 실시간으로 감시하기 시작합니다. 파일의 추가/삭제 등 변경 이슈가 있을 때마다 데이터를 갱신하도록 설정했습니다. 만약에 ACT 폴더 안에 로그 폴더가 있으면 ACT 폴더만 감시하게 됩니다. 이 기능을 넣은 이유는 용량이 부족해서 플러그인 설치를 제대로 하지 못했다는 제보를 받았기 때문입니다.
일단은 try-cacth로 용량 부족으로 인해 설치를 못 하면 중단 로그를 출력하도록 설정해놨습니다. 서버 측에 size 정보가 있긴 한데, 압축 풀면 또 다르고 추가 파일이 있는 플러그인인 경우 용량이 더 필요할 텐데 그를 확실하게 추정할 방법이 없어서요. 그렇다고 × 3배 정도 넉넉한 용량 확보가 되면 설치 가능(!)이라고 제한하기도 뭣하고 해서 엄격한 제한을 두진 못했습니다. 좀 아쉬운 부분입니다.
모든 로그 영구 삭제 기능이 생겼습니다. 예전 해루봇의 로그 탭 활용도가 너무 떨어지는 것 같아서 말입니다. 탭을 과감히 없애고 대신 짤막하게 용량과 개수 정보만 표시합니다. 우리에게 중요한 것은 '로그가 얼마나 쌓였는가?'이기 때문입니다. 그리고 로그를 일일이 삭제하는 것도 불편해서 그냥 한 번에 쓱삭하기로 했습니다. 만약에 하나하나 삭제하고 싶다거나 하시는 분들은 나중에 밑에서 설명하겠지만 로그 폴더 여는 버튼이 있으니 거기서 직접 삭제하시면 되겠습니다.
게임 런처 언어 설정을 콤보박스로 구현했습니다. 원래는 라디오 버튼으로 만들려고 했는데 자리는 없고 언어는 많아서요. 확실히 이 부분은 예전보다 조금 불편해진 것 같긴 합니다. 예전에는 설정에 언어 설정을 한 번만 해두면 글로벌 서버 언어는 하나로 고정돼서 그냥 원터치 클릭하면 되는데, 지금은 콤보박스에서 언어를 선택하고 실행 버튼을 클릭해야 합니다. 약간의 불편함에도 불구하고 회심의 콤보박스라서 바꾸고 싶은 생각이 전혀 없다는 게 함정입니다. 왜냐하면 저 콤보박스의 유연한 Xaml 스타일을 구현하느라 정말 진땀을 뺐거든요. 제발 전처럼 돌려 달라고 하지 마세요. 슬플 것 같으니까요…….
실행 버튼은 많이 스마트해졌습니다. 실행 버튼을 클릭하면 가장 먼저 언어에 맞게 xml 설정을 변경합니다. 이후 진짜 실행을 위해서 방화벽 상태를 확인하고, 혹시라도 허용 항목에 없다면 추가를 합니다. 그리고 관리자 권한으로 실행을 하고, 사용자에게 친절한 안내 로그를 찍어준 뒤 해루봇을 자동으로 종료하게 구현했습니다. 이 정도면 어지간해서는 집계가 안 될 일이 없을 거라 생각합니다. 그래서 방화벽 처리 버튼도 없앴습니다. 이미 기본으로 적용하기 때문입니다.
#3 동기화 영역
아, 이 부분 정말로 진짜로 제 사심이 가득 담긴 곳입니다.
'버전을 파싱하지 못했습니다' 오류를 더 이상 이메일로는 받고 싶지 않아서 확실하게 구현했습니다. 처음에는 설계할 생각이 없었는데 꽂히니까 도저히 안 되겠더라고요? 그리고 limit 조회에는 따로 제한이 없는 것 같아서 이건 진짜 구현해야 한다고 생각했습니다.
전체적인 순서는 자동 동기화 스위치 - 업데이트를 확인한 날짜 및 시간 - 동기화 토큰 (남은 횟수/최대 횟수) - 동기화 토큰 초기화까지 남은 시간 - 일괄 새로고침 버튼입니다.
동기화란 서버에 플러그인이 업로드 언제 됐는지 조회하고, 내 컴퓨터에 설치한 플러그인과 비교해서 업데이트를 해야 하는 것인지 아닌 것인지 판단하는 작업이라고 생각하시면 되겠습니다. 그리고 동기화 토큰이란 서버 api에 접근할 수 있는 횟수를 지칭합니다.
해루봇은 유저의 정보를 아예 가지고 있지 않기 때문에 미인증 상태로 서버 api에 접근을 합니다. 인증하면 api 접근 횟수가 늘어난다고 하는데 굳이 필요하나 싶네요. 미인증 상태의 api 접근 횟수는 시간당 60회로 제한돼 있습니다만, 설치 때나 후드득 빠져나가지 실제로는 잘 안 쓰게 되거든요.
횟수가 제한되어 있는 만큼 유동적인 관리를 할 수 있도록 자동 동기화 기능을 제공하고 있습니다. 토글스위치를 켜면 해루봇을 켤 때마다 설치한 플러그인의 새로운 업데이트 정보를 받아 옵니다. 반대로 토글스위치를 끄면 원하는 플러그인의 새로고침 버튼을 클릭해서 최신 상태를 확인할 수 있습니다.
일괄 새로고침 버튼을 클릭하면 설치한 플러그인과 ACT, 해루봇과 해루봇 업데이터 정보까지 전부 다 조회합니다. 그리고 해루봇을 이루고 있는 콘텐츠 데이터도 갱신하도록 설계돼 있습니다. 공지사항이나 플러그인 및 오버레이 정보를 자유롭게 최신 상태로 갱신할 수 있다는 점이 핵심이죠. 예전에는 무조건 껐다 켰어야 했는데 말입니다.
사용해 보면 아시겠지만 동기화 관련된 로그가 엄청 많습니다. 이제 더는 저런 메일이 안 오길 간곡히 바랄 뿐입니다. 충분히 설명했다고 생각하거든요. 보시면 압니다. 보시면…….
#4 시스템 로그 영역
이 부분 역시 동기화 영역에 이어 제 사심이 듬뿍, 아주 듬뿍 들어간 곳입니다.
해루봇이 지금 뭘 하고 있는지, 뭐가 문제인지 여러분들께 확실하게 의사를 표현합니다. 전부는 아니지만 대부분의 상호작용에는 로그를 출력합니다. 이제 로그를 보시면 대략적으로 무슨 문제인지, 뭐가 원인인지 알 수 있을 겁니다. 이렇게 뭐라도 보이는 것이 있으면 저와 여러분들 사이의 소통이 조금은 편해지지 않을까 싶어서 특별히 신경 써서 구현했습니다.
진짜 제일 먼저 설계한 부분이 바로 이 로그 클래스입니다.
기념비적인 사안이니 조금 민망하지만 코드를 공개합니다(!)
using System;
using System.Collections;
using System.ComponentModel;
using System.Windows;
using System.Windows.Media;
using Haerubot.ViewModels;
namespace Haerubot.Models
{
/// <summary>
/// 모든 시스템 활동 로그를 스크롤 뷰어에 출력하는 클래스이다.
/// </summary>
public class Log : ViewModelBase
{
private string _message = "";
public string Message
{
get
{
//경고 로그에는 중대한 중지 소리 재생
//if (Color == Index.DANGER)
// System.Media.SystemSounds.Hand.Play();
//날짜 붙여서 로그 출력
return $"[{DateTime.Now.ToLocalTime()}]\n{_message}\n";
}
set
{
_message = value;
}
}
/// <summary>
/// 로그 출력 컬러
/// </summary>
public Index Color { get; set; } = Index.NORMAL;
/// <summary>
/// 브러쉬 색상 적용 (뷰 바인딩)
/// </summary>
public SolidColorBrush ForegroundBrush
{
get
{
return (SolidColorBrush)ConvertToBrush[Color];
}
}
/// <summary>
/// 로그 출력 컬러 인덱스
/// </summary>
public enum Index { DANGER, WARNING, NORMAL, OK };
/// <summary>
/// 로그 출력 컬러 브러쉬
/// </summary>
public Hashtable ConvertToBrush = new Hashtable()
{
{ Index.DANGER, (SolidColorBrush)Application.Current.FindResource("danger-base") },
{ Index.WARNING, (SolidColorBrush)Application.Current.FindResource("secondary-base") },
{ Index.NORMAL, (SolidColorBrush)Application.Current.FindResource("text-darken") },
{ Index.OK, (SolidColorBrush)Application.Current.FindResource("primary-base") }
};
}
}
대충 로그로 찍을 메시지에 날짜와 시간을 덧붙이고, 종류에 따라 색상 스타일을 적용한다는 뜻입니다.
원래는 DANGER 로그가 발생하면 중대한 중지 소리를 출력하게 설정했었는데, 하도 중단 로그들이 많이 뜨다 보니까 시끄러워서 꺼버렸습니다. 😂😂😂
해쉬 테이블로 솔리드 컬러 브러쉬 스타일을 연결하니 속도가 굉장히 빠릅니다. 이때까지만 해도 재미+1이었는데…….
진짜 해루봇 따위 초-초-초-간단한 프로그램일 줄 알았는데 별의별 예외 처리가 다 있고, 플러그인도 제각각에다가, 설정도 뭔가 이상하게 다 다르고, 생각해야 할 것도 너무 많고, 갑자기 다시금 괴롭네요. 하…….
각설하고 저걸 나중에 다른 ViewModel로 출력할 때 조금 애먹긴 했습니다. 망할 MVVM은 쉽게 넘어가는 것이 하나도 없었기에, 어찌 보면 당연한 수순인 것 같기도 합니다. 여차저차 메신저로 넘기고 받고 그렇게 저렇게 구현했습니다. 처음으로 로그를 스크롤 뷰어에 찍었던 4월 25일, 그제야 드디어 한 발짝 뗐다는 생각이 들었습니다.
로그는 정말로 여러분들께 '해루봇은 일하고 있어!'를 보여줄 목적으로 만들었었는데, 최대 수혜자는 사실 접니다. 개발 당시 디버깅할 때 정말로 큰 도움을 받았습니다. 웹 데이터 파싱 단계에서 비동기 작업을 진행하는데, UI가 변경되지 않는 원인을 도저히 모르겠더라고요. 그걸로 스트레스 엄청 받고 며칠을 삽질했었는데, 시스템 로그 영역에서 로그 출력 시간이 붕 뜨길래 그제야 눈치챘지 뭡니까? 그 순간을 알아차렸을 때, 재미+MAX, 잠도 못 잤습니다. 너무 재밌는데 힘들어서. 😂😂😂
#5 바로 가기 영역
이 부분은 내부 로직보다는 디자인에 시간이 더 오래 걸린 유일한 부분입니다.
기능을 소개하자면 순서대로 해루봇 폴더 열기 - ACT 폴더 열기 - 로그 폴더 열기 - (오버레이)스크린샷 폴더 열기 - 이메일로 문의하기 - 인벤 ACT 게시판 - 해루 블로그입니다.
뭐 특별한 것은 없고 'ACT를 연동하면 폴더를 열 수 있다!'입니다. 그리고 관련 사이트 홍보 정도입니다.
이 부분에서 신경 썼던 점은 'ACT가 없을 때는 버튼이 동작하면 안 되는데 아예 안 보이게 해야 할까, 비활성화를 시켜서 그래도 UI는 남겨둘까?'였습니다. ACT 설치 유무가 다른 ViewModel에서 결정되기 때문에, 서로 간의 통신도 필요한 상황이었죠. 본 기능은 단순한 링크라서 별로 까다로울 것이 없었는데, 연동 때문에 좀 골치가 아팠던 기억이 나네요.
게다가 포인트가 되는 부분이기에 아이콘 색이나 형태를 어떻게 할까 등 UI 요소에 대한 고민을 깊게 했었습니다. 버튼을 올렸을 때 색이 어떻게 변해야 하나, 애니메이션을 추가할까 등등 각종 고민을 하다가 그냥 색만 다소 튀게 바꾸는 식으로 마무리 지었습니다. 아무래도 해루봇이 전체적으로 좀 다크 하다 보니까 약간의 포인트는 괜찮을 것 같았습니다.
베타 시절은 포인트 컬러도 다르고 레이아웃도 최종과 조금 다릅니다. 보시면 바로 가기 아이콘 위치와 탭 영역 버튼 위치가 비슷한 곳에 붙어 있죠. 저 부분이 겹쳐서 너무 복잡하게 보이는 것이 좀 그래서 우측 로그 영역의 상/하단을 댕겅 자르고 확장한 것이 최종 모습입니다. 레이아웃을 바꾸는 것은 번거로운 일이지만 아이콘이 겹침을 참을 수 없었습니다.
#6 탭 영역
드디어 대망의 마지막! 탭 영역입니다.
해루봇은 노트북을 이용하는 저해상도 유저들을 생각해서 좀 작은 크기로 작업했습니다. 물론 ViewBox 등을 이용하면 해상도를 거침없이 늘릴 수도 있긴 한데, 단순하게 저질러 버리면 레이아웃이 다 깨져서 좀 번거로워지더라고요?
탭 영역은 단순한 리스트뷰로 보여도, 오만가지 UI 요소가 점철된 곳입니다. 버튼을 클릭했을 때 프로그래스 바가 나온다거나, 다운로드 중지 버튼을 구현한다거나, 오랜 작업에는 Busy Message를 출력한다거나 등등이요. 탭 영역은 유저와의 상호작용이 아주 중요하기 때문에 사소한 부분도 신경을 써야 했습니다. 예를 들어 중복 클릭을 방지하는 것……? 사소할 수 있는데 사실 안 사소하거든요.
구성은 간단합니다.
타이틀-개발자 이름-콘텐츠에 대한 설명이 있고, 연결/해제 버튼-삭제 버튼-가이드 바로 가기 버튼-개발자에게 문의 버튼-다운로드/업데이트/연결하기/새로고침을 표시하는 텍스트 버튼이 있습니다.
- 연결/해제 버튼 (체인 아이콘)
플러그인인 경우 연결/해제 버튼을 클릭하면 말 그대로 ACT에 연결하거나 해제를 합니다. ACT의 설정 파일을 동시에 조작하며, ACT 내 Plugins Listing에 Enabled를 하느냐 마느냐가 결정됩니다. 연결을 하지 않으면 리스트에는 있지만, ACT는 로드를 하지 않습니다. 삭제는 리스트에서도 아예 빠집니다. 조금 다르죠.
오버레이인 경우 연결/해제 버튼을 클릭하면 OverlayPlugin에서 사용할 것인지 말 것인지를 결정합니다. OverlayPlugin에는 '오버레이 켜기' 기능이 있는데, 연결을 하기는 했는데 당장은 필요 없지만 언젠가는 또 쓸지도 몰라(!) 일 때 사용합니다. '오버레이 표시'와는 다릅니다. 오버레이를 끄면 아예 꺼지는 겁니다. - 삭제 버튼 (휴지통 아이콘)
플러그인은 파일을 아예 삭제합니다. 단, 설정 파일은 ACT를 통째로 삭제하기 전까지는 남아 있습니다. 언제든지 다시 설치할 수 있습니다.
오버레이는 삭제를 하게 되면 JSON 목록에서 아예 빼 버립니다. 이때 ACT에서 개별적으로 설정한 단축키 등 개인 옵션이 사라질 수 있습니다. 아예 사용하지 않으면 삭제하면 되고, 잠시간 필요가 없는 거라면 연결/해제 버튼이 더 유용합니다. - 가이드 바로 가기 버튼 (책 아이콘)
모든 플러그인과 오버레이는 Github 저장소에서 서비스되고 있습니다. 가이드 바로 가기 버튼을 클릭하면 각자의 Github 저장소로 이동합니다. 몇몇 특별한 경우는 특정한 사이트로 이동하기도 합니다. 이 콘텐츠가 무엇이고 어떤 것을 제공하는 것인지 보통 '영어'로 쓰여 있습니다. 대부분 해외 개발자이기 때문에 그렇습니다. 일부 콘텐츠는 가이드를 제공하지 않습니다. - 개발자에게 문의 버튼 (물음표 아이콘)
사용 중에 문제가 생겼을 때 저한테 연락을 하시면 곤란합니다. 제가 개발한 것이 아니기 때문입니다. 많은 분들이 오해를 하시는데, 저는 여러분들의 설치만 도와드릴 뿐입니다. 그래서 설치 관련은 대응할 수 있으나 각 콘텐츠에서 문제가 발생한 거라면 해당 개발자에게 이슈를 남기면 됩니다. 개발자에게 문의 버튼은 바로 그 이슈 게시판으로 연결되는 버튼입니다.
텍스트 버튼은 또 약간 다릅니다. 사실 이 탭 영역의 핵심이나 마찬가지죠.
- 다운로드
로컬에 설치를 하지 않았다면 다운로드 버튼이 뜹니다. 이건 말 그대로 다운로드해서 설치하는 버튼입니다. - 업데이트
로컬에 설치한 파일보다 서버의 업로드 시간이 더 최근이면 업데이트가 뜹니다. 업데이트를 누르면 기존의 파일을 완전히 삭제하고, 다시 설치를 하는 식입니다. 덮어쓰기로는 문제가 발생하는 경우가 종종 있기에 그렇습니다. 그러나 이번에는 Cactbot 업데이트 시 User폴더를 옮기겠냐는 안내 문구를 보여줍니다. Cactbot을 업데이틀 할 때마다 사용자 폴더가 날아가는 경우가 조금 안타까워서요.
- 새로고침
다운로드를 했고, 업데이트 상태가 아닐 때 새로고침 버튼을 볼 수 있습니다. 이 버튼을 누르면 동기화 토큰을 소비해서 서버에 업로드가 됐는지 아닌지, 내 파일이 지금 최신인지 아닌지 확인합니다. 개별 새로고침이라고 보시면 되겠습니다. - 연결하기 - 연결완료
오버레이를 연결하지 않았으면 '연결하기'가 활성화됩니다. 연결하면 '연결완료'로 변경되고 비활성화됩니다. 오버레이는 플러그인과 달리 설치 과정이 없고, JSON 파일 조작만 있기 때문에 좀 단순한 편입니다.
이렇게 기나긴 설명이 끝났습니다. 궁금한 것들이 얼추 해소되셨을는지 모르겠습니다.
해루봇은 그냥 단순히 업데이트를 시켜 주고 ACT를 실행하는 그런 프로그램인데 뭐가 힘들겠냐고 하실 수도 있겠지만은 문서에도 다 담지 못한 과정이 참 많았습니다. 제가 현업 개발자였더라면 조금 더 유연하게 작업할 수 있었을 텐데 실력 부족이 제일 큽니다. 진짜로 C#책 펴놓고 실시간으로 공부하면서 작업했습니다. '인간은 그냥 하면 된다'는 걸 몸소 깨우쳤달까요.
아쉬운 부분도 많지만 이제는 여러분들과 함께 사용하면서 개선하고자 합니다.
그럼 안녕! 다음 글에서 만나요. 👋
'👀 비하인드 TMI' 카테고리의 다른 글
매일 업데이트가 있는 것 같은 기분이 든다면 정상입니다. (0) | 2022.05.29 |
---|---|
현시점 알려진 이슈는 대부분 해결한 것 같습니다. (0) | 2022.05.25 |
지난 2년 간 무슨 일이 있었나? Haerubot 프로젝트의 변천사 (10) | 2022.05.22 |
왜 슬라임인가요? 아이콘에 대한 이야기 (0) | 2022.05.21 |
Haerubot 2022 론칭 후기 (55) | 2022.05.20 |