Tracking Player
개발 일지2024. 12. 3. 12:02
GameState
- GameMode
- 게임 내의 모든 규칙을 가지고 있음
- 플레이어의 레벨 이동이나 스폰 장소 선택 등 관리
- PostLogin(APlayerController* NewPlayer) 라는 가상 함수를 상속받아 게임에 참여하는 playercontroller에 접근할 수 있음
- Logout(AController* Exiting) 함수로 게임을 나가는 플레이어들의 playercontroller에 접근할 수 있음
- GameState
- GameMode보다 좀 더 게임 상태에 대한 정보를 가지고 있도록 디자인됨
- 클라이언트가 GameState 클래스에 접근해 정보를 얻을 수 있음
- 플레이어의 점수나 승리 횟수같은 개별 유저의 정보에만 국한되지 않고 게임 상태에 대한 정보를 담도록 디자인되었음
- 플레이어 상태에 대한 배열을 가지고 있음. 얼마나 많은 플레이어가 들어와있는지도 이 배열의 수를 통해 파악할 수 있음
Login & Logout
- GameModeBase에 구현
- Login 함수와 Logout 함수를 override받아 사용
- GameState 관련 로직 사용을 위해 두개의 전처리 include
#include "GameFramework/GameStateBase.h"
#include "GameFramework/PlayerState.h"
- GameState가 가지고 있는 TArray plaeyer 배열을 사용해 접속하고 종료하는 플레이어 수, 이름을 가져옴
void ALobbyGameMode::PostLogin(APlayerController* NewPlayer)
{
Super::PostLogin(NewPlayer);
if (GameState) {
int32 NumOfPlayer = GameState.Get()->PlayerArray.Num();
if (GEngine) {
GEngine->AddOnScreenDebugMessage(
1,
60.f,
FColor::Yellow,
FString::Printf(TEXT("Players in game: %d"), NumOfPlayer)
);
APlayerState* PlayerState = NewPlayer->GetPlayerState<APlayerState>();
if (PlayerState) {
FString PlayerName = PlayerState->GetPlayerName();
GEngine->AddOnScreenDebugMessage(
-1,
60.f,
FColor::Cyan,
FString::Printf(TEXT("%s has joined the game!"), *PlayerName)
);
}
}
}
}
void ALobbyGameMode::Logout(AController* Exiting)
{
Super::Logout(Exiting);
APlayerState* PlayerState = Exiting->GetPlayerState<APlayerState>();
if (PlayerState) {
int32 NumOfPlayer = GameState.Get()->PlayerArray.Num();
if (GEngine) {
GEngine->AddOnScreenDebugMessage(
1,
60.f,
FColor::Yellow,
FString::Printf(TEXT("Players in game: %d"), NumOfPlayer - 1)
);
}
FString PlayerName = PlayerState->GetPlayerName();
GEngine->AddOnScreenDebugMessage(
-1,
60.f,
FColor::Cyan,
FString::Printf(TEXT("%s has exited the game!"), *PlayerName)
);
}
}
- 이후 LobbyGameMode를 상속받은 BP_LobbyGameMode 클래스를 만들어 DefaultPawn을 firstplayerCharacter로 변경, LobbyMap의 defaultGameMode를 BP_LobbyGameMode로 변경
'개발 일지' 카테고리의 다른 글
플러그인 다듬기 (0) | 2024.12.03 |
---|---|
플러그인 UI - 2 (0) | 2024.12.02 |
플러그인 UI - 1 (0) | 2024.12.01 |
플러그인 등록 (0) | 2024.11.30 |
Join Session (0) | 2024.11.29 |
댓글()