pokerogue 게임 서버 코드 분석하기 (1) - 다운로드 및 설치

최창효·2025년 7월 13일
post-thumbnail

pokerogue란

포켓로그는 로그라이크형 포켓몬 팬 게임으로 웹 브라우저에서 플레이하는 웹게임 입니다.

포켓로그는 깃허브에 코드가 모두 공개되어 있으며 프론트는 타입스크립트로, 백엔드는 Go로 만들어져 있습니다. 최근 Go를 재미있게 공부하고 있어 공부 겸 포켓로그 게임의 백엔드 코드를 분석해 봤습니다.

포켓로그의 백엔드 서버는 게임 플레이와 관련된 로직을 구현하고 있지 않습니다. 그래서 '스테이지에서 어떤 포켓몬이 나올지'나 '스킬의 난수를 계산하는 로직', '랜덤한 알에서 어떤 포켓몬이 나올지'와 같은 내용은 나오지 않는다는 걸 미리 말씀드립니다. 이 글은 포켓로그 서버 코드를 바탕으로 Go 웹서버 기본에 대한 내용을 다룹니다.

이번 글에서는 프로젝트를 다운받고 실행해 보는 것까지 해보도록 하겠습니다.


다운로드 및 설치

다운로드

가장 먼저 프로젝트를 다운로드 받습니다. 깃허브 주소는 https://github.com/pagefaultgames/rogueserver 이며, 아래 명령어를 통해 다운받을 수 있습니다.

git clone https://github.com/pagefaultgames/rogueserver.git

README에 Docker로 실행하는 법, 윈도우/리눅스 환경에 맞춰 실행하는 법이 자세히 적혀 있습니다. 참고로 저는 리눅스 환경을 이용하고 있습니다.

도커 환경으로 Database 실행하기

프로젝트에는 2개의 docker-compose파일이 존재합니다.

yml을 살펴보면 두 파일의 용도를 금방 알 수 있는데요. DB를 포함해 서버 자체를 컨테이너 환경에서 실행하고 싶다면 docker-compose.Example.yml파일을, DB만 실행하고 싶다면 docker-compose.Development.yml을 실행하면 됩니다.

저희는 서버를 직접 localhost로 실행할거기 때문에 DB만 실행하면 됩니다. 아래 명령어로 docker-compose.Development.yml을 실행합니다.

docker-compose -f docker-compose.Development.yml up -d

docker-compose.Development.yml을 살펴봅시다.

services:
  db:
    image: mariadb:11
    container_name: pokerogue-db-local
    restart: on-failure
    environment:
      MYSQL_ROOT_PASSWORD: admin
      MYSQL_DATABASE: pokeroguedb
      MYSQL_USER: pokerogue
      MYSQL_PASSWORD: pokerogue
    ports:
      - "3306:3306"
    volumes:
      - ./.data/db:/var/lib/mysql
  • mariadb를 사용하고 있으며 3306포트로 연결되어 있습니다.
  • 기본 접속에 필요한 id, password는 모두 pokerogue이며 pokeroguedb라는 데이터베이스를 생성합니다.

간단한 명령어로 데이터베이스의 상태를 확인해 봅시다.

// 컨테이너 접속
docker exec -it pokerogue-db-local /bin/bash

// 마리아 DB 접속
mariadb -u pokerogue -p 
pokerogue

// 데이터베이스 확인
show databases;

// 데이터베이스 선택
use pokeroguedb;

// 테이블 확인
show tables;

  • 이는 실제 운영용 코드에는 테이블을 생성하는 코드가 주석처리 되어 있기 때문에 그냥 실행했을 때는 아무런 테이블이 없는게 정상입니다.

로컬 서버 실행하기

  1. go mod tidy명령어로 필요한 모듈을 다운로드 받습니다.
  2. 테이블 생성을 위해 db패키지에 있는 db.go 파일의 주석을 해제합니다.


  1. main파일을 찾아 실행합니다. 디렉토리 최상위에 있는 rogueserver.go가 main파일이기 때문에 디렉토리 최상위 위치에서 go run .을 실행합니다. 콘솔에서 Daily Run Seed값을 입력받고 있습니다. 아무 숫자나 입력해 줍니다.

이로써 서버 실행이 완료됐습니다.


프론트 로컬 실행

프론트 프로젝트도 로컬에서 실행해 봅시다.

  1. 프로젝트를 다운로드 받습니다.

    git clone https://github.com/pagefaultgames/pokerogue.git
  2. 서버를 실행합니다.

    npm install
    
    npm run start
  3. localhost:8000으로 접속합니다.


정리

프로젝트를 다운로드 받고 로컬 환경에서 실행해 봤습니다.
MariaDB는 도커 환경에서 실행되어 3306번 포트로 바인딩되어 있으며, 프론트와 백엔드는 각각 localhost 8000번 포트, 8001번 포트로 실행된다는 사실을 확인할 수 있었습니다.

profile
기록하고 정리하는 걸 좋아하는 백엔드 개발자입니다.

0개의 댓글