Object
•
모든 프로젝트 내부의 요소는 Object 로 구성
◦
OOP 기준
◦
C++ Class 를 extends 하여 구성한다
◦
Object 는 모두 Blueprint 화 할 수 있다
•
UObject 상속
Blueprint (= class)
•
Object 를 Instance 화 하여, 이를 복제 가능 대기 상태로 만든 것.
•
Script → UI 화 한것
•
모든 Blueprint 는 C++ 스크립트화 할수 있다 → 데이터 손실우려가 있으므로 어느정도 스케치가 끝나면 바로 스크립트화 해서 관리하는것이 좋다
flowchart LR Object Script Blueprint Object -->|extends|Script Object -->|extends|Blueprint
Mermaid
복사
Actor
•
레벨에 배치 할 수 있는 모든 오브젝트
•
Class, Blueprint 에서 인스턴스화 하여 Spwan, Destruction 될 수 있다
•
AActor 상속
Component
•
Actor 가 가질수 있는 기능 조각
•
Actor 와 함께 작동하며, Actor 없이 작동 불가능
flowchart LR object[UObject] subgraph AActor component[Component] end object -.-> |extends| AActor
Mermaid
복사
Pawn
•
AActor 의 Subclass, In game 에서 활동하는 캐릭터 등
•
Player 또는 NPC 등으로 존재
•
게이머 → Player 컨트롤 = Possessed [=빙의],
→ 컨트롤 해제시 Unpossessed [=빙의 해제]
Character
•
AActor 의 서브 클래스, 사용자가 컨트롤하게 되는 오브젝트
Player controller
•
게이머의 조작을 입력받아 특정 AActor 를 동작하게 하는 것
•
APlayerController
AI Controller
•
특정 로직에 따라 자동으로 AActor 를 동작하게 하는 것
•
가상의 플레이어가 Possessed 한다!
•
Pawn 에게 따로 Controller 를 지정하지 않았다면, 자동으로 연결된다!
•
AAIController
flowchart UObject -.-> |extends| AActor subgraph AActor Pawn Character end subgraph Controller AIController PlayerController end Controller -.-> |Control| AActor
Mermaid
복사
Player state
•
게임 참여자의 상태값
•
게이머 1개씩 해당
•
멀티플레이의 경우 복제된 각 게이머의 상태가 모두에게 존재
→ 원본데이터는 서버에서 관리
•
APlayerState
GameMode
•
게임규칙
◦
플레이어 참여 여부
◦
일시정지
◦
승리 조건등
•
특징
◦
Level 당 1개의 GameMode 만 존재
◦
멀티플레이시 서버에 1개 존재, 나머지 게이머에게는 레플리카가 전송됨
•
CPP Class:
◦
AGameMode
GameState
•
모든 사람에 적용할 상태값 관리
•
멀티 플레이시 각 게이머가 독립적으로 가진다
•
AGameState
Brush
•
Level geometry를 구성할떄 사용하는 툴
•
Binary space partition 이라고도 한다
•
지형을 디자인한다
Volume
•
연결된 효과에 따라 용도가 달라지는 3D 공간
1.
Blocking Volumes - Actor 가 통과하지 못하게 막는다
2.
Pain Causing Volumes - Overlap 되는 Actor 에게 지속적으로 이벤트를 유발
3.
Trigger Volumes - Actor 가 들어오거나 나갈때 이벤트를 유발
Level
•
제작자가 정의하는 게임플레이 영역
•
Map 이라고 불리기도 한다
World
•
모든 Level 이 담겨 있는 컨테이너. Level 의 스트리밍과 Actor 의 생성미 소멸 등을 처리