병목 진단 라우터

최적화는 Stat Unit으로 축을 가른 뒤 시작한다

Tick, Cast, Timer, Pooling은 처방 후보일 뿐이다. 먼저 같은 장면에서 프레임 시간을 재고 Game, Draw, GPU, 로딩 지연 중 어디가 튀는지 분리해야 블루프린트 수정이 실제 개선으로 이어진다.

01 맵·카메라·입력·해상도 고정
02 Game·Draw·GPU·Hitch 축 분리
03 stat script·Insights로 위치 추적
04 / 05 하나만 바꾸고 같은 조건에서 비교
Tick / Timer

호출 빈도를 낮추거나 이벤트화한다

Timer는 같은 일을 더 싸게 만드는 마법이 아니다. 덜 자주 실행될 때 효과가 있다.

GetAllActors

월드 전체 검색을 반복하지 않는다

BeginPlay 1회 캐싱, Overlap 등록, Subsystem 목록, 이벤트 기반 참조로 대체한다.

Cast / Reference

반복 캐스트와 하드 참조를 분리한다

가벼운 부모 클래스나 인터페이스로 의존성을 낮추고, 확인한 참조는 저장해 재사용한다.

Loop / Array / Map

접근 패턴 기준으로 자료구조를 고른다

전체 순회는 Array, 키 조회는 Map이 맞다. 큰 배열은 프레임 분할과 조기 종료를 같이 본다.

Trace / Collision

거리, 채널, 결과 개수를 줄인다

필요한 순간에 필요한 채널만 묻고, 하나면 Single Trace를 쓴다. 복잡한 콜리전은 단순 형상으로 낮춘다.

UI / Load

폴링과 동기 로드를 따로 잡는다

UMG Binding은 이벤트 갱신으로 바꾸고, 무거운 에셋은 Soft Reference와 Async Load로 이동한다.

stat unit

Game, Draw, GPU 중 어느 축이 프레임을 잡는지 먼저 나눈다.

stat script

스크립트 실행 시간이 Game Thread 안에서 커지는지 본다.

dumpticks

불필요하게 Tick을 가진 Actor와 Component를 찾는다.

Insights

stat startfile/stopfile 캡처로 hitch와 호출 스택을 비교한다.

Slate / Asset

UI 폴링과 로딩 hitch는 전용 분석 화면으로 따로 확인한다.