🤍ref.
- 이득우의 언리얼 C++ 게임 개발의 정석, 이득우, 에이콘출판사, 2018
- Unreal Engine 4.27 Documentation
✨info
튜토리얼 교재는 4.19v을 사용하나, 4.27v으로 실습 후 게시글을 작성하였습니다.
새로 알게 된 내용과 추가로 공부한 내용 위주로 작성합니다. 배우는 과정이라 부족한 점이 많습니다.😊
1. 언리얼 구성요소
1.1. 프로젝트 파일
Config
: 프로젝트 설정 값 보관Content
: 프로젝트에서 사용하는 애셋 관리Intermediate
: 프로젝트 관리에 필요한 임시 파일 저장 => 제거해도 자동 생성-
Saved
: 작업 중 생성된 결과물 저장 (세이브 파일, 스크린샷 등) => 프로젝트에 영향 x - C++ 프로젝트 확장 시 생성되는 폴더
Binaries
: 컴파일된 결과물 저장 => 빌드마다 재생성Source
: 소스 코드 저장 공간*.sln
: C++ 프로젝트를 관리하기 위한 VS solution 파일- 솔루션이 관리하는 프로젝트 파일 ->
Intermediate
->ProjectFiles
uproject
->Generate Visual Studio project file
에서 재생성 가능
- 솔루션이 관리하는 프로젝트 파일 ->
💙 UnrealTutorial.uproject
프로젝트를 에디터로 불러들이기 위한 정보를 저장한다.
- JSON 형식으로 기록
{}
: 객체Key:Value
: 객체가 가지는 속성""
: 문자열 데이터[]
: 배열
EngineAssociation
: 구동할 에디터 버전Modules
: C++ 모듈(컴파일 결과물) 함께 로딩Binaries
->UE4Editor-[프로젝트명].dll
검색 후 탑재
💙 C++ 개발 환경 설정: 모듈 빌드 구성
DebugGame
: 디버깅을 위해 최적화가 안 된 결과물 생성, exe 파일 생성DebugGame Editor
:DebugGame
과 동일한 수준의 에디터용 DLL 파일 생성
Development
: 중간 수준의 최적화, 디버징 가능한 결과물 생성, exe 파일 생성Development Editor
:Development
와 동일한 수준의 에디터용 DLL 파일 생성
Shipping
: 최종 배포를 위해 최적화된 코드 생성, exe 파일 생성
1.2. 에디터 용어
💙 액터 Actor
라벨
: 액터의 명칭. 여러 액터가 같은 이름을 가질 수 있음유형
: 액터가 담당하는 역할으로 액터의 클래스명
액터의 주요 기능은 크게 세 가지로 나눈다. 액터의 역할에 따라 각 기능의 사용 여부가 결정된다.
- 시각적 기능: 플레이어에게 어떻게 보여지는지
- 물리적 기능: 액터의 이동과 상호 동작을 어떻게 할 것인지
- 움직임: 액터가 어떤 움직임을 가지는지
💙 레벨 Level
플레이어가 이동하는 스테이지 영역으로, 한 월드에 배치된 액터들을 통칭한다. 일반적으로 액터를 조정하고 속성을 설정하는 등 한 레벨에서 게임을 구현하는 과정을 레벨을 설계한다고 부른다.
컴포넌트란 액터에 추가하는 함수의 일종으로, 액터에게 기능을 부여해 액터가 특정 역할을 수행할 수 있도록 한다. 예를 들어, 라이트 컴포넌트는 물체에 광원 효과를 부여해 액터가 빛을 내게 한다. 액터는 여러 개의 컴포넌트를 가질 수 있으며, 하나의 대표 컴포넌트를 지정해야 한다(Loot Component
).
컴포넌트의 자세한 내용은 엔진 소스의 헤더 파일에 선언되어 있다. (eg. 스태틱메시 컴포넌트 => StaticMeshComponent.h)
언리얼 엔진에서 제공하는 주요 컴포넌트
StaticMesh Component
: 시각 기능과 물리 기능 제공(애니메이션x), 주로 배경 물체에 사용SkeletalMesh Component
:시각, 애니메이션, 물리 기능 제공. 주로 캐릭터에 사용Collision Component
: 지정 영역에 물리 기능 제공(시각x)Camera Component
: 가상 세계의 상황을 모니터에 출력Audio Component
: 소리 발생에 사용Particle System Component
: 파티클 시스템을 설계된 이펙트 화면에 출력Light Component
: 물체에 광원 효과 부여Movement Component
: 물체게 특정한 움직임 부여
💙 모빌리티
액터가 게임플레이 도중 어떤 방식으로 이동/변화할지 제어한다. 주로 스태틱 메시 액터나 라이트 액터에 적용된다.
Static
: 액터 고정Stationary
: 위치는 고정이나 상태 변화 가능Movable
: 추가/제거/이동
라이트 액터의 모빌리티의 경우, 유니티의 Lightmapping Settings
을 월드 단위로 관리하는 방식이다. 각각 Baked
, Mixed
, Realtime
으로 매치해볼 수 있겠다. 일반적으로 Static
라이트를 통해 라이팅을 미리 빌드하는 것이 좋다. 무버블 라이트는 플레이 도중 실시간으로 라이트를 계산해 최적화가 비효율적이며, 퀄리티도 스태틱에 비해 좋은 편이 아니다.
(교재 실습에서는 튜토리얼의 편의를 위해 라이트 액터 모빌리티를 무버블로 설정했다.)
💙 프로젝트 세팅 - 맵&모드
- 컨트롤 - 특정 섹션의 설정값 제어
Export...
: 설정값을 외부 환경설정(.ini
) 파일로 익스포트Import...
: 환경설정(.ini
) 파일에 저장된 값 로드 -> 현재 값 대체
- 맵 & 모드: 기본적으로 로드할 맵&모드와 방식. 로컬 멀티플레이어 화면 레이아웃 설정 등 전반적인 맵 설정 제어
🪄Tip) 이주하기 (Migration)Migrate Tool
을 활용해 애셋들을 한 프로젝트에서 다른 프로젝트로 복사할 수 있다.
eg) 머티리얼을 하나 이주시키면 해당 머티리얼을 정의하는 텍스처 애셋 자동 복사Input
, Collision
, Map
등 프로젝트 설정과 언리얼 하위 버전으로는 이주가 불가능하니 주의하자.
Leave a comment