언리얼 오브젝트 기초

myeongrangcoding·2023년 11월 30일

언리얼 오브젝트 기초

  • 게임 프로그래밍이 가지는 특수성과 언리얼 오브젝트의 필요성의 이해
  • 언리얼 오브젝트의 선언과 엔진 내부 컴파일 과정의 이해

언리얼 오브젝트

  • 성능과 안정성이라는 두 마리 토끼를 잡아야 한다.(우선은 성능.)
  • C++: 안정성보다 성능중시
    • 메모리 직접 제어
    • 캐시의 활용
    • 저수준 API의 직접 호출
    • 복사 작업 최소화
  • OOP(Java, C#): 성능보다 안정성중시
    • 유지보수에 뛰어남
    • 자동으로 메모리를 관리해 프로그래머들의 실수로부터 안전하게 프로그램을 지켜줌

언리얼 엔진의 선택

  • 성능을 위해 기존 C++ 언어를 포기할 수 없었고 C++의 매크로 기능을 활용해서 기존 C++ 언어를 확장해 모던 객체 지향 설계를 가능하도록 만듦.

언리얼 오브젝트

  • 언리얼 엔진이 설계한 새로운 시스템의 단위 오브젝트(객체)
  • 기존 C++ 오브젝트에 모던 객체 지향 설계를 위한 다양한 기능을 추가한 오브젝트
  • 일반 C++ 오브젝트(저수준 빠른 처리를 위한 기능 구현에 사용)와 언리얼 오브젝트(콘텐츠 제작에 관련된 복잡한 설계 구현에 사용)의 두 객체를 모두 사용할 수 있음.
  • C++ 오브젝트는 F, 언리얼 오브젝트는 접두사 U를 사용함.

UCLASS 매크로

  • 이 매크로가 있는 경우에는 여러 가지 내부적인 기능들이 자동으로 만들어지는데, 매크로 선언만으로 Java나 C# 등의 후발언어가 제공하는 기능들을 바로 사용할 수 있다.

Unreal Header 툴

  • 헤더로 선언된 매크로들을 참조해 가지고 Unreal Object에 관련된 generated.h 파일을 자동으로 생성 시켜줌.
  • 자동으로 추가 코드를 만들어내서 언리얼 오브젝트에서 다양한 기능이 지원되도록 도와주는 역할을 함.
  • 자동으로 생성된 코드를 포함해서 마지막 최종 Build를 진행하는 두 단계의 과정으로 진행된다.

정리

  • 성능과 유지보수 두 가지를 모두 잡기 위해 언리얼 엔진은 C++ 언어를 확장한 언리얼 오브젝트라는 객체 구조를 고안함.
  • 지정된 매크로를 사용해 빌드를 수행하면, 추가 코드가 자동으로 만들어지는 구조를 가짐.

profile
명랑코딩!

0개의 댓글