Day1
Unreal Engine 조사
게임엔진이란
비디오 게임 개발에 필요한 기능을 모아둔 프레임워크, 개발자에게 그래픽 렌더링, 물리 법칙, 사운드, 유저 입출력 등과 같은 기능을 제공함.
언리얼의 주요 기능
- 그래픽 렌더링: 빛과 그림자를 실시간 연산하여 시각적 결과를 제공
- 물리 엔진: 게임 내 오브젝트에 중력, 충돌, 마찰과 같은 물리법칙 구현
- 비주얼 스크립팅: 비개발자도 가능하게 기능 구현을 노드 형태의 시각적 블록 조작으로 가능하게 함.언리얼의 장단점
- 장점: 고품질 실사 그래픽 및 렌더링 성능 우수, 수익 발생 전까지 무료로 사용 가능한 정책
- 단점: 엔진이 무겁고 요구 PC 사양이 높음; C++ 기반 코어 시스템에 대한 학습 난이도가 높음언리얼 사용사례 및 쓰임배틀그라운드, P의 거짓; 각 게임에 앞서 말한 엔진의 주요 기능을 제공하여 제작에 도움을 줌
Game level 개념
레벨이 게임의 구성 요소에서 어떤 역할?
유니티에서 씬에 해당하며 플레이어가 경험하는 하나의 스테이지 등을 구성하는 단위임
게임 레벨의 주요 구성 요소를 조사 각 역할 설명
- 레벨: 유니티에서 씬; 플레이어가 경험하는 스테이지 등을 구성하는 단위
- 월드: 여러 개의 레벨을 담는 최상위 컨테이너, 여러 레벨을 겹처서 로드
- 액터: 유니티의 GameObject; 공간에 배치되는 모든 객체의 기본 단위
- 라이트: 조명 역할
- 카메라: 말그대로 카메라 역할
개인 기록
UnityEngine.Object <-> UObject(GC, 리플렉션, 직렬화 지원); 순수 클래스
GameObject <-> AActor; 옵젝
MonoBehaviour <-> UActorComponent, USceneComponent; 컴포넌트
Pawn, Character 같은 클래스 존재
ScriptableObject <-> UDataAsset
대량 데이터: DataTable
유니티에서는 GameObject에 MyHeroBrainComponent와 HealthComponent를 같이 붙이는 구조라면, 언리얼에서는 ACharacter라는 부모를 상속받은 MyHeroClass를 만들고, 이 클래스의 내부 멤버 변수로 HealthComponent를 선언하여 소유하는 구조입니다.
언리얼에서는 컴포넌트를 액터가 멤버 변수 형태로 내부에서 직접 소유하는 구조임(컴파일 타임에 찾을 수 있음) -> 유니티에서 컴포넌트를 그때그때 조립하는 방식과 달리 언리얼에서는 클래스를 확실히 설계(컴파일 타임에 미리 설계)하고 내장시켜 상속 기반으로 설계해야 함
유니티에서 컴포넌트 조립과 같은 팩토리 패턴은 언리얼에서 미리 슬롯(조립할 컴포넌트 변수)을 만들어 그곳에 포인터를 할당하는 식으로 처리