🎮언리얼 엔진 주요 클래스 가이드(복습)

2025. 3. 26. 02:10·Dev./UE 언리얼 엔진

주요 클래스별 역할과 기능

✅ GameMode (게임 모드)

  • 핵심 기능:
    • 게임 규칙과 흐름의 총괄 관리자
    • 게임 시작 시 단 한 번 생성되어 레벨 내 규칙, 승패 조건, 점수 계산, 플레이어 스폰 등을 관리
  • 예시:
    • FPS 게임에서 점수 계산 및 라운드 관리 담당
    • 새 플레이어 접속 시, Pawn(캐릭터)과 PlayerController를 생성하고 연결
    • 게임 시작/종료 이벤트 제어 및 일정 시간 후 승리팀 결정 등
  • 관리 항목:
    • DefaultPawnClass, PlayerControllerClass, HUDClass 등 기본 클래스 지정
    • 플레이어 스폰 지점 및 경기 진행 상태(상태 머신) 관리
    • 중요: 서버 전용 객체이며, 클라이언트에 필요한 정보는 GameState로 전달

✅ GameState (게임 상태)

  • 핵심 기능:
    • GameMode의 게임 진행 정보를 전체 플레이어와 공유
    • 서버와 클라이언트에 모두 존재하며, 게임의 현재 상태를 담음
  • 예시:
    • 남은 시간, 전체 점수, 라운드 상태 등 관리
    • 시간제한 경기에서 남은 시간을 저장하여 모든 클라이언트에 동일하게 표시
    • 스코어보드, 플레이어 개별 정보(점수, 킬/데스) 관리 및 승패 판단에 활용
  • 관리 항목:
    • 모든 플레이어의 PlayerState 목록 관리
    • 전역 변수(예: 현재 게임 단계, 점수 등)를 클라이언트와 자동 동기화

➡️ GameMode가 “서버 전용 두뇌”라면, GameState는 그 결과를 “모두와 공유하는 게시판”이라고 볼 수 있음


✅ PlayerController (플레이어 컨트롤러)

  • 핵심 기능:
    • 플레이어의 입력을 게임 세계에 전달하는 중계자 역할
    • 키보드/마우스/패드 입력을 받아 Pawn에 명령을 전달 및 네트워크 통신 역할 수행
  • 예시:
    • 1인칭/3인칭 게임에서 카메라 제어나 입력 반응 처리
    • 점프, 공격 등의 명령을 서버에 전달하여 Pawn에게 실행 요청
    • Pawn이 파괴되어도 남아있어, 새로운 Pawn을 생성해 연결(리스폰 기능 구현)
  • 관리 항목:
    • 현재 조종 중인 Pawn 관리
    • 카메라(PlayerCameraManager)와 입력 컴포넌트, HUD(UI) 생성
    • 네트워크: 서버는 모든 PlayerController를 가지고, 클라이언트는 자기 자신의 컨트롤러만 복제받음

✅ Pawn (플레이어 캐릭터)

  • 핵심 기능:
    • 게임 세계에서 움직이고 상호작용하는 실제 객체
    • 플레이어 캐릭터, 탈것, 드론 등 모두 Pawn의 하위 클래스에 해당
  • 예시:
    • FPS/TPS 게임의 주인공 캐릭터, 레이싱 게임의 차량, RTS의 유닛 등
    • 이동, 점프, 공격 등 플레이어 입력에 따른 동작 실행
    • AIController가 소유하면 NPC로 동작
  • 관리 항목:
    • 상태(체력, 스태미나) 및 동작 로직 관리
    • 네트워크 복제 설정 시, 서버의 위치/상태 변화가 모든 클라이언트에 반영됨
    • 보통 PlayerState를 참조하여 플레이어 정보(점수, 이름 등) 활용

✅ UserWidget (유저 위젯, UI 요소)

  • 핵심 기능:
    • UMG 시스템을 통한 UI 제작 (체력바, 맵, 인벤토리 등)
    • 게임 화면에 표시되는 요소를 담당하며, Actor가 아니므로 월드와 별도로 작동
  • 예시:
    • 게임 시작 시 HUD(Head-Up Display) 생성 및 뷰포트에 추가
    • 체력바는 Pawn 체력 정보를 읽어와 표시, 미니맵은 위치 정보를 활용하여 그림
    • 메뉴, 인벤토리, 퀘스트 로그 등 다양한 UI 구현
  • 관리 항목:
    • 하위 위젯(텍스트, 이미지, 프로그래스바 등) 배치 및 업데이트
    • 데이터는 Pawn, PlayerState, GameState 등에서 읽어와 반영
    • 중요: 클라이언트 전용 객체로 서버와 직접 동기화되지 않음

클래스 간 상호작용

✨ PlayerController를 이해하는 것이 핵심이다!
  • GameMode ↔ GameState:
    • GameMode(서버 전용)가 게임 진행 정보를 관리하면, 이를 GameState에 반영해 클라이언트와 공유
    • 예: 점수 변경 시 GameState가 업데이트되어 모든 플레이어가 동일한 정보를 확인
  • GameMode → PlayerController/Pawn:
    • 새로운 플레이어 접속 시 GameMode가 PlayerController와 Pawn을 생성 및 연결
    • 게임 시작 및 리스폰 시, 기본 Pawn 생성 및 소유(Possess) 처리
  • PlayerController ↔ Pawn:
    • PlayerController가 입력을 받아 Pawn의 이동 및 동작을 제어
    • Pawn 상태 변화는 PlayerController와 UI에 전달되어 업데이트됨
    • ➡️ 플레이어의 “대리인”이 Pawn을 움직여, 실제 행동을 실행하는 구조
  • PlayerController ↔ UserWidget (UI):
    • PlayerController는 게임 시작 시 HUD/UI 위젯 생성
    • 입력 처리와 UI 상호작용(예: 버튼 클릭)도 담당하며, 서버와 클라이언트 간 RPC로 명령 전달
  • GameState ↔ PlayerState ↔ UI:
    • GameState가 전체 게임 상태(남은 시간 등)를, PlayerState가 각 플레이어 정보를 관리
    • UI는 이 데이터를 읽어 스코어보드, 팀 정보 등을 실시간으로 표시

🕹️ 싱글플레이 vs 멀티플레이

🔹 싱글플레이 (로컬)

  • 특징: 모든 객체가 한 로컬 머신에서 실행되므로 구조가 단순
  • 주요 객체:
    • GameMode & GameState: 로컬에서 생성되어 게임 규칙 및 상태 관리
    • PlayerController & Pawn: 플레이어의 입력에 따라 즉시 반응 (네트워크 지연 없음)
    • UserWidget: 로컬 UI 생성 및 업데이트

🔹 멀티플레이 (리슨 서버)

  • 구조: 한 명의 호스트(서버)와 여러 클라이언트로 역할 분리
  • 서버(호스트) 측:
    • GameMode: 서버에서만 존재하며 게임 규칙 관리
    • GameState: 서버에서 업데이트 후 모든 클라이언트에 동기화
    • PlayerController, PlayerState, Pawn: 각 플레이어 별로 생성되어 서버에서 관리
  • 클라이언트 측:
    • GameState: 서버에서 복제된 읽기 전용 복제본 사용
    • 자신의 PlayerController: 입력 처리 및 UI 생성 전담
    • Pawn 복제본: 서버의 상태를 반영해 모든 클라이언트에 표시
    • UserWidget: 각 클라이언트 로컬에서 UI 구성 및 업데이트
  • 데이터 흐름:
    • 서버는 권위(Authority)를 갖고 모든 게임 로직을 처리
    • 클라이언트는 입력을 서버에 전달RPC) 받고, 복제된 데이터를 화면에 표시

⚙️ 언리얼 엔진에서의 데디케이티드 서버 사용

빌드: 언리얼 엔진 프로젝트에서는 데디케이티드 서버를 별도로 빌드해야 한다.

  • (소스 코드를 받아 빌드하는 경우가 많다.)

2025.03.13 - [Dev./게임 네트워크] - [TIL_250313_1] 언리얼 소스 코드 빌드하기

 

[TIL_250313_1] 언리얼 소스 코드 빌드하기

💭회고컴퓨터 용량 부족 문제로 인해 해당 실습은 진행하지 못하고 있는 상태이나... 일단 방법은 정리해두는 편이 좋겠다 생각해서 정리 글을 작성해본다. 소스코드 클론하는 것만으로도 거의

raindrovvv.tistory.com

- 배포: 서버 전용 실행 파일을 생성해, 실제 운영 환경에 배포한다.

- 네트워크 동기화: 서버에서 모든 게임 상태를 관리하고 클라이언트와 동기화하여, 플레이어들이 동일한 게임 정보를 받아볼 수 있도록 한다.


🔗참고 링크

 

GameMode, GameState, PlayerController, UserWidget, Pawn

핵심 기능: 게임의 규칙과 흐름을 총괄하는 관리자 클래스입니다. 게임이 시작되면 한 번만 생성되며, 해당 레벨에서 게임 규칙, 승패 조건, 점수 계산, 플레이어 스폰 등의 로직을 담당합니다​

velog.io

'Dev. > UE 언리얼 엔진' 카테고리의 다른 글

게임 코드 리팩터링: 5가지 핵심 결정 원칙  (0) 2025.04.03
[UE/Tip] 유용한 팁 : ⚙️언리얼 엔진 플러그인 만들기 +  (0) 2025.03.27
[TIL_250325] UE5로 숫자 야구 게임 만들기🔄️  (0) 2025.03.25
[TIL_250306] 언리얼 엔진 시네마틱(엔딩 씬)  (0) 2025.03.06
[TIL_250305] 언리얼 엔진 자막 달기  (0) 2025.03.05
'Dev./UE 언리얼 엔진' 카테고리의 다른 글
  • 게임 코드 리팩터링: 5가지 핵심 결정 원칙
  • [UE/Tip] 유용한 팁 : ⚙️언리얼 엔진 플러그인 만들기 +
  • [TIL_250325] UE5로 숫자 야구 게임 만들기🔄️
  • [TIL_250306] 언리얼 엔진 시네마틱(엔딩 씬)
raindrovvv
raindrovvv
raindrovvv 님의 블로그 입니다.
  • raindrovvv
    raindrovvv 님의 블로그
    raindrovvv
  • 전체
    오늘
    어제
    • 분류 전체보기 (100) N
      • Dev. (93) N
        • UE 언리얼 엔진 (48) N
        • Unity 유니티 (0)
        • Wwise 와이즈 (7) N
        • 게임 네트워크 (8)
        • 그래픽스 Graphics (22) N
        • 프로젝트 (4)
        • 기타 개발 관련 (4)
      • Computer Science (0)
        • 하드웨어 HW (0)
        • 소프트웨어 SW (0)
        • 통신 (0)
        • 데이터 (0)
      • 블로그 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    게임사운드
    게임
    게임개발
    와이즈
    언리얼엔진
    그래픽스
    오디오미들웨어
    네트워크
    Unreal
    AI
    고라니
    TA
    머티리얼
    언리얼
    UE
    게임네트워크
    Wwise
    게임음향
    셰이더
    unrealengine
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
raindrovvv
🎮언리얼 엔진 주요 클래스 가이드(복습)
상단으로

티스토리툴바