첫 릴리즈를 위해 이런저런 손을 보고 있습니다.
우리나라에서 Haxball 게임을 하는 분들은 대부분 핫휴방이라는 형식으로 즐깁니다.
핫휴라는 맵을 열어서 4대4로 팀전을 하는 방식인데, 공격-수비 포지션도 나뉘고 속도감도 적당하여 가장 대중적입니다.
예전에 게임을 즐기며 방 관리를 직접 하는 것에 불편함을 느꼈는데 어느 순간부터 해외 유저들이 봇 방을 만들기 시작했습니다. 이런 저런 방법을 생각하던 중에 headless api가 제공되는 것을 알게 되어 개발을 시작했습니다.
저는 웹브라우저의 개발자 모드에서 스크립트를 직접 실행하지 않고 pc 애플리케이션으로 봇을 구동하기를 원했기 때문에 처음에 많은 고민을 했습니다. 다행히 제 의문에 먼저 도전한 사람들이 있었고 puppeteer 라는 headless chromium을 이용하면 된다는 답을 구하게 되었습니다.
어쨌든 조금씩 시간을 내 개발하며 핫휴방 운영을 위해 필요한 최소한의 기능들을 준비했고
현재는 버그 수정과 운영을 위한 편의 기능을 구현하는 중입니다.
예를 들면 잠수(afk)유저를 탐지하여 경고하고, 퇴장시키는 기능에 버그가 좀 있는데요.
잠수를 카운트하는 방식을 손봐주면 잘 돌아갈 것 같습니다.
물론 afk명령어를 통해 공식적으로 잠수한 경우와 방장이 고의로 잠수하는 경우도 고려해줘야 합니다.
한편 처음에 구현에 고민했던 점 중에 다국어 지원을 고려한 문자열 리소스가 있었습니다.
제가 원했던 방식은 보간 키워드를 사용해 어순에 자유롭게 국제화를 시키는 것이었습니다.
"I like {fruit}"을 "나는 {fruit}을 좋아한다."와 같이 바꿀 수 있게 말이죠.
더 좋은 방법이 있겠습니다만 지금 채택한 방식은 리소스를 템플릿 문자열을 만드는 함수에 집어넣는 것입니다.
다만 보간을 구현하기 위해 게임의 각 이벤트 핸들러 내에 중복적으로 선언하고 있는데 추후에 개선할 예정입니다.
저는 프로그래밍에 있어 입문자에 불과하기 때문에 공개한 소스코드에 많은 미숙함이 있어도 양해 부탁드립니다.
공부겸 만드는 것이니 혹여나 구경하시게 된다면 조언을 부탁드립니다. 꾸벅