Skip to Content
AWS STEM Korea
아키텍처

멀티 플레이어 오목 게임

완성된 “멀티 플레이어 오목(Gomoku) 게임”의 전체 아키텍처는 아래와 같습니다.

  • 오목 게임은 게임 클라이언트와 게임 서버로 구분할 수 있습니다. (문서 )

  • 게임 클라이언트 (Client)

    오목 게임에 접속하는 플레이어로, 각 매치(경기)마다 플레이어 2명이 참여합니다.

  • 게임 서버 (Server)

    오목 게임을 제어하는 관리자로, 게임 서버는 조건(if)을 기준으로 1명의 승자(Winner) / 1명의 패자(Loser)를 결정합니다.

    • 지금이 흑돌 / 백돌 플레이어 중 어느 플레이어의 차례인지 기억합니다.
    • 흑돌 플레이어의 입력을 기억하고, 흑돌이 승자인지 판단합니다.
    • 백돌 플레이어의 입력을 기억하고, 백돌이 승자인지 판단합니다.
    • 승자가 결정되면, 플레이어의 점수(승리)를 데이터베이스에 기록합니다.

아키텍처

핵심 AWS 서비스

  • GameLift :

    게임 클라이언트(플레이어) 매칭 요청 시에만 게임 서버를 실행합니다. 기본적으로 240분 동안 아무 매칭 활동이 없다면 플릿은 인스턴스 0개로 스케일-인(축소)합니다.

    • 플릿(Fleet) : GameLift가 관리하는 EC2 인스턴스 묶음. 플릿 인스턴스는 업로드된 빌드 또는 Realtime 스크립트를 실행하여 게임 세션을 시작
    • 빌드(Build) : 각 플릿 인스턴스에 설치할 게임 서버 소프트웨어(.exe 등)을 패키징한 것
    • 별칭(Alias) : 게임 세션 대상(플릿 등)을 가리키는 추상적인 식별자
    • 게임 세션 큐(Game Session Queue) : 어느 대상(플릿 등)에 게임 세션을 배치할지 결정하는 대기열
    • FlexMatch 매치메이킹 구성(Matchmaking Configuration) : 플레이어를 매칭하기 위한 매치메이커 설정
    • FlexMatch 매치메이킹 규칙 세트(Matchmaking Rule Set) : 효과적인 게임 매칭을 위해 플레이어를 그룹화하는 규칙 모음
  • DynamoDB :

    NoSQL 데이터베이스로 플레이어 점수 및 전적을 저장합니다.

  • ElastiCache (Redis) :

    인메모리 데이터베이스이자 고성능 캐시로 플레이어 점수 및 전적을 임시저장(캐싱)합니다.

  • SQS :

    게임 결과를 보관/전달하는 대기열로, 대기열의 보관 기능을 사용하면 게임 서버가 모든 게임 결과를 기억하거나 즉시 처리할 필요가 없기 때문에, 게임 대기 시간을 최소화할 수 있습니다.

  • Lambda :

    Python 등 다양한 프로그래밍 언어로 작성된 함수를 통해 서버리스 컴퓨팅 환경을 제공합니다. API 요청을 처리하는 역할을 수행합니다.

  • API Gateway (REST API) :

    경로에 따른 API 규칙를 규정하고, 규칙에 따라 API 요청을 적절한 Lambda 함수에 전달합니다. 즉, 어떤 Lambda 함수를 실행할지 결정하는 게이트웨이입니다.

  • S3 :

    오브젝트 스토리지로, 게임 소스코드 등의 파일(오브젝트)를 보관합니다. HTML 파일(오브젝트)를 인터넷에 공개하는 정적 웹사이트 호스팅 기능도 제공합니다.

Last updated on