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

Dynamo DB - 6) MatchStats 기록

monstro 2026. 7. 30. 11:31
728x90
반응형

- 개요

하나의 게임이 종료된 후에 플레이어별 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 함수 선언

 

OnMatchEnded 함수 정의

 

OnMatchEnded 함수를 추가한다

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

 

 

OnCountdownTimerFinished 함수에 로직을 추가하여

MatchStatus를 게임 종료로 바꾼 이후에 OnMatchEnded 함수를 호출하여

플레이어별 플레이 데이터를 Dynamo DB의 테이블에 기록한다

 

- 블루 프린트 작업

1) BP_MatchPlayerState 블루프린트(주 모듈)

 

GameStatsManagerClass 멤버변수의 값을 설정한다

728x90
반응형