게임 프로그래밍의 특수성
- 사용자 : 쾌적한 경험을 위해 단일 컴퓨터에서 최대 성능을 뽑아내야 한다.
- 개발자 : 게임 규모가 커질수록 방대하고 복잡한 기능을 안정적으로 관리해야 한다.

언리얼 엔진의 선택
- 성능을 위해 기존 C++ 언어를 포기할 수 없다.
- 기존 C++ 언어를 확장해 모던 객체 지향 설계를 가능하도록 만듬.
- 모던 객체 지향 설계를 위한 새로운 시스템을 구축

언리얼 오브젝트
언리얼엔진 오브젝트
- 언리얼 엔진이 설계한 새로운 시스템의 단위 오브젝트
- 기존 C++ 오브젝트에 모던 객체 지향 설계를 위한 다양한 기능을 추가한 오브젝트
- 일반 C++ 오브젝트와 언리얼 오브젝트 두 객체를 모두 사용 가능
- 구분을 위해 일반 C++ 오브젝트는 F, 언리얼 오브젝트는 접두사 U를 사용
- 각 오브젝트의 사용 용도
UCLASS 매크로
언리얼 오브젝트는 앞서 말했듯이 게임 오브젝트 처리용으로 탄탄한 시스템이다. 언리얼 오브젝트의 베이스 클래스는 UObject로 파생되는 클래스에 UCLASS 매크로를 사용하면 UObject 처리 시스템에서 인식하게 된다.

정리
- 게임이 대형화되면서 성능과 유지보수 두 가지 모두 중요해짐.
- 언리얼 엔진은 C++ 언어를 확장한 언리얼 오브젝트라는 객체 구조를 고안함
- 지정된 매크로를 사용해 빌드를 수행하면, 추가 코드가 자동으로 만들어지는 구조를 가짐.
- 언리얼 오브젝트를 사용해 대규모 게임 제작을 안정적으로 설계하고 구현할 수 있음.