UE5

언리얼 게임 모드 클래스

게임 개발 2023. 10. 27. 10:54

 

 언리얼에서 게임을 구현하는 다양한 기능은

플러그인, 모듈 등을 통해서 추가할 수 있다.

하지만 게임 구현의 주춧돌은 역시 게임 모드 클래스이다.

 

언리얼 게임 모드 클래스

 

 게임에 일시 정지 기능을 추가하고 싶은 경우를 생각해보자.

게임을 일시 정지시키기 위한 모든 로직 및 구현 내용이 하나의 클래스 안에 배치돼야 할 것이다.

 

게임 모드 클래스는 플레이어가 게임에 입장하면

게임 흐름을 처리하는 역할을 담당하게 된다.

게임 흐름은 게임에서 발생하는 모든 상황(ex. 일시정지, 플레이, 재시작 등 게임 흐름 행동)이 될 수 있다.

이와 비슷하게 멀티플레이어 게임에서는

네트워크와 관련된 게임플레이 로직이 한 곳에 배치돼야 한다.

게임 모드 클래스는 바로 이런 역할을 담당한다.

 

게임 모드는

게임 로직을 실행하고 플레이어에게 게임 관련 규칙을 적용하는 클래스이다.

 

 게임플레이 객체의 모든 관리자를 포함할 수 있으며,

게임 모드는 게임플레이 변수 및 이벤트 등 현재 플레이 중인 게임에 대한 정보를 포함한다.

싱글톤 클래스로 모든 객체 및 게임에 배치된 추상클래스에서 접근할 수 있다.

 

다른 모든 클래스와 마찬가지로 게임 모드 클래스 역시 블루프린트나 C++로 확장할 수 있다.

이를 통해 게임 안에서 발생하는 상황을 플레이어에게 업데이트하는 데 필요한 추가 기능 및 로직을 포함할 수 있다.

 

  • 게임에 입장할 수 있는 플레이어 수 제한
  • 새로 연결된 플레이어의 생성 위치 및 플레이어 컨트롤러 로직 제어
  • 게임 점수 계산 및 기록
  • 게임 승 / 패 상태 추적
  • 게임 오버 및 게임 재시작 시나리오 구현

 

게임 모드 기본 클래스

 

 

Game Session Class

로그인 승인과 같은 관리자 수준의 게임 로직을 구현한다.

게임 모드는 다은과 같은 기본 클래스를 지정할 수 있는 기능을 제공한다.

Game State Class
클라이언트가 게임 안에서 발생하는 상황을 볼 수 있도록 게임의 상태를 처리한다.
Player Controller Class
폰을 소유하고 제어하는 데 사용되는 메인 클래스다.
어떤 행동을 해야 할지 결정하는 두뇌로 생각할 수 있다.

•Player State Calss

게임 안에 있는 플레이어의 현재 상태를 저장한다.

HUD Calss
플레이어에게 보여주는 사용자 인터페이스를 처리한다.
Default Pawn Class
플레이어가 제어하는 메인 액터이다.
이 클래스가 플레이어 캐릭터가 된다.
Spectator Class
클래스의 하위 클래스가 되며,
관람자 폰 클래스는 게임을 관람하는 기능을 담당하는 폰을 지정한다.
Replay Spectator Player Controller
게임 안에서 게임이 플레이되는 동안 리플레이 조작하는 기능을 담당하는 플레이어 컨트롤러다.
Server Stat Replicator Class
서버 네트워크 통계 데이터의 리플리케이션(replication)을 담당한다.

 

 

기본 클래스를 그대로 사용하거나, 고유 구현 및 동작을 위해 클래스를 지정할 수도 있다.

이 클래스들은 게임 모드와 함께 동작하며 월드에 배치되지 않고 자동으로 실행된다.

 

 

게임플레이 이벤트

 

 

 멀티플레이어 게임에서는 많은 플레이어가 게임에 입장할 때

플레이어가 게임으로 입장할 수 있도록 허용하고 

플레이어의 상태를 유지하는 로직을 관리할 뿐만 아니라

다른 플레이어의 상태 및 다른 플레이어와의 상호작용을 처리하는 로직을 처리하는 것이 필수적이다.

 

게임 모드는 이런 멀티플레이어 게임플레이 로직을 처리할 수 있도록

오버라이딩할 수 있는 몇 가지의 이벤트를 제공한다.

다음 이벤트는 네트워킹에 특히 유용하다.

 

  • On Post Log In 
    이 이벤트는 플레이어가 게임에 성공적으로 로그인한 후에 호출된다.
    이 시점 이후에 플레이어 컨트롤러 클래스에서 리플리케이션 로직을 호출하는 것이 안전하다.
  • Handle Starting New Player 
    이  이벤트는 On Post Log In 이벤트 이후에 호출되며,
    플레이어가 새로 입장했을 때 처리할 일을 정의할 수 있다.
    기본적으로는 새로 입장한 플레이어에게 폰을 생성한다.
  • SpawnDefaultPawnAtTransform
    이 이벤트는 게임 안에서 실제 폰 생성을 발생시킨다.
    새로 연결된 플레이어는 특정 트랜스폼 또는
    레벨에 사전 배치된 플레이어 스타트 위치에서 생성될 수 있다.
  • On Logout
    이 이벤트는 플레이어가 게임을 나가거나 플레이어가 삭제될 때 호출 된다.
  • On Restart Player
    이 이벤트는 플레이어가 리스폰 될 때 호출된다.
    SpawnDefaultPawnAtTransform 이벤트와 비슷하게 플레이어는 특정 트랜스폼이나
    미리 설정된 위치에 재생성될 수 있다.

 

 

 

네트워킹

  게임 모드 클래스는 클라이언트나 입장한 플레이어에게 복제되지 않으며

게임 모드 클래스의 범위는 생성된 서버로 제한한다.

기본적으로 클라이언트 - 서버 모델에서

클라이언트는 서버에서 실행 중인 게임 안에서 입력 역할만 한다.

따라서 게임플레이 로직은 클라이언트에 존재하지 않고 서버에만 존재해야 한다.

 

 

'UE5' 카테고리의 다른 글

Delegate 사용방법  (1) 2023.12.05
언리얼 내의 포인터  (0) 2023.11.02
UE5 멀티스레딩과 enum을 이용한 상태 변환  (1) 2023.10.22
UFUNCTION() 응용을 위한 가이드  (1) 2023.10.16
Physics Field System _ RPG 부서지는 물체  (1) 2023.10.16