1. 우선 DefaultGame.ini에 다음 내용을 추가하여야 한다.
// 게임 클래스의 설정 내용에 아래 설정 추가. // UDN에 보면 GameplayEventsWriterClassName이 "UTGameplayEventsWriter"로 되어 있는데, 이 클래스가 현재 없다. GameplayEventsWriterClassName="Engine.GameplayEventsWriter" bLogGameplayEvent=true
2. 그 뒤 DefaultEditor.ini에 GameStatsBrowser를 위한 설정을 해야 한다.
// 기본적으로 GameStatsBrowser 설정이 되어 있다. // 여기에서 다음 부분들을 바꾸어 주어야 한다. RemoteConnectionIp="XXX.XXX.XXX.XXX" // <<- 이 녀석을 실제 머신의 ip로 지정한다. // 아래 두 설정 중 바꾸어주어야 하는 부분은 Data Source 부분이다. // Data Source의 값을 실제 머신의 Host name으로 지정해 주어야 한다. ConnectionString="~~~~~~~~~~~~~~~" RemoteConnectionStringOverride="~~~~~~~~~~~~~~~"
3. 마지막으로, Match가 시작되기 전 GameStatsWriter 인스턴스를 생성해야 한다.
// Gameplay statistics 변수들 var config string GameplayEventsWriterClassName; // 사용될 클래스명 var config bool bLogGameplayEvents; // 이벤트 로깅을 할 것인가? var transient GameplayEventsWriter GameplayEventsWriter; // 통계수집 클래스 인스턴스 // 원하는 GameInfo subclass에서 PostBeginPlay() 함수에 다음과 같이 인스턴스 생성 코드를 삽입한다. function PostBeginPlay() { local class<GameplayEventsWriter> GameplayEventsWriterClass; if ( bLogGamePlayEvents && GameplayEventsWriterClassName != "" ) { GameplayEventsWriterClass = class<GameplayEventsWriter>(FindObject(GameplayEventsWriterClassName, class'Class')); if ( GameplayEventsWriterClass != None ) { GameplayEventsWriter = new(self) GameplayEventsWriterClass; if ( GameplayEventsWriter != None ) { // Do something... } else { // Do something... } } } }
function StartMatch() { if ( GameplayEventsWriter != None && !GameplayEventsWriter.IsSessionInProgress() && !class'WorldInfo'.static.IsMenuLevel() ) { // Parameter는 HeartBeating 주기이다. 단위는 초 단위. // 특정 주기로 반복해서 기록해야 하는 이벤트를 위한 "Poll" timer를 HeartBeatDelta 주기로 생성시킨다. // 예를 들어, 플레이어들의 location 정보 수집 등에 사용될 수 있겠다. GameplayEventsWriter.StartLogging(0.5f); } ... } // EndLogging은 게임이 종료되는 곳에 넣어주면 된다. // ex) function EndGame