게임 성능을 말할 때 얼마나 빠른가를 먼저 떠올리시나요? 사실 더 중요한 기준이 있습니다. 바로 정해진 시간 내에 작업을 마치는 것입니다. 게임은 실시간으로 돌아가는 시스템이기 때문이죠.
프레임 예산이라는 개념을 이해해야 합니다
우리는 한 프레임이 쓸 수 있는 시간을 프레임 예산(frame budget)이라 부릅니다. 30FPS 게임이라면 약 33ms가 주어집니다. 60FPS라면 16ms 안에 모든 걸 끝내야 하죠. 입력부터 렌더링까지 이 시간 안에 마쳐야 합니다.
시간을 1ms라도 넘기면 어떻게 될까요? 플레이어는 즉시 끊김이나 지연을 느낍니다. 프로그래머에게 주어진 시간은 생각보다 매우 빡빡합니다. 그래서 시간 관리가 무엇보다 중요합니다.
눈대중으로 병목 지점을 찾기는 어렵습니다
게임 엔진 안에서는 수많은 코드가 동시에 돌아갑니다. 그중 하나라도 늦어지면 전체 프레임이 무너집니다. 하지만 코드만 보고 느린 부분을 찾기는 불가능에 가깝습니다.

어려운 코드가 성능을 갉아먹을 것 같으신가요? 의외로 복잡해 보이는 코드는 영향이 없을 수 있습니다. 반대로 쉬워 보이는 코드가 시간을 많이 쓰기도 하죠. 그래서 우리는 측정을 해야 합니다.
프로파일링 도구로 수치를 확인하세요
이때 필요한 것이 바로 프로파일링(profiling)입니다. 각 시스템이 시간을 얼마나 쓰는지 수치로 보여주는 과정이죠. 이것을 통해 예산을 초과한 범인을 찾을 수 있습니다.
이 과정의 목적은 느린 코드를 찾는 것만이 아닙니다. 누가 예산을 어떻게 쓰고 있는지 투명하게 보는 것이죠. 막연한 짐작이 아니라 정확한 진단이 가능해집니다.
외부 도구보다 인게임 툴이 유리한 경우
물론 PC 환경에서는 외부 분석 도구가 강력합니다. 하지만 모든 상황에서 정답은 아닙니다. 콘솔처럼 접근이 까다로운 환경도 있으니까요. 엔진 특성에 따라 외부 도구 사용이 어렵기도 합니다.
그래서 엔진 내부에 인게임 프로파일러를 직접 내장하곤 합니다. 실제 게임이 돌아가는 환경에서 데이터를 모으기 위해서죠. 프로그래머는 게임을 하면서 실시간으로 성능을 봅니다.
실제 데이터가 게임의 품질을 지킵니다
인게임 프로파일링은 현실적인 실행 시간 데이터를 제공합니다. 스파이크처럼 잠깐 나타나는 문제도 바로 잡을 수 있죠. 감각이 아닌 숫자로 판단할 수 있게 해 줍니다.
실시간 게임에서 성능 최적화는 타협할 수 없는 조건입니다. 인게임 프로파일링은 게임의 품질을 지탱하는 든든한 버팀목이죠. 여러분도 실제 데이터를 바탕으로 성능을 관리해 보세요.