언리얼 오브젝트 기초
- 게임 프로그래밍이 가지는 특수성과 언리얼 오브젝트의 필요성의 이해
- 언리얼 오브젝트의 선언과 엔진 내부 컴파일 과정의 이해
언리얼 오브젝트
- 성능과 안정성이라는 두 마리 토끼를 잡아야 한다.(우선은 성능.)
- C++: 안정성보다 성능중시
- 메모리 직접 제어
- 캐시의 활용
- 저수준 API의 직접 호출
- 복사 작업 최소화
- OOP(Java, C#): 성능보다 안정성중시
- 유지보수에 뛰어남
- 자동으로 메모리를 관리해 프로그래머들의 실수로부터 안전하게 프로그램을 지켜줌
언리얼 엔진의 선택
- 성능을 위해 기존 C++ 언어를 포기할 수 없었고 C++의 매크로 기능을 활용해서 기존 C++ 언어를 확장해 모던 객체 지향 설계를 가능하도록 만듦.
언리얼 오브젝트
- 언리얼 엔진이 설계한 새로운 시스템의 단위 오브젝트(객체)
- 기존 C++ 오브젝트에 모던 객체 지향 설계를 위한 다양한 기능을 추가한 오브젝트
- 일반 C++ 오브젝트(저수준 빠른 처리를 위한 기능 구현에 사용)와 언리얼 오브젝트(콘텐츠 제작에 관련된 복잡한 설계 구현에 사용)의 두 객체를 모두 사용할 수 있음.
- C++ 오브젝트는 F, 언리얼 오브젝트는 접두사 U를 사용함.
UCLASS 매크로
- 이 매크로가 있는 경우에는 여러 가지 내부적인 기능들이 자동으로 만들어지는데, 매크로 선언만으로 Java나 C# 등의 후발언어가 제공하는 기능들을 바로 사용할 수 있다.
- 헤더로 선언된 매크로들을 참조해 가지고 Unreal Object에 관련된 generated.h 파일을 자동으로 생성 시켜줌.
- 자동으로 추가 코드를 만들어내서 언리얼 오브젝트에서 다양한 기능이 지원되도록 도와주는 역할을 함.
- 자동으로 생성된 코드를 포함해서 마지막 최종 Build를 진행하는 두 단계의 과정으로 진행된다.
정리
- 성능과 유지보수 두 가지를 모두 잡기 위해 언리얼 엔진은 C++ 언어를 확장한 언리얼 오브젝트라는 객체 구조를 고안함.
- 지정된 매크로를 사용해 빌드를 수행하면, 추가 코드가 자동으로 만들어지는 구조를 가짐.
