오늘의 코드카타
- 연속된 부분 수열의 합
- 두 큐 합 같게 만들기
- 무인도 여행
오늘의 공부
학습한 강의
- 내비게이션 메시 생성과 경로 찾기 알고리즘 활용
(4) RVO 시스템을 활용한 동적 장애물 회피
(5) AIController에 간단한 인지 시스템 구현 및 자동 네비게이션 링크 생성
- 상태 머신을 활용한 AI 행동 패턴 설계
(1) 애니메이션 에셋 임포트 및 플레이어 및 AI 애니메이션 작동 메커니즘 비교
오늘의 CS
언리얼 엔진의 리플렉션
- 리플렉션
- 런타임에 프로그램의 구조(클래스 이름, 멤버 변수, 함수 등)에 대한 정보를 파악하고 조작할 수 있는 기능
- C++표준에는 리플렉션이 없기 때문에, 언리얼 엔진이 자체적으로 리플렉션 시스템을 구축을 했음
- 언리얼 엔진의 리플렉션은 매크로(UCLASS, UFUNCTION, UPROPERTY)를 사용하며, 빌드 과정 중에 언리얼 헤더 툴(UHT)을 통해 실행됨
- UHT의 역할
- 헤더 파일 파싱 : C++ 헤더 파일을 스캔하며, UCLASS 같이 매크로가 붙은 클래스, 함수, 변수들을 찾음
- 메타데이터 생성 : 매크로 정보를 바탕으로 메타데이터를 담은
.generated.h 파일을 생성함
- 데이터 구조 생성 : 메타데이터는
UClass, UFunction와 같은 특별한 객체 형태로 메모리에 저장되어 런타임에 접근 가능하게 됨
- 리플렉션의 기능
- 직렬화 : 객체를 저장하고 다시 로드할 때, 어떤 변수들을 저장해야 하는지 런타임에 파악
- 블루프린트 통합 : C++에서 정의한 변수와 함수를 블루프린트에서 노드로 사용할 수 있음
- 가비지 컬렉션(GC) : 포인터를 추적하여 참조되지 않는 객체를 안전하게 제거
- 네트워크 복제 : 변수 값들을 네트워크를 통해 복제해야 하는지 결정
- 에디터 디테일 패널 : 언리얼 에디터의 디테일 패널에서 변수들을 표시하고 수정할 수 있음