일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 가상 바이트
- Virtual Byte
- Windows Build
- 작업 집합
- Specular
- OculusMotionVectorPass
- 3d
- Toon Shader
- Cell Look
- 벡터
- 개인 바이트
- URP로 변경
- 메모리 누수
- URP
- VR
- ColorGradingLutPass
- Three(Two) Tone Shading
- 게임 수학
- C언어
- Cell Shader
- working set
- Cartoon Rendering
- Private Bytes
- 프로그래밍 기초
- ASW(Application SpaceWarp)
- Rim Light
- AppSW
- Today
- Total
WinCNT
GamePlay Framework 본문
GamePlay Framework 요약
- 활용을 하기위해서는 관련 클래스와 내부 이벤트를 알아야한다.
- 블루 프린트 라이브러리 함수는 어느 곳이든 호출가능
- 새로운 액터가 필요하다면 블루 프린트 클래스 or C++상속
- 새로운 컴포넌트 필요하다면 블루 프린트 클래스 or C++상속
- 게임 플레이를 만든다 = 컴포넌트의 조합으로 액터를 만들기 + 이벤트를 처리
GamePlay Framework란?
엔진이 게임 플레이에 대하여 설계한 클래스와 노드
이를 활용(상속,함수재정의,이벤트 바인딩)하여 게임플레이를 구현할 수있다.
이벤트 바인딩
이벤트 바인딩이 되면, 따로 클래스 상속 없이, 이미 인스턴스 안에 있는 것에 포인터를 등록해서
함수를 호출하게 해줌
언리얼 클래스
Level - 경기장
GameMode - 레벨마다 하나씩 지정할 수 있음()
Pawn - Controller
GameState/PlayerState
TriggerBox
PlayerStart
GamePlay Framework의 활용
1. 상속 – 새로운 클래스를 만들기 위해 부모 클래스의 특성을 받고 멤버 변수(컴포넌트 추가)나 멤버 함수를 추가한다.
2. 함수 재정의 - 부모 클래스에서 정의한 함수를 다시 정의한다.
3. 이벤트 바인딩 – 콜백함수를 등록하는 개념으로 상속을 하지 않고도 사용할 수 있다. 이벤트가 발생 했을 때 호출 해준다.
4. 어디서든지 블루 프린트 함수 라이브러리 를 사용할 수 있다.
GameMode
면접 때 주로 물어볼 정도로 중요한 내용!!
중요한 내용은 서버에서 관리하거나 함
레벨과 분리된 게임 규칙(플레이어 스폰, 참여 인원 등)을 정의
Level의 게임모드 설정 없으면 프로젝트 Default 세팅 게임 모드를 사용한다
Pawn – Controller
Pawn은 외형 , Controller는 의지를 갖는 뇌(??)에 해당한다
(둘 다 Actor이므로 각각 방향과 위치를 갖을 수 있다)
조종할 외형을 선택하는 것 을 Possess (빙의)라고 표현
예) 플레이어가 자동차를 타는 등등
Pawn - DefaultPawn - Character
Pawn은 Controller의 Possess 대상 기능만 갖는 Actor
DefaultPawn은 StaticMesh,ShpereCollision,Movement를 소유하여 네비게이션 활용하여 움직일수 있는 최소한의 기능을 갖는 Pawn
Character는 SkeletalMesh,CapsuleCollision,CharacterMovement 를 소유하여 네비게이션 활용으로 인간형 움직임을 할 수 있는 Pawn
GameInstance
- 엔진이 시작될때 생성하는 오브젝트
- Actor가 아니므로 레벨이 전환되도 사라지지 않는다.
※ 레벨이 바뀔 때마다 Actor들은 초기화된다 - 프로젝트 세팅에서 상속받은 클래스를 설정한다.
- 블루프린트 어디서든지GetGameInstance 노드로 사용 가능하다.
Actor
Map에 배치할 수 있는 최소의 단위
UObject (언리얼 오브젝트)를 상속
Level 안에 드래그해서 배치하거나 동적으로 SpawnActor/DestroyActor로 할당할 수 있다
자신의 기능을 나타내는 ActorComponent 를 소유(인스턴스 참조)
Actor 관련 이벤트
이벤트 | 설명 |
BeginPlay | 게임이 시작 될 때 또는 Spawn 이후 |
EndPlay | 게임이 종료 될 때 또는 Destroy 이후 |
Tick | 매 프레임 업데이트 하기위해 호출됨 |
AnyDamage | TakeDamage노드의 대상이 될 때 호출됨 |
ActorBeginOverlap | 소유한 컬리전 컴포넌트가 Overlap Begin일 때 |
ActorEndOverlap | 소유한 컬리전 컴포넌트가 Overlap End일 때 |
Hit | 소유한 컬리전 컴포넌트가 Block일 때 |
ConstructionScript (Class Blueprint) | 월드에 Spawn되거나,배치되거나,속성이 바뀔 떄 호출 |
ActorComponent
- Actor에 추가되어 Actor의 특징을 구성하는 요소가 된다
예) 메쉬 렌더링 , 이동 계산 , 충돌 , AI , 입력 , 카메라
Actor , ActorComponent 관련 함수
함수 | 설명 |
SpawnActorFromClass | 액터 Spawn |
DestroyActor | 액터 Destroy |
GetAttachParentActor | 자신의 부모 Actor 얻기 |
GetAttachedActors | 자신의 자식들 액터 목록 얻기 |
GetComponent(s)ByClass | 액터가 소유한 컴포넌트 얻기 |
GetAllActors | 월드에서 Class나 Tag 기준으로 액터 목록 구하기 |
GetActorOfClass | 월드에서 Class로 액터를 찾아 첫번째 액터 구하기 |
추천 과제: Score 기록
리스폰 처리(C++)
추천 과제: 캐릭터의 리스폰을 막는 리스폰 처리
레벨에는 무한 낙하을 막는 Destroy 월드 Z 세팅이 존재한다
데미지 시스템
데미지 시스템 요약
- Causer Actor 에서 ApplyDamage함수를 사용하며 Instigator , Causer가 다를 수 있다.
- Damaged Actor에서 AnyDamage 이벤트는 항상 일어난다.
- 데미지의 HP처리는 여러 Actor에서 자주 사용하기때문에 재활용 가능한 액터 컴포넌트나 상속을 사용한다.
데미지 시스템 – 데미지 처리 이벤트
ApplyDamage -> AnyDamageEvent
ApplyPointDamage -> PointDamageEvent 이후 AnyDamageEvent
ApplyRadialDamage -> RadialDamageEvent 이후 AnyDamageEvent
위의 함수들을 이용하하면 컴포넌트를 안 쓰고 다중 상속 등으로도 데미지 시스템을 구현할 수 있다
하지만 프로그래머가 아닌 다른 팀(예를 들어 기획이라거나)도
Unreal를 통해 간편히 데미지 시스템을 이용하고 싶을 때는 컴포넌트가 편리하다
SSS
'게임 프로그래밍(학습 내용 정리) > Unreal' 카테고리의 다른 글
GUI - UMG(UnrealMotionGraphics) (0) | 2022.01.20 |
---|---|
액터 통신 (0) | 2022.01.13 |
캐릭터 셋업 (0) | 2022.01.06 |
제 3강. 컬리전 시스템 (0) | 2021.12.30 |
언리얼 소개 및 블루 프린트 (0) | 2021.12.09 |