본 게시물은 2019년 6월 18일에 AWS Game Team에서 진행한 GameLift 교육 자료입니다. GameLift는 클라우드에서 세션 기반 멀티플레이 게임 서버를 배포, 운영, 조정하는 데 사용되는 완전 관리형 서비스입니다. Amazon GameLift를 사용해 최고의 동급 전용 게임 서버 호스팅을 확보하십시오.
60. Step 1: DynamoDB, ElastiCache, SQS
DynamoDB Table
• 플레이어 정보 테이블
• PlayerName, Password, ELO점수, 승패 카운트
ElastiCache – Redis
• 플레이어 ELO 점수기반 랭킹 저장
• Sorted Set 자료구조
SQS
• 게임 결과 정보 임시 저장용
• GameServer로부터 결과를 받아 DynamoDB에 반영하기
전까지 Queueing용
62. Step 2: Lambda, Lambda, Lambda
Game-Rank-Reader (Get Rank)
• ElastiCache로 부터 플레이어의 랭킹 정보를 읽는 함수
Game-Rank-Update (Scoring)
• DynamoDB 스트림으로부터 점수 업데이트 정보를 읽어서
Redis에 적재하는 함수
Game-SQS-Process (Game Result Processing)
• SQS에 있는 게임 결과 정보(ELO 점수)를 읽어서 DynamoDB
테이블에 반영하는 함수
64. Step 3: API-GW, S3 Static Website
Ranking Website
• 웹페이지를 통하여 플레이어들의 랭킹 정보를 확인할 수
있는 웹사이트 구축
• API-Gateway를 통하여 Game-Rank-Reader 람다 호출
• S3에 웹페이지를 위한 HTML 및 Javascript 저장
• S3의 Static website hosting 기능 사용
• Javascript에서 API-GW를 호출하여 랭킹정보 읽어옴
66. Step 4: GameLift, Matchmaking EC2
MatchMaker
• 매치메이킹 서버를 위해 EC2를 사용
• 플레이어 DynamoDB테이블 정보(ID/PW) 통한 간단 인증 수행
• 1:1 매치메이킹 및 GameLift에게 세션 요청 (Client API 호출)
• FlexMatch기능을 사용하면 EC2 대신 Lambda로 대체가능
GameLift에 게임 서버 통합
• 게임 서버 호스팅 및 스케일링
• GameLift Server SDK 연동된 서버 업로드 및 플릿 생성
• ALIAS 생성후 플릿과 연결
• MatchMaker는 ALIAS를 통해 플릿과 통신