프로그래밍 툴 : 로우 레벨 메모리 트래커
ㄴ 언리얼 엔진 프로젝트의 메모리 사용량을 추적하는 툴, 범위 태그 시스템을 사용하여
언리얼 엔진과 OS가 할당한 모든 메모리 기록을 유지함

Sparse Class Data 시스템
프로퍼티는 디자이너가 액터 비헤이비어에서 반복작업을
수행할 수 있는 좋은 방법을 제공하지만 게임을 출시할 때는 대다수의 프로퍼티가
상수처럼 사용되기 때문에 중복된 프로퍼티를 사용하는 경우 희소 클래스 데이터를 사용하면
이러한 프로퍼티를 단일 공유 구조체 인스턴스로 전송하여 메모리에 프로퍼티의 사본 단 하나만을 
유지하는 동시에 디자이너가 블루프린트 그래프에서 프로퍼티 값에 액세스하고 편집하도록 할 수 있다.

게임 플레이 클래스
ㄴ 애셋이나 클래스의 레퍼런스를 찾아야 하는 경우는 한 번만 찾도록 생성자에서 static으로 선언된
FObjectFinder나 FClassFinder에 찾아 놓고 이것을 사용해 프로퍼티를 초기화한다.

언리얼 엔진 아키텍처

Assert
ㄴ check 매크로 : DO_CHECK 매크로가 빌드에 컴파일되는 경우에 표현식을 실행
ㄴ verify 매크로 : DO_CHECK가 꺼져 있어도 표현식을 실행
ㄴ ensure 매크로 : 표현식을 검증하여 실패하면 그 지점까지 이르는 콜스택을 생성한다.

델리게이트
ㄴ 델리게이트는 힙에 메모리를 할당해야 하기 때문에 값으로 전달 가능하기는 하지만 가급적이면 참조
전달하는 편이 낫다.
ㄴ 델리게이트 선언은 제공되어 있는 매크로 중 하나를 사용하여 이루어진다.
선언한 델리게이트 유형을 사용하여 델리게이트 클래스의 인스턴스를 생성한다.
함수에 델리게이트를 동적으로 바인딩 후 델리게이트의 Execute를 호출하면 됨
ㄴ 캐릭터에 Onattacked 델리게이트를 public으로 만들어 놓고 다른 클래스들에서 이 델리게이트에 접근하여
호출되었으면 하는 함수를 등록하는 방식으로 사용할 수 있다.

타이머
ㄴ 타이머는 글로벌 타이머 매니저에서 관리한다. GetWorldTimerManager 
ㄴ SetTimer와 SetTimerForNextTick 함수로 타이머를 셋업하는데, 각각 오버로드가 다수 있다.
ㄴ SetTimer 함수는 딜레이 후 함수나 델리게이트를 호출하는 타이머를 설정하며, 그 함수 호출을 무한 반복하도록 설정할 수 있다.
ㄴ PauseTimer는 타이머 핸들을 사용하여 실행중인 타이머를 일시정지한다. 함수 호출 실행은 막히지만 경과 및 남은 시간은 그대로 유지된다.
ㄴ 액터에 종속된 다른 액터 초기화에 사용할 수 있다.


게임플레이 모듈
모듈의 루트 폴더는 해당 모듈과 이름이 동일해야 한다.
ㄴ Source\[모듈명]\Public 디렉터리에 헤더 파일
ㄴ Source\[모듈명]\Private 디렉터리에 C++ 파일
IMPLEMENT_PRIMARY_GAME_MODULE( <ModuleName>, "<GameName>");
ㄴ Source\[모듈명] 디렉터리에 빌드 파일(모듈명.Build.cs)

DefaultEngine.ini 파일에 추가한 모듈에 대한 내용을 추가해야 한다.

인터페이스
트리거 볼륨에 들어서면 함정이 발동되거나, 적에게 경보가 울리거나, 플레이어에게 점수를 주는 시스템을 가진 게임
ㄴ 함정, 적, 점수에서 ReactToTrigger 함수를 구현 
ㄴ 여러 클래스에서 공유 함수 기능이 필요하므로 인터페이스를 사용하여 ReactToTrigger 함수를 가상 함수로 선언

인터페이스 선언
UINTERFACE 매크로를 사용
UObject 대신 UInterface를 상속 (UInterface가 진짜 인터페이스는 아님)
헤더 파일에 UInterface 를 상속받는 클래스 이름에서 U를 I로 바꾼 클래스를 정의한다.
다른 클래스에서 상속하게 되는 실제 인터페이스는 이 I로 시작하는 클래스가 될 것이다.

프로퍼티 (UPROPERTY 매크로)
정수, (비트 마스크로 노출 가능)
부동 소수점 (float, double)
부울
스트링 
ㄴ FString : 고정적인 캐릭터 동적 배열
ㄴ FName : 스트링 테이블로 된 변경불능 대소문자 구분 없는 스트링에 대한 레퍼런스 
ㄴ FText : 현지화 처리를 위해 고안된 보다 탄탄한 스트링 표현'

구조체 (USTRUCT 매크로)

코어 리디렉트 
ㄴ 개발 도중 기존 클래스, 프로퍼티, 함수의 이름을 변경해야 할 경우가 있을 때 사용한다.
ㄴ 플러그인이나 프로젝트의 ini 파일에 구성

+ Recent posts