본문 바로가기

분류 전체보기

우분투에서 electron/puppeteer 실행시 오류 (libX11-xcb.so 등) 출처 https://whiumisc.tistory.com/93 우분투 electron 실행 시 libX11-xcb.so 에러 야심차게 electron으로 데스크탑 앱을 만들어야겠다고 설치하려는 순간! error while loading shared libraries: libX11-xcb.so.1: cannot open shared object file: No such file or directory 이런 식으로 에러.. whiumisc.tistory.com 출처2 https://skyksit.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%ACUbuntu-puppeteer-%EC%8B%A4%ED%96%89%EC%8B%9C-%EC%97%90%EB%9F%AC%EB%82%A0%EB..
Haxbotron 헥스볼 봇 근황과 자평 안녕하세요. Haxbotron를 만들던 개발자입니다. 오랫만에 포스팅을 하는데 이 프로젝트의 근황을 좀 적어보려합니다. 간혹 검색어를 통해 찾아오시거나 디코로 질문을 주시는 분이 있어 글을 남깁니다. 겸사겸사 제 프로젝트에 대해 자평도 조금 하겠습니다. 일단 github에서 보시는 바와 같이 이 프로젝트의 개발은 현재 진행중이지 않습니다. 업데이트를 한 지도 마지막으로 몇 달이 되었습니다. 그렇다고 Haxbotron이 기능하지 못하는 것은 아닙니다. 기본적인 틀은 헥스볼이 크게 바뀌지 않는 이상 그대로이기 때문에 여전히 사용할 수 있습니다. 몇가지 사소한 이슈나 의존성 패키지의 문제가 아니라면 딱히 오류가 생길 일이 없습니다. 개발을 중단한 이유는 1. 기본적인 기능과 추가로 생각했던 요소를 거의 다 구..
현재 구현한 기능들 공부겸 취미로 진행하는 프로젝트라 진행속도가 다소 더딥니다. 지금까지 구현해놓은 기능은 아래와 같습니다. 봇 런처 일렉트론을 이용해 GUI를 구성하였습니다. 봇 런처를 통해 호스트를 열고 닫을 수 있습니다. chromium browser를 headless모드로 실행하는 옵션이 있습니다. 슈퍼어드민 인증키를 관리할 수 있습니다. 방에 접속중인 플레이어들에게 전체공지를 위해 메시지를 보낼 수 있습니다. 게임 진행에 도움이 되는 기능 방장이 없는 경우 자동으로 다른 플레이어에게 권한을 부여합니다. 잠수 모드를 설정한 플레이어는 방장이 될 수 없습니다. 방장이 임의로 맵을 변경할 수 없습니다. 잠수 모드를 설정하지 않고 특정 시간동안 잠수하는 경우 자동으로 추방합니다. 중복하여 접속할 수 없습니다. 밴 리스트에..
우분투(데비안) cli 환경에서 puppeteer 사용하기 chromium을 작동시키기 위한 라이브러리가 없는 경우가 있습니다. 에러가 난다면 다음과 같은 명령어를 사용하여 설치하면 됩니다. sudo apt-get install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 l ibglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libx..
첫 릴리즈를 위해 이런저런 손을 보고 있습니다. 우리나라에서 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..
타입스크립트 제네릭을 이용한 ArrayList 연습 class ArrayList { private arrayList: (T | number)[] = []; add(indexOrValue: T | number, value ? : T) { if (value !== undefined) { //타입가드 if (typeof indexOrValue === "number") { this.arrayList.splice(indexOrValue, 0, value); } } else { this.arrayList.push(indexOrValue); } } remove(index: number) { this.arrayList.splice(index, 1); } addAll(elements: T[]) { this.arrayList = [...this.arrayList..