게임 화면이 움직이는 원리를 궁금해하신 적 있나요? 보통 그래픽이 얼마나 부드러운지 이야기할 때 프레임 레이트라는 단어를 많이 씁니다. 하지만 프로그래머에게 이 용어는 시각적인 부분 그 이상을 의미합니다. 게임 내부에서 시간이 흐르는 규칙을 정하는 기준이 되기 때문입니다.
시각적 부드러움을 넘어서는 개념
가장 먼저 알아야 할 것은 프레임 레이트(Frame Rate)입니다. 흔히 FPS라고 부르며 화면이 1초에 몇 번 갱신되는지를 나타냅니다. 숫자가 높을수록 화면이 매끄럽게 보입니다.
하지만 프로그래머는 이를 다르게 해석해야 합니다. 단순히 화면이 예쁘게 보이는지의 문제가 아닙니다. 게임 로직이 얼마나 자주 실행되는지를 보여주는 지표이기 때문입니다. 이 빈도가 게임 속 시간의 기준이 됩니다.

프레임 사이의 시간 차이
여기서 반드시 함께 알아야 할 짝꿍 같은 개념이 있습니다. 바로 델타 타임(Delta Time)입니다. 처음 접하면 용어가 낯설게 느껴질 수 있습니다. 쉽게 풀어서 설명해 드리겠습니다.
델타 타임은 이전 장면과 현재 장면 사이에 흐른 실제 시간입니다. 화면이 한 번 깜빡이는 사이에 현실 시간이 얼마나 지났는지를 잽니다. 이 개념을 잡는 것이 프로그래밍에서 매우 중요합니다.
프레임과 시간의 관계
이 둘의 관계는 생각보다 계산하기 쉽습니다. 이상적인 환경에서 게임이 60FPS로 돌아간다고 가정해 보겠습니다. 이때 델타 타임은 1초를 60으로 나눈 값이 됩니다.
만약 성능이 떨어져서 프레임 레이트가 낮아지면 어떻게 될까요? 한 장면을 그리는 데 시간이 더 걸리겠죠. 그러면 델타 타임 값은 자연스럽게 커지게 됩니다. 두 값은 서로 반비례 관계에 있습니다.
모든 변화의 기준이 되는 값
게임 안에서 일어나는 움직임은 대부분 이 시간을 기준으로 합니다. 캐릭터가 걷거나 뛰는 속도를 계산할 때 델타 타임을 곱해줍니다. 물리 엔진이 힘을 계산할 때도 마찬가지입니다.
심지어 스킬 쿨타임이나 타이머 같은 기능도 이 값을 사용합니다. 횟수가 아니라 실제 흐른 시간을 기준으로 삼아야 정확하기 때문입니다. 그래서 프로그래머는 항상 이 값을 염두에 두고 코드를 작성합니다.
시간을 고려하지 않았을 때의 문제
이 값을 쓰지 않고 로직을 짜면 큰 문제가 생깁니다. 예를 들어 한 프레임당 무조건 1미터씩 이동하게 만들었다고 칩시다. 그러면 컴퓨터 성능에 따라 이동 속도가 달라집니다.
성능이 좋은 컴퓨터에서는 프레임이 많이 나와서 캐릭터가 너무 빨리 움직입니다. 반대로 성능이 나쁜 컴퓨터에서는 캐릭터가 느려집니다. 같은 게임인데 다른 경험을 하게 되는 셈입니다.
어떤 환경에서도 동일한 경험 제공
델타 타임을 적용하면 이런 문제를 말끔히 해결할 수 있습니다. 프레임 수가 많으면 델타 타임이 작아져서 조금씩 자주 이동합니다. 프레임 수가 적으면 델타 타임이 커져서 한 번에 많이 이동합니다.
결과적으로 1초 동안 이동한 총거리는 같아집니다. 프로그래머는 이를 통해 어떤 기기에서도 일관된 플레이를 보장합니다. 이것이 실시간 시뮬레이션을 안정적으로 만드는 방법입니다.