- 개요
하나의 게임이 종료된 후에 플레이어별 MatchStats를 Dynamo DB의 테이블에 기록한다
- 스크립트 작업
1) GameStatsManager 클래스(DedicatedServers 모듈)

클라이언트에서 서버로 RecordMatchStats 람다 함수의 실행을 요청하고 결과를 처리하는 매니저 클래스를 생성한다

RecordMatchStats 함수의 로직은 위와 같다
리플렉션을 통해 DSRecordMatchStatsInput 구조체를 JSON 오브젝트로 변환하고
RecordMatchStats 람다 함수로 POST 요청을 보내 데이터 테이블에 기록한다

RecordMatchStats_Response 함수의 로직은 위와 같다
RecordMathStats 람다 함수로부터 받은 HTTP 응답의 성공 여부를 확인하고
응답받은 JSON 데이터를 파싱하여 에러가 포함되어 있는지 검사한다
2) DS_MatchPlayerState 클래스(DedicatedServers 모듈)

진행중인 게임에서의 PlayerState 클래스를 생성한다
멤버변수는 다음과 같이 구성한다
- GameStatsManagerClass 멤버변수 : 진행중인 게임에 대한 매니저 클래스의 타입
- GameStatsManager 멤버변수 : GameStatsManagerClass 변수로 생성한 매니저 오브젝트

각각의 함수들은 위와 같이 구성한다
OnMatchEnded 함수는 자식 클래스에서 오버라이드하여 로직을 구성한다
BeginPlay 함수를 위와 같이 구성하여 GameStatsManager 변수의 값을 설정한다
RecordMatchStats 함수를 호출하여 매니저 클래스의 RecordMatchStats 함수를 호출하여 데이터를 기록한다
3) MatchPlayerState 클래스(주 모듈)

상속 관계를 DS_MatchPlayerState로 변경하고 OnMatchEnded 함수를 오버라이드한다

OnMatchEnded 함수의 로직은 위와 같다
DSRecordMatchStatsInput 구조체의 인스턴스를 생성하고 멤버변수의 값에 맞춰 값을 설정한다
이후 RecordMatchStats 함수를 호출하고 생성한 인스턴스를 넘겨주어 데이터 테이블에 기록한다
4) DS_MatchGameMode 클래스


OnMatchEnded 함수를 추가한다
PlayerController를 순회하면서 DSPlayerState를 가져와 OnMatchEnded 함수를 호출하여 데이터를 기록한다

OnCountdownTimerFinished 함수에 로직을 추가하여
MatchStatus를 게임 종료로 바꾼 이후에 OnMatchEnded 함수를 호출하여
플레이어별 플레이 데이터를 Dynamo DB의 테이블에 기록한다
- 블루 프린트 작업
1) BP_MatchPlayerState 블루프린트(주 모듈)

GameStatsManagerClass 멤버변수의 값을 설정한다
'언리얼 엔진 - 게임 프로젝트 > AWS GameLift를 활용한 데디케이트 FPS 프로젝트' 카테고리의 다른 글
| Dynamo DB - 8) RetrieveMatchStats 요청과 응답 처리 (0) | 2026.07.30 |
|---|---|
| Dynamo DB - 7) 플레이어 데이터 조회 (0) | 2026.07.30 |
| Dynamo DB - 5) MatchStats 데이터 구조체 추가 (0) | 2026.07.26 |
| Dynamo DB - 4) MatchStats 관련 API Gateway 생성 (0) | 2026.07.26 |
| Dynamo DB - 3) MatchPlayerState 데이터 처리 (0) | 2026.07.25 |