본문 바로가기

프로그래밍/프로젝트:Haxbotron

웹 기반 관리 시스템을 도입한 Haxbotron 작년 11월 즈음 개발을 재개한 이래로 많은 변화와 개선이 있었습니다. 일부 버전의 주요 변경점을 소개합니다. v0.3.1에서 레이팅 시스템이 추가되었습니다. Elo 레이팅을 헥스볼에 맞게 변형하였으며 https://github.com/dapucita/haxbotron/wiki/HElo-Rating-System 에 정리해놨습니다. ​ v0.3.4에서 core 서버와 db 서버가 분리되었습니다. 서로 다른 원격지에 서버를 분산배치하여 봇방을 운영하는게 가능해졌습니다. ​ v0.4.0에서 웹 기반 관리 시스템이 추가되었습니다. 기존의 Electron 기반 매니저를 대체하며, PC와 모바일 등 다양한 환경에서 서버를 관리할 수 있습니다. 또한 하나의 서버로 여러 개의 방을 운영하는게 가능해졌습니다. ​ v0...
HaxBall Headless Host 문서 (헥스볼 봇방) HaxBall Headless Host 문서를 직접 한국어로 번역하고 보충하였습니다. 직접 작성한건데 필요하신 분들 참고하시라고 링크를 올립니다. https://github.com/dapucita/haxbotron/wiki/%5BKorean%5D-HaxBall-Headless-Host
며칠동안 봇을 다소 개선하였습니다 안녕하세요. 며칠동안 봇을 손보며 몇가지 수정한 점이 있어서 소개합니다. 일단 봇에 쓰이는 패키지들의 버전을 업그레이드하여 여러 보안 취약성을 개선하였습니다. 또한 vps와 같은 서버 환경에서 원활하게 작동되도록 tweak을 추가해두었습니다. 더불어 GeoLocation을 인위적으로 덮어쓰는 옵션도 마련하였습니다. github의 wiki에 문서를 만들어 두었으니 참고하시면 됩니다. 한편 기존에는 Haxbotron의 여러 로그가 그저 앱 상에 출력되는 선에 그쳤는데요. 이번에 winston이라는 모듈을 활용하여 모든 로그를 별도의 파일에 기록하도록 개선하였습니다. + 최근에 별도의 서버에서 테스트를 위해 봇을 구동하고 있습니다. 일단은 윈도우, 리눅스에서 정상적으로 작동하는 것을 확인하였습니다. 물론 리눅..
Haxbotron 헥스볼 봇 근황과 자평 안녕하세요. Haxbotron를 만들던 개발자입니다. 오랫만에 포스팅을 하는데 이 프로젝트의 근황을 좀 적어보려합니다. 간혹 검색어를 통해 찾아오시거나 디코로 질문을 주시는 분이 있어 글을 남깁니다. 겸사겸사 제 프로젝트에 대해 자평도 조금 하겠습니다. 일단 github에서 보시는 바와 같이 이 프로젝트의 개발은 현재 진행중이지 않습니다. 업데이트를 한 지도 마지막으로 몇 달이 되었습니다. 그렇다고 Haxbotron이 기능하지 못하는 것은 아닙니다. 기본적인 틀은 헥스볼이 크게 바뀌지 않는 이상 그대로이기 때문에 여전히 사용할 수 있습니다. 몇가지 사소한 이슈나 의존성 패키지의 문제가 아니라면 딱히 오류가 생길 일이 없습니다. 개발을 중단한 이유는 1. 기본적인 기능과 추가로 생각했던 요소를 거의 다 구..
현재 구현한 기능들 공부겸 취미로 진행하는 프로젝트라 진행속도가 다소 더딥니다. 지금까지 구현해놓은 기능은 아래와 같습니다. 봇 런처 일렉트론을 이용해 GUI를 구성하였습니다. 봇 런처를 통해 호스트를 열고 닫을 수 있습니다. chromium browser를 headless모드로 실행하는 옵션이 있습니다. 슈퍼어드민 인증키를 관리할 수 있습니다. 방에 접속중인 플레이어들에게 전체공지를 위해 메시지를 보낼 수 있습니다. 게임 진행에 도움이 되는 기능 방장이 없는 경우 자동으로 다른 플레이어에게 권한을 부여합니다. 잠수 모드를 설정한 플레이어는 방장이 될 수 없습니다. 방장이 임의로 맵을 변경할 수 없습니다. 잠수 모드를 설정하지 않고 특정 시간동안 잠수하는 경우 자동으로 추방합니다. 중복하여 접속할 수 없습니다. 밴 리스트에..
첫 릴리즈를 위해 이런저런 손을 보고 있습니다. 우리나라에서 Haxball 게임을 하는 분들은 대부분 핫휴방이라는 형식으로 즐깁니다. 핫휴라는 맵을 열어서 4대4로 팀전을 하는 방식인데, 공격-수비 포지션도 나뉘고 속도감도 적당하여 가장 대중적입니다. 예전에 게임을 즐기며 방 관리를 직접 하는 것에 불편함을 느꼈는데 어느 순간부터 해외 유저들이 봇 방을 만들기 시작했습니다. 이런 저런 방법을 생각하던 중에 headless api가 제공되는 것을 알게 되어 개발을 시작했습니다. 저는 웹브라우저의 개발자 모드에서 스크립트를 직접 실행하지 않고 pc 애플리케이션으로 봇을 구동하기를 원했기 때문에 처음에 많은 고민을 했습니다. 다행히 제 의문에 먼저 도전한 사람들이 있었고 puppeteer 라는 headless chromium을 이용하면 된다는 답을 구하게 ..
Haxbotorn#1 기본적인 구동 방식 Haxbotron은 Typescript와 Electron을 이용해 개발됩니다. Typescript는 ECMAScript6로 컴파일됩니다. 초기 개발 단계에서는 빠른 개발을 위해 커맨드 라인에서의 구동만 지원하지만, Electron으로 구성된 프론트 UI를 통해 손쉽게 봇을 조작할 수 있도록 할 것입니다. 또한 haxball headless api를 사용하기 위해 puppeteer를 채택하였습니다. 따라서 별도의 웹 브라우저를 켜서 개발자 모드를 통해 headless api 페이지로 진입하여 스크립트를 디버그 모드에서 실행하는 불편함이 없습니다. headless api를 사용하기 위해서는 token을 발급받아야 하는데, 이는 사용자가 직접 웹 페이지에 접속하여 1) headless host의 recaptc..
Haxbotron 프로젝트를 시작했습니다. Haxbotron은 핵스볼 게임 상에서 돌아가는 봇입니다. 핵스볼은 barso라는 아르헨티나 사람이 만들었고 예전에 Flash로 개발됐다가 HTML5로 전환된 웹 게임입니다. 축구랑 비슷하게 방향키랑 슛키만 가지고 조작하는 방식인데요, 과거보다 줄어들긴 했지만 여전히 우리나라 사람들도 즐기고 있는 게임입니다. 저도 가끔씩 생각날때마다 잠깐잠깐 이 게임을 즐기는데, 자동으로 방을 관리할 수 있는 프로그램이 있으면 좋겠다싶어 개발을 시작하게 됐습니다. 사실 비슷한 봇 프로그램은 많은데 직접 개발 경험을 쌓을 겸 해서 만들 생각을 하였습니다. 기본적으로 Typescript로 백엔드를 구성하고, Electron으로 프론트를 만들 생각입니다. 이쯤되면 아시겠지만 Haxbotron이란 이름도 Haxball과 Ele..