
과제를 수행하면서 두 클래스의 역할이 상호간 어떻게 역할을 분담하는지 정리해보았다.
🎮GameModeBase
-
역할
- 게임의 규칙과 흐름을 정의하는 클래스.
- 어떤 Pawn을 플레이어가 사용할지, HUD는 무엇을 쓸지, PlayerController/PlayerState를 어떻게 생성할지 결정.
- 서버에서만 존재하며, 클라이언트에는 직접적으로 존재하지 않음.
-
특징
- 게임 시작 시 어떤 Actor를 스폰할지, 승리 조건/패배 조건을 정의
- 멀티플레이 환경에서는 서버 권위(authoritative)를 가짐
- AGameModeBase는 AGameMode의 단순화 버전으로, 기본 규칙만 제공
-
예시
- “게임은 5분 동안 진행된다.”
- “플레이어가 죽으면 리스폰한다.”
- “점수가 10점 이상이면 승리한다.”
🕹️GameStateBase
-
역할
- 게임의 현재 상태를 저장하고 동기화하는 클래스
- 서버와 클라이언트 모두 존재하며, 클라이언트는 이 객체를 통해 게임 진행 상황을 알 수 있음
-
특징
- 플레이어 점수, 남은 시간, 현재 라운드 등 게임 진행 상황 공유
- AGameStateBase는 AGameState의 단순화 버전으로, 팀/매치 관련 확장 기능이 없음
- PlayerState들과 함께 클라이언트에 동기화되어 HUD나 UI에서 활용\
-
예시
- “현재 점수는 7점이다.”
- “남은 시간은 2분이다.”
- “현재 라운드는 Round 3이다.”
🔑 핵심 차이
| 구분 | GameModeBase | GameStateBase |
|---|
| 존재 위치 | 서버 전용 | 서버 + 클라이언트 |
| 역할 | 규칙/흐름 정의 | 상태/진행 상황 공유 |
| 예시 | 승리 조건, 리스폰 규칙 | 점수, 남은 시간, 라운드 |
| 확장 | AGameMode (팀/매치 규칙 포함) | AGameState (팀/매치 상태 포함) |
✨ 요약
GameModeBase는 게임 규칙을 정의하는 서버 전용 클래스
GameStateBase는 게임 상태를 저장하고 클라이언트와 동기화하는 클래스.
- 멀티플레이에서
GameModeBase는 서버 권위, GameStateBase는 클라이언트와 공유라는 점이 가장 큰 차이.