- 개요
클라이언트와 서버의 중간에 존재하며 클라이언트로부터 API 서비스의 요청을 받아 서버로 전달하고
서버로부터 결과를 받아 클라이언트로 전달하는 중재자 클래스를 생성한다
또, 서버와 통신할 때 요청을 보내고 받는 최종 지점인 엔드포인트를 저장하는 데이터 애셋 클래스를 생성한다
- C++ 사이드
1) DedicatedServers 모듈 관련
1 - 1) DedicatedServers.build.cs 파일

GameplayTags 모듈을 추가하여 데이터 애셋에서 태그를 사용할 수 있도록 설정한다
1 - 2) DedicatedServersTags 클래스

DedicatedServers 모듈에서 사용할 GameplayTag의 모음 클래스를 정의한다
중첩된 namespace를 사용하여 태그들을 분류하고 스코프를 정의한다
UE_DECLARE_GAMEPLAY_TAG_EXTERN 매크로를 사용하여 태그를 전역적으로 선언한다

UE_DEFINE_GAMEPLAY_TAG_COMMENT 매크로를 사용하여
전역적으로 선언한 ListFleets 태그에 대해 위와 같이 정의 + 설명을 수식한다
1 - 3) APIData 클래스

생성한 API를 사용하기 위한 엔드포인트는 위와 같다
AWS 콘솔에 접속한 후에 API Gateway - APIs - 사용할 API - Stages 탭의 URL 호출에서 확인할 수 있다

사용할 API의 엔드포인트를 저장할 DataAsset 클래스를 위와 같이 생성하였다
멤버변수의 구성은 다음과 같다
- Name 멤버변수 : 사용할 API의 이름
- InvokeURL 멤버변수 : 위의 엔드포인트 주소에서 "/스테이지명" 이전까지의 문자열
- Stage 멤버변수 : 사용할 API의 스테이지 이름
- Resources 멤버변수 : DedicatedServersTags에 정의한 태그와 사용할 서비스의 이름을 매핑하여 저장

GetAPIEndPoint 함수의 로직은 위와 같다
Resources 멤버변수에서 태그에 맞춰 매핑된 서비스의 이름을 가져와
"InvokeURL 변수/Stage 변수/서비스의 이름" 형태의 문자열을 반환한다
1 - 4) HTTPRequestManager 클래스

클라이언트와 서버 사이의 중재자 역할을 하는 클래스를 생성한다
해당 클래스는 Blueprintable로 설정하여 블루프린트를 생성할 수 있도록 구성한다
APIData 멤버변수를 갖고 있어 태그에 따라 AWS GameLift에 요청할 서비스를 탐색할 수 있다
1 - 5) APITestManager 클래스

단순 중재자 역할을 하는 HTTPRequestManager 클래스로부터 상속되어
UI와 관련한 역할도 수행할 APITestManager 클래스를 생성한다

ListFleetsButtonClicked 함수의 로직은 위와 같다
List Fleets 서비스를 요청할 버튼이 눌리면 디버그 메세지를 띄우도록 설정하였다
1 - 6) APITestOverlay 클래스

테스트용 위젯들을 전부 포함하는 위젯 클래스에 위와 같이 멤버변수와 멤버함수를 추가한다
멤버변수의 구성은 다음과 같다
- APITestManagerClass 멤버변수 : 중재자 클래스의 서브 클래스의 타입을 지정
- ListFleetsBox 멤버변수 : 반환된 플릿 ID들의 목록을 보여줄 UI
- "meta = (BindWidget)" 속성을 사용하여 변수 이름과 실제 위젯을 연결
- APITestManager 멤버변수 : APITestManagerClass 멤버변수로 생성된 객체를 참조

NativeConstruct 함수를 위와 같이 오버라이드한다
부모 버전의 함수를 호출한뒤에 중재자 클래스의 객체를 생성한다
이어서 ListFleetsBox 멤버변수의 버튼 UI를 가져와 중재자 클래스의 ListFleetsButtonClicked 함수를 연결한다
- 에셋 사이드
1) DA_GameSessionsAPIData 데이터 애셋

APIData 클래스를 상속받아 데이터 애셋을 생성한다
요청할 서비스인 List Fleets와 관련된 데이터를 위와 같이 추가한다
2) BP_APITestManager 블루프린트

중재자 클래스의 블루프린트를 생성한다
1)에서 생성한 데이터 애셋을 멤버변수로 설정한다
3) WBP_TestOverlay 위젯 블루프린트

meta = (BindWidget) 속성에 맞춰 하위 위젯의 이름을 코드의 변수이름으로 통일한다
- 최종 실행 결과

'언리얼 엔진 - 게임 프로젝트 > AWS GameLift를 활용한 데디케이트 FPS 프로젝트' 카테고리의 다른 글
| API Gateway - 7) 메타 데이터 + 페이로드 + 에러 파싱 (0) | 2026.05.16 |
|---|---|
| API Gateway - 6) 서비스 요청과 결과 처리 (0) | 2026.05.15 |
| API Gateway - 4) API Gateway 테스트용 위젯 생성 (0) | 2026.05.14 |
| API Gateway - 3) DedicatedServers 모듈 생성 (0) | 2026.05.11 |
| API Gateway - 2) REST API 생성 (0) | 2026.05.10 |