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

API Gateway - 최종) 구조 개선

monstro 2026. 5. 17. 18:19
728x90
반응형

- 개요

기존의 클래스 구조를 개선하여 다음과 같이 수정한다

  • 중재자 클래스 : 서버로부터 반환된 서비스 처리 결과파싱하는 역할
  • 확장된 중재자 클래스 : 사용할 API마다 중재자 클래스를 확장하여 동작
    • 사용자가 입력한 UI에 따라 적합한 API 사용을 AWS GameLift(서버)요청
    • 델리게이트를 사용하여 AWS GameLift(서버)로부터 API 처리 결과를 받아 브로드캐스트
  • UI 클래스 : 사용자와 관련된 작업만 수행
    • 사용자는 UI 입력을 통해 원하는 API 서비스를 요청
    • 브로드캐스트된 처리 결과UI에 적용하여 사용자에게 표시

 

- C++ 사이드

1) DedicatedServers 모듈 관련

1 - 1) HTTPRequestTypes 클래스

페이로드 구조체

 

List Fleets 명령어의 페이로드 구조체의 NextToken 멤버변수의 기본값도 초기화한다

 

1 - 2) HTTPRequestManager 클래스

 

조상 중재자 클래스에 2개의 함수를 추가한다

  • ContainsErrors 함수 : 서비스 처리 결과에서 일반 예외fault 에러를 탐색하는 함수
  • DumpMetaData 함수 : 서비스 처리 결과에서 메타 데이터를 탐색하는 함수

 

 

ContainsErrors 함수의 로직은 위와 같다

서버로부터 받은 서비스 처리 결과를 분석하여 일반 에러fault 에러가 발생하면 True를 반환하고

에러가 발생하지 않았다False를 반환한다

 

 

DumpMetaData 함수의 로직은 위와 같다

서비스 처리 결과의 메타 데이터 필드의 정보가 있는지 탐색하고

리플렉션 시스템을 사용하여 데이터를 메타 데이터 구조체에 매핑한다

이후 Dump 함수를 호출하여 메타 데이터의 정보를 로그로 출력한다

 

1 - 3) APITestManager 클래스

 

List Fleets 명령어의 페이로드 구조체와 서비스 처리 결과의 에러 여부를 전파하는

OnListFleetsResponseReceived 델리게이트를 생성한다

 

 

기존의 ListFleetsButtonClicked 함수의 이름을 ListFleets 함수로 변경한다

또, 생성한 델리게이트를 멤버변수로 추가한다

 

 

위와 같이 함수 이름을 ListFleets 함수로 변경한다

로직은 기존과 동일하며 List Fleets 명령어를 요청하는 HTTP GET 메서드를 서버로 전송한다

 

 

ListFleets_Response 함수의 로직을 위와 같이 수정한다

서버로부터 List Fleets 서비스의 처리 결과를 수신한 후에 다음과 같이 처리한다

  • ContainsErrors 함수를 호출하여 예외가 발견 : 빈 페이로드false를 브로드캐스트
  • 예외가 발견되지 않음
    • DumpMetaData 함수를 호출하여 메타 데이터 정보를 출력
    • 리플렉션을 사용하여 데이터페이로드 구조체에 매핑
    • 매핑된 페이로드true를 브로드캐스트

 

1 - 4) APITestOverlay 클래스

 

테스트용 위젯들을 전부 포함하는 위젯 클래스에 위와 같이 멤버변수와 멤버함수를 추가한다

  • FleetWidgetClass 멤버변수 : 반환된 플릿 ID를 표현할 하나의 행 클래스서브 클래스의 타입을 지정
  • ListFleetsButtonClicked 함수 : 버튼을 누르면 중재자를 통해 List Fleets 서비스를 요청하는 함수
  • OnListFleetsResponseReceived 험수 : List Fleets 서비스 실행 결과수신받으면 호출하는 함수

 

 

NativeConstruct 함수의 로직을 위와 같이 수정하여

버튼이 클릭되면 ListFleetsButtonClicked 멤버함수를 호출한다

 

 

ListFleetsButtonClicked 함수의 로직은 위와 같다

List Fleets 서비스의 중재자의 브로드캐스트에 OnListFleetsResponseReceived 멤버함수를 바인드한다

이후 중재자 클래스의 ListFleets 함수를 호출하여 List Fleet 서비스를 요청한다

서비스 실행 결과가 반환되기 이전까지 버튼을 비활성화한다

 

 

OnListFleetsResponseReceived 함수의 로직은 위와 같다

  • 중재자 클래스의 델리게이트를 초기화 + 플릿 ID를 표현할 행들이 포함된 스크롤박스를 초기화
  • 서비스 실행 결과에서 에러가 포함되지 않은 경우 - 반환된 플릿 ID들을 UI에서 표시
  • 에러가 포함된 경우 - 에러 메세지를 UI에서 표시
  • 이후 버튼을 활성화

 

- 애셋 사이드

1) WBP_APITestOverlay 위젯 블루프린트

 

플릿 ID를 표현할 행 클래스서브 클래스 타입을 위와 같이 지정한다

 

- 최종 실행 결과

728x90
반응형