게임 서버 구축 (0)

jw·2023년 9월 1일
0

게임 서버 구축

목록 보기
1/19

게임 설명

'마인크래프트' 라는 게임의 서버를 운영해볼 계획이다.

마인크래프트는 샌드박스 형식의 비디오 게임으로, 이름처럼 채광(Mine)과 제작(Craft)를 하는 게임으로 알려져있다. 혼자, 혹은 여럿이 생존하면서 건축, 사냥, 농사, 탐험 등 굉장히 자유도가 높은 게임이다.

해외 국내 할 것 없이 이미 유명한 게임이며, 많은 크리에이터들이 방송용으로 하기도 하고, 일반 유저들도 굉장히 많은 게임이다.

동기 & 목표

사실 나는 중학교 쯤에 이미 마인크래프트 서버를 만들어본 경험이 있다.

그 때는 서버나 컴퓨터에 대한 지식이 거의 전무했으니.. 네이버에 검색해가며 만들었다.
지금 생각해보면, 로컬 컴퓨터에 개발환경을 만들어 응용 프로그램을 통해 서버를 열었던 것 같다.
Hamachi2 라는 프로그램도 사용해서 네트워크 설정도 하고, 뭔가 일반 아이피 주소를 통해 게임서버에 접속하면 별로 안 멋있는 것 같아서 나름 무료 도메인도 설정해서 만들었다.
(그냥 주소로 하는게 더 멋있는 것 같았을 뿐.. DNS가 뭔지도 몰랐을걸..)

그래도 나름 그 당시 꽤 규모가 있었다. 네이버 카페를 만들고, 홍보하고, 같이 게임하는 사람들에게 관리자도 맡기고 하며 카페는 1300명 정도까지 인원이 늘어났고, 게임은 정원 100명인 서버에 늘 50명 정도는 평균적으로 접속해있었던 것 같다. (너무 오래전이라 잘 기억이 안난다..) 사실 이 프로젝트 시작하면서 예전에 만들었던 카페를 다시 한 번 보고싶었는데, 너무 오래되어서 접속도 안하고 하니 사라진 것 같다.

나는 그 당시 24시간 운영하는 서버를 만들고 싶었었다. 하지만, Window OS가 설치되어있는 일반 가정용 컴퓨터에서, 마인크래프트 특성상 아무리 저사양 게임이라지만, 이것 저것 플러그인을 설치하고, 자체 패키지를 설치하고, 또 인원이 늘어가다보니 오류가 나는 경우나 서버 데이터가 일부 날아간다던가.. 서버가 끊긴다던가 하는 일도 있어서, 서버 오픈 시간을 정해두었었다. 거기다 부모님께는 비밀로 했기에.. 왜 자꾸 컴퓨터를 오래 켜두냐며 하신 잔소리도 24시간 서버에서 멀어지는데 사실 큰 역할을 하긴 했다.그래도 나름 체계적이였던 것 같다.

한참 이후인 현재, 나는 올해 1학기에 학부에서 클라우드 관련 수업을 수강하였다.
학기말에 최종 레포트를 제출해야 했는데,

  1. AWS를 이용한 프로젝트 ex) 특정 서비스 구현
  2. 수업시간에 다루지 않은 AWS 기능 자세히 학습 & 학습과정 브리핑

둘 중 한가지를 택하는 것 이였는데, 본인은 1번을 선택했다.
다양하게 시도해봤는데, 아무래도 이용하던 계정이 학생용 계정이다보니 금액이나 서비스 정책 부분에서 사용 제한이 있는 부분이 다소 있었다. 그렇게 생각하고 생각하다 나온게

"마인크래프트 서버를 AWS로 구현해보자" 였다.

하지만, 실습은 달랐다. 기껏 해봐야 인스턴스 좀 만들고, 네트워크 설정, 트래픽 발생시켜서 서버 과부화 일으키고, 분석하고, 보안그룹 설정 뭐 이런거나 좀 한게.. 생각보다 어려웠다.

그래도 약 2일정도 매달린 결과, 로그 분석을 위한 사용자 데이터 수집을 위해 AWS RDS로 데이터를 받고싶었는데, 그 부분 빼고는 성공적으로 서버를 구현할 수 있었다. (감격)

  • 당시 진행방향

  • 힘들다 1

  • 힘들다 2
  • 서버 구축 후 게임 접속에 성공한 화면

생각보다 시간이 촉박했고, 내 지식은 부족했다.

자바 버전이 게임과 맞지 않다거나, DB엔드포인트를 잘 못 입력했다거나, 네트워크 보안 설정을 잘못했다거나 생각보다 문제가 많아서 2일 안에 겨우 서버 구현까지 했었다.

이후, 클라우드를 활용해서 과제 제출까지 시간이 부족해서 하지 못 했던 것들, 공부하고 전부 해보았다.

  • AWS RDS를 이용한 사용자 접속 및 플레이 데이터 전송
  • AWS CLI를 이용한 서버 재설정 및 점검 시간 ON/OFF 자동화
  • AWS RDS 자체 관리를 이용하여, 로컬 서버로 일정 기간마다 유저 데이터 백업
  • 로컬에서 Python 이용하여 유저 데이터 분석 ex) 게임 내에서 자주 방문하는 좌표, 자주 접속하는 시간대 등

AWS는 자원이 한정되어있기 때문에, 너무 많이 쓰면 비용을 많이 지불해야 하니.. 이전 중학교때 운영했던 것 처럼 하지는 않았고, 본인이나 본인 친구들 몇 명만 이용하는 식으로 해서 실습 느낌으로만 해보았다.

그리고 수업이 끝나고 8월 정도가 되면서 AWS 학생용 계정이 기간이 끝났기 때문에... 이후에는 토큰이 아니라 실제 내 돈을 내야해서 현재 클라우드 서버는 닫게되었다! 계정 기간이 끝나면, 자동으로 이전에 만들어두었던 EC2나 Elastic IP 같은 설정들이 다 사라지는 것도 알 수 있었다.
(미리 백업 해둘걸)

여튼 기간도 다 끝났고, 클라우드도 어느정도는 사용해보았으니, 이번에는 집에있는 컴퓨터를 활용하여 서버를 개설해보려 한다. 마침 집에 여유 컴퓨터가 한대 있어서, 서버 컴퓨터로 활용해보려 한다.

이전 중학생때와는 다르게 정말 한 개의 게임을 운영한다는 입장으로,
온라인게임 운영사처럼 하나하나 다 해볼 생각이다.

긴 여정이 될 것 같다..

profile
『Infra Engineering』

0개의 댓글

관련 채용 정보