Game Tech Blog

[Game Tech] Amazon GameLift 통한 게임개발 스토리
작성일: 2021-06-16

 

 

메가존클라우드 Gaming 기술전담팀에서는 GameLift를 이용하여 “비용과 관리요소를 최소화 한” 세션 게임을 구현해보았습니다.

Amazon GameLift와 AWS의 다양한 기술을 활용하여 대전 게임을 만들어낸 리얼 개발기와 게임 구성도, 플레이 화면도 함께 확인해보시죠! 

 

■ 게임 장르 : 실시간 대전 캐주얼 게임

■ 사용할 클라이언트 엔진 : Unity3D 2020.1.1f1

■ 게임 특징 및 주요 기능 : 

  
  ① 두 명의 유져가 3판 2선승제의 가위바위보 게임을 통하여 승패를 정합니다.

  ② 승패 결과는 해당 유저의 랭킹에 (즉시)반영 됩니다

  ③ 전적을 기반으로 랜덤하게 상대를 매칭하여 게임을 진행할 수 있습니다.

  ④ 게임이 이루어지는 방은 상대방과 실시간 양방향 통신으로, 게임 진행 상황과 결과를 즉시 알 수 있어야 합니다.

  ⑤ 이미 생성된 방에 참가하거나, 새로 방을 만들어 상대방과 대전 가능합니다.

 

■ 게임 진행 방법 :

  ① 사용자 생성 및 로그인  

  ② 방 만들기 및 방 검색 / 자동 상대 찾기

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

  ③ 게임 진행

  ④ 제한 시간 내에 가위/바위/보를 선택하여 상대방과 대전 진행

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  ⑤ 결과 확인

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

위와 같은 게임을 구동하기 위해 서버는 일반적으로 이러한 구조가 될 것 입니다.

우선 게임에 접속하면 로그인 처리를 해줄 수 있는 로비(GameService)가 있고, 상대를 찾거나 방을 만들 수 있는 서버(MatchingSerive)와 실제 가위바위보를 진행하는 서버(RoomServer)가 필요할 것 입니다.

 

단순 접속 처리를 하는 로비는 유저가 대기하는 장소로 모든 유저의 요청을 받아야 하므로, 유저접속에 따라 스케일 인/아웃이 되도록 ELB 통해 분산처리가 되도록 해야하고, 매칭 서버와 대전서버(RoomServer)도 미리 충분히 리소스를 확보해 놓아야 합니다.

 

[구성도 1] 일반적인 세션형 게임의 구성도

 

저희는 위와 같은 구조의 게임 인프라 환경에서 AWS GameLift 서비스를 이용하면 어떻게 변하게 될지 생각해 보았습니다.

 

우선 [구성도 1]에서의 대전서버(GameRoom)은 게임리프트의 Fleet으로 대치될 수 있었습니다. 이 플릿은 하나의 빌드를 사용하여 동일한 기능을 하는 1개 이상의 서버 인스턴스의 집합으로, 게임에서 사용하는 포트, 프로세스 수, 세션 수 등의 값을 미리 설정하여 생성하면 지정된 값 만큼 자동으로 스케일 인/아웃을 하여 유저의 요청에 대응할 수 있는 기능을 제공하며, 무엇보다 손쉬운 설정으로 스팟 인스턴스를 이용할 수 있게되어있어 비용절감에도 큰 효과를 볼 수 있게 되어있습니다.

 

그리고 매칭 서버는 정해진 규칙에 따라 유저와 유저의 대결을 매칭해 주는 기능을 제공하는 서비스로, 게임리프트에서 플렉스매치 기능을 이용하여 위에서 말한 규칙을 지정해 놓으면 따로 이를 위한 인스턴스를 유지/관리할 필요가 없게되어 활용해 보는 것으로 하였습니다.

 

게임리프트의 이런 기능을 이용하게 되는 경우 시스템 구성은 [구성도 2]와 같이 단순하게 그려지게 됩니다.

 

[구성도 2] 게임리프트를 이용한 일반적인 세션형 게임 구성도

 

이로서 저희가 구현하려고 했던 게임의 기능들은 모두 구현이 가능했습니다. 

하지만, 단순 로비 역할의 게임 서비스 인스턴스(GameService) 유지/관리를 위해 ALB 등을 항상 서비스 상태로 준비하지 않으면 안되는 구조여서,  서버리스로 구현하면 좀 더 비용적인 이점이 있고 관리가 편할 것으로 생각하여 API Gateway와 Lambda를 이용하여 [구성도 3]과 같이 수정하였습니다.

 

[구성도 3] Serverless+GameLift를 이용한 세션형 게임의 구성도

 

이로서 비용과 관리요소를 최소화한 가위바위보 게임을 완성할 수 있었습니다🙌

 

이렇게 간단한 게임을 개발하는데 있어 게임리프트를 이용하여

 

  • 불필요한 인프라 설정 및 관리로부터의 시간과 노력 절약!
  • 손쉬운 스팟 인스턴스 사용으로 비용 절감 효과!

를 직접 느낄 수 있었습니다.

 

지금까지 Amazon GameLift와 AWS의 다양한 기술을 활용한 게임 개발기를 살펴보았습니다!

 

Amazon GameLift의 주요 기능과 효용성을 이해하시는데 도움이 되었기를 바랍니다.
GameLift 도입에 관해 궁금한 사항이 있으시다면 메가존클라우드로 연락 부탁드립니다. 

 

감사합니다😊

 

메가존클라우드 게이밍세일즈팀 I mzc_gaming@mz.co.kr