언리얼 엔진 모듈 API 지정자에 대해
언리얼 엔진은 모듈 단위로 구성되어 있으며, 각 모듈은 특정 기능 집합을 캡슐화하여 엔진 전체의 확장성과 유지보수성을 높인다. 모듈 API 지정자(Module API Specifiers)는 이러한 모듈들 간의 경계와 노출되는 인터페이스를 관리하는 데 중요한 역할을 한다. 이 TIL에서는 언리얼 엔진의 모듈 API 스펙파이어가 무엇인지, 왜 중요한지, 그리고 주요 스펙파이어들에 대해 살펴보겠다.
1. 모듈 기반 아키텍처
언리얼 엔진은 모듈(Module) 이라는 단위로 구성된다.
- 각 모듈은 특정 기능을 담당하며, 서로 독립적인 컴파일 단위로 관리된다.
- 모듈 간의 의존성은 명확히 정의되어 있으며, 이를 통해 엔진의 빌드 시간 및 관리가 용이해진다.
2. 모듈 API 스펙파이어의 역할
모듈 API 스펙파이어는 각 모듈이 외부에 노출하는 인터페이스를 지정하는 역할을 한다.
- 내부 구현 캡슐화:
모듈 내부의 구현 세부 사항은 감추고, 필요한 인터페이스만 외부에 공개함으로써 모듈 간 결합도를 낮춘다. - 컴파일 타임 경계 설정:
모듈의 API 스펙파이어를 통해 어떤 함수, 클래스, 변수가 다른 모듈에서 접근 가능한지 명시하여, 컴파일러가 올바른 링크 및 코드 생성을 수행하도록 돕는다. - 유지보수 및 확장성 향상:
명시적인 API 경계를 설정함으로써 모듈의 업데이트나 리팩토링 시, 외부에 미치는 영향을 최소화할 수 있다.
3. 주요 스펙파이어 종류
언리얼 엔진에서 사용되는 대표적인 모듈 API 스펙파이어는 다음과 같다.
- ENGINE_API, CORE_API 등:
- 엔진의 주요 기능들이 포함된 모듈에서 사용된다.
- 해당 스펙파이어가 붙은 클래스나 함수는 외부 모듈에서도 접근할 수 있도록 DLL 내보내기(export) 처리가 된다.
- NO_API:
- 모듈 내부에서만 사용되는 클래스나 함수에 사용된다.
- 외부 모듈에서 접근할 필요가 없거나, 접근이 허용되지 않아야 하는 경우에 사용하여, 불필요한 심볼 노출을 막는다.
- 기타 사용자 정의 스펙파이어:
- 개발자는 프로젝트 특성에 맞게 커스텀 스펙파이어를 정의하여 모듈 경계를 세밀하게 조정할 수 있다.
4. 스펙파이어가 중요한 이유
- 모듈 간 의존성 관리:
모듈 API 스펙파이어를 통해 각 모듈의 인터페이스를 명확히 함으로써, 모듈 간의 의존성을 관리하고, 런타임 오류나 링크 에러를 예방할 수 있다. - 코드 최적화 및 보안:
불필요한 심볼 노출을 줄여 컴파일 시간과 최종 바이너리 크기를 최적화하며, 보안을 강화할 수 있다. - 크로스 플랫폼 지원:
각 플랫폼에 맞는 DLL 내보내기/불러오기 규칙을 스펙파이어를 통해 통일성 있게 적용함으로써, 다양한 플랫폼에서 동일한 코드 베이스를 안정적으로 유지할 수 있다.
'Unreal 5 > Study' 카테고리의 다른 글
2. [Unreal 5 / C++] 2D 절차적 맵 생성 알고리즘 (미로 생성 알고리즘) (0) | 2025.03.07 |
---|---|
1. [Unreal 5 / C++] 2D 절차적 맵 생성 알고리즘 (미로 생성 알고리즘) (0) | 2025.02.21 |
[Unreal 5 / C++] 3. Pawn 클래스로 3D 캐릭터 만들기 - 이동 및 비행체 (0) | 2025.01.31 |
[Unreal 5 / C++] 2. Pawn 클래스로 3D 캐릭터 만들기 - Collision (1) | 2025.01.31 |
[Unreal 5 / C++] 1. Pawn 클래스로 3D 캐릭터 만들기 - Physics base (0) | 2025.01.27 |