게임 제작 과정에서 프로파일링은 일반적인 앱과는 조금 다릅니다. 가장 큰 차이점은 게임이 실시간 시스템(real-time system)이라는 점입니다. 게임은 매초 수십 번씩 화면을 새로 그리며 돌아갑니다.
이 과정이 조금이라도 늦어지면 끊김이 발생하죠. 플레이어는 화면이 뚝뚝 끊기는 느낌을 즉시 받게 됩니다. 그래서 전체 실행 시간보다 프레임 하나하나의 안정성이 더 중요합니다.
평균 성능의 함정과 스파이크
게임 프로그래머는 평균 성능만 믿어서는 안 됩니다. 평균적으로 빠르더라도 갑자기 느려지는 때가 있기 때문입니다. 이런 현상을 우리는 스파이크(spike)라고 부릅니다.

스파이크가 생기면 화면이 멈칫하거나 입력 반응이 늦어집니다. 플레이어에게는 아주 불쾌한 경험이 되죠. 문제는 이런 현상이 늘 일어나지 않는다는 점입니다.
특정 상황이나 특정 프레임에서만 갑자기 튀어나옵니다. 그래서 이를 잡아내는 일이 프로파일링의 중요한 목표가 됩니다. 처음엔 이 불규칙함이 참 어렵게 느껴질 수 있습니다.
엔진 내부에 내장된 도구 활용하기
이런 어려움 때문에 게임 엔진은 특별한 기능을 제공합니다. 바로 런타임 프로파일러(runtime profiler)라는 도구입니다. 외부 프로그램에만 의존하지 않고 엔진 내부에서 직접 확인하는 방식입니다.
게임이 실행되는 동안 CPU나 메모리 상태를 바로 보여줍니다. 프로그래머가 게임을 직접 플레이하며 실시간으로 관찰할 수 있죠. 지금 이 시점에 어떤 기능이 시간을 많이 쓰는지 바로 알 수 있습니다.
갑자기 나타났다 사라지는 문제를 추적하기에 아주 유리합니다. 눈으로 직접 수치를 보면서 플레이하면 원인 파악이 빨라집니다. 아주 유용한 기능이니 꼭 활용해 보세요.
타임라인으로 데이터 분석하기
수집된 데이터는 보통 타임라인 뷰(timeline view) 형태로 봅니다. 시간 순서대로 각 작업이 얼마나 걸렸는지 보여주는 방식입니다. 렌더링이나 물리 연산 등이 차지하는 시간을 한눈에 알 수 있죠.
이 뷰를 보면 프레임이 길어진 이유를 찾기 쉽습니다. 한 가지 시스템이 문제인지, 아니면 전체적으로 느려진 것인지 파악됩니다. 정상 프레임과 비교하면 차이가 명확히 보입니다.
안정적인 플레이 경험 만들기
게임 프로파일링의 목표는 전체 속도를 높이는 것만이 아닙니다. 모든 프레임을 예측 가능하고 고르게 만드는 것이 중요합니다. 그래야 플레이어가 쾌적함을 느낄 수 있습니다.
들쑥날쑥한 프레임을 평평하게 다듬는 과정이라고 보시면 됩니다. 이런 작업이 모여 완성도 높은 플레이 감각을 만듭니다. 여러분도 이 과정에 집중해 보시길 바랍니다.