- 개요
PlayerSession을 생성하는 CreatePlayerSession 람다 함수의 리소스를 생성하고
생성한 리소스를 사용하여 클라이언트로부터 요청을 받아 서버에서 PlayerSession을 생성하는 절차를 준비한다
- AWS 콘솔 작업

클라이언트가 AWS에 요청할 서비스의 경로인 리소스를 루트 바로 아래에 새롭게 추가한다
생성한 리소스를 사용하여 클라이언트에서 AWS로 CreatePlayerSession 람다 함수의 실행을 요청한다

CreatePlayerSession 람다 함수를 리소스의 메서드로 생성한다
해당 람다 함수는 PlayerSession을 생성하므로 리소스를 생성하는 POST 메서드로 설정한다

리소스를 바탕으로 생성한 URL인 스테이지를 설정하여 생성한 API를 배포한다
위와 같이 스테이지를 통해 배포된 API는 실제 사용이 가능하다

최종적으로 위의 URL을 사용하여 API를 사용할 수 있다
- 스크립트 작업(DedicatedServers 모듈 관련)
1) DedicatedServersTags 클래스


위와 같이 태그를 선언 + 정의하여 CreatePlayerSession 람다의 리소스에 대응하는 태그를 선언한다
2) HTTPRequestManager 클래스

중재자 클래스들의 조상 클래스에 SerializeJsonContent 함수를 추가한다
해당 함수를 호출하여 HTTP 요청의 결과값으로 반환된 JSON 데이터를 파싱한다

SerializeJsonContent 함수의 로직은 위와 같다
MakeShared 템플릿 함수를 사용하여 새로운 JsonObject 객체를 생성한다
해당 객체를 사용하여 파싱할 JSON 데이터를 저장한다
인자로 받은 데이터를 순회하면서 생성한 JsonObject 객체에 문자열로 저장한다
이후 JsonWriter를 사용하여 JSON 데이터를 문자열로 직렬화하고 반환한다
3) PortalManager 클래스

포탈 UI와 서버 사이에 존재하는 중재자인 PortalManager 클래스에 위와 같이 멤버함수와 멤버변수를 추가한다
CreateSessionTimer 멤버변수는 일정시간 후에 GameSession에 플레이어를 입장시키는 용도로 사용한다

FindOrCreateGameSession_Response 함수의 로직을 위와 같이 수정한다
불필요한 디버그 메세지와 응답을 로그로 출력하는 코드를 제거한다
응답으로부터 GameSession 관련 정보를 추출하여 HandleGameSessionStatus 함수에 인자로 넘겨준다

GetUniquePlayerId 함수의 로직은 위와 같다
로컬 플레이어의 고유 ID를 가져와서 "Player_숫자"의 문자열로 반환하도록 구성하였다
이때 조건문에서는 GetUniqueId 함수를 호출하여 유저 고유의 네트워크 ID를 사용하고
반환문에서는 GetUniqueID 함수를 호출하여 메모리상의 객체 인덱스 ID를 반환한다
이는 위험하지만 추후 사용자의 이름을 통해 고유한 플레이어 ID를 가져오도록 수정할 것이므로 유지한다

HandleGameSessionStatus 함수의 로직은 위와 같다
GameSession의 상태가 완전히 열려있고 바로 진입할 수 있는 ACTIVE 상태라면
해당 플레이어의 고유 ID와 GameSession의 ID를 인자로 넘겨주어 TryCreatePlayerSession 함수를 호출한다
만약, GameSession이 아직 완전히 열리지 않고 준비 중인 상태인 ACTIVATING 상태라면
0.5초 뒤에 다시한번 JoinGameSession 함수를 호출한다

TryCreatePlayerSession 함수의 로직은 위와 같다
HTTP 통신을 이용해 특정 플레이어의 Player Session을 생성하는 HTTP 요청을 AWS GameLift에 전송한다

CreatePlayerSession_Response 함수는 빈 공간으로 아직 정의하지 않았다
서버로 전송한 Player Session 생성 요청의 실행 결과에 따라 다르게 동작한다
- 블루프린트 작업
1) DA_GameSessionsAPIData 데이터 애셋

CreatePlayerSession 람다의 리소스에 해당하는 Tag와 값을 정의한다
'언리얼 엔진 - 게임 프로젝트 > AWS GameLift를 활용한 데디케이트 FPS 프로젝트' 카테고리의 다른 글
| PlayerSessions - 최종) Absolute Travel 실행 (0) | 2026.05.31 |
|---|---|
| PlayerSessions - 3) CreatePlayerSession 람다 함수의 실행 결과 파싱 (0) | 2026.05.29 |
| PlayerSessions - 1) PlayerSession을 생성하는 람다 함수 작성 (0) | 2026.05.28 |
| Game Sessions - 최종) 서버로부터 반환된 CreateGameSessionCommand API 실행 결과 파싱 (0) | 2026.05.23 |
| Game Sessions - 5) UI를 통한 GameSession 생성 (0) | 2026.05.22 |