언리얼 엔진 - 게임 프로젝트/AWS GameLift를 활용한 데디케이트 FPS 프로젝트

언리얼 엔진 + GameLift 통합 - 1) GameMode 클래스의 생성

monstro 2026. 3. 29. 20:09
728x90
반응형

- 개요

https://docs.aws.amazon.com/ko_kr/gameliftservers/latest/developerguide/integration-engines-setup-unreal.html

 

GameLift Server SDK 플러그인을 언리얼 엔진에서 사용하기 위해 통합하는 과정을 처리한다

통합하는 과정은 AWS 공식문서를 바탕으로 진행하였다

공식문서의 내용을 기반으로 GameMode 클래스를 생성하고 구성한다

 

- C++ 사이드

1) build.cs 파일

 

build.cs 파일을 위와 같이 수정한다

  • 빌드하는 결과물에 따라 모듈을 다르게 참조하도록 설정
    • 1) 서버인 경우 - GameLiftServerSDK 모듈을 참조
    • 2) 서버가 아닌 경우 - WITH_GAMELIFT 매크로의 값을 0으로 설정
  • bEnableExceptions 값을 활성화하여 C++의 예외 처리를 사용

 

2) ShooterGameMode 클래스

 

프로젝트에서 사용할 GameMode 클래스를 위와 같이 생성한다

GameLiftSever SDK 플러그인을 사용하기 위해 일반적인 GameMode 클래스와 다르게 구성하였다

  • FProcessParameters 구조체 전방선언 - GameLift 서버 프로세스 실행 파라미터를 담는 구조체
  • DECLARE_LOG_CATEGORY_EXTERN 매크로를 사용하여 해당 클래스 전용 로그를 정의
  • InitGameLift 함수 : 서버 프로세스가 시작될 때 GameLift 서비스통신을 시작하는 사용자 정의 함수
  • ProcessParametes 멤버변수 : FProcessParameters 구조체를 참조하는 스마트포인터

 


cpp 파일을 위와 같이 구성한다

WITH_GAMELIFT 매크로의 값을 판단하여 서버라면 추가적으로 헤더 파일을 사용한다

또한 DEFINE_LOG_CATEGORY 매크로를 사용하여 커스텀 로그를 사용하도록 설정한다

 

 

생성자BeingPlay 함수를 위와 같이 정의한다

  • 생성자 : ProcessParametes 멤버변수를 nullptr로 초기화
  • BeginPlay 함수 : 서버라면 InitGameLift 함수를 호출

 

 

InitGameLift 함수는 공식문서를 바탕으로 정의하였다

간단하게 정리하면 다음과 같이 로직이 동작한다

  • 1) GameLiftServerSDK 모듈 로드 및 초기화
  • 2) 커맨드인자를 분석하여 Anywhere(로컬) 또는 Managed(클라우드) 설정
  • 3) 콜백 함수 설정 : 게임 시작 에 호출 + 종료 시에 호출 + 서버 동작을 확인하기 위해 주기적으로 호출
  • 4) 연결할 포트로그 저장 경로를 지정한 후에 ProcessReady 함수 호출

 

 

이후 빌드 타겟을 Development Server로 설정하고 빌드하여 문제없이 동작하는지 확인한다

728x90
반응형