010-2135-9730무료 상담
개념 풀이

델타 타임이란? 처음 배우는 사람을 위한 쉬운 설명

델타 타임(Delta Time)은 바로 앞 프레임이 끝난 뒤 지금 프레임이 시작되기까지 흐른 시간을 말합니다. 이동 속도에 이 값을 곱해 주면, 빠른 컴퓨터든 느린 컴퓨터든 캐릭터가 1초 동안 같은 거리를 움직입니다. 게임 속 움직임을 '프레임 기준'이 아니라 '실제 시간 기준'으로 바꿔 주는 장치라고 이해하면 됩니다. 게임 프로그래밍을 배우면 가장 먼저 익히는 습관 중 하나입니다.

읽는 시간 약 7분게임프로그래밍
게임프로그래밍 과정
이 글과 연결된 과정게임프로그래밍 과정 알아보기

최근에는 AI 코딩 도구를 쓰는 개발자가 늘었지만, 생성된 코드가 맞는지 판단하려면 결국 기본기가 필요합니다. 수업에서는 직접 짜는 연습을 충분히 한 뒤 AI…

왜 프레임마다 똑같이 움직이면 안 될까

게임은 1초에 수십 번 화면을 다시 그립니다. 이 한 장 한 장이 프레임입니다. 그런데 1초에 몇 장을 그리는지는 기기마다, 장면마다 다릅니다. 성능이 좋은 PC는 1초에 144장을 그리고, 오래된 노트북은 30장을 겨우 그릴 수도 있습니다.

캐릭터를 '매 프레임 오른쪽으로 1칸' 움직이도록 코드를 짰다고 해 봅시다. 144장을 그리는 PC에서는 1초에 144칸을 가고, 30장을 그리는 노트북에서는 30칸만 갑니다. 같은 게임인데 기기에 따라 캐릭터 속도가 다섯 배 가까이 차이 나는 것입니다. 멀티플레이 게임이라면 공정성 문제가 되고, 싱글 게임이라도 난이도가 엉망이 됩니다.

오래된 게임 중에는 실제로 이런 방식으로 만들어져, 요즘 컴퓨터에서 실행하면 너무 빨라 플레이할 수 없는 경우도 있었습니다. 델타 타임은 이 문제를 해결하기 위해 쓰입니다.

속도 × 델타 타임 = 이번 프레임의 이동 거리

델타 타임을 쓰는 방법은 단순합니다. 속도를 '1초에 얼마나 갈지'로 정하고, 매 프레임 그 속도에 델타 타임을 곱한 만큼만 움직입니다. 초속 5미터로 걷는 캐릭터라면, 이번 프레임이 0.02초 걸렸을 때 0.1미터를 움직이는 식입니다.

기기1초에 그리는 장 수한 프레임의 델타 타임(약)1초 동안 이동 거리
빠른 PC100장0.01초5 × 0.01 × 100 = 5미터
보통 기기50장0.02초5 × 0.02 × 50 = 5미터
느린 기기25장0.04초5 × 0.04 × 25 = 5미터

프레임이 많은 기기는 한 번에 조금씩 자주 움직이고, 프레임이 적은 기기는 한 번에 많이 드물게 움직입니다. 결과적으로 1초 뒤의 위치는 같습니다. 느린 기기는 화면이 덜 부드러울 뿐, 게임의 속도 자체는 같아집니다.

비유하자면 계단을 오르는 두 사람과 같습니다. 한 사람은 작은 보폭으로 빠르게, 다른 사람은 큰 보폭으로 천천히 오르지만 1분 뒤 도착하는 층은 같도록 맞추는 것입니다.

엔진에서 델타 타임을 쓰는 모습

Unity에서는 Time.deltaTime이라는 값으로 델타 타임을 가져옵니다. 매 프레임 실행되는 Update 함수 안에서 이동 속도에 이 값을 곱해 위치를 바꾸는 것이 기본 패턴입니다. Unreal Engine에서는 매 프레임 호출되는 Tick 함수가 DeltaSeconds라는 이름으로 이 값을 넘겨줍니다.

이동뿐 아니라 시간에 따라 변하는 거의 모든 것에 델타 타임이 쓰입니다. 회전 속도, 쿨타임 감소, 체력 회복, 색이 서서히 바뀌는 연출, 카메라가 목표를 부드럽게 따라가는 움직임까지 모두 해당됩니다. '초당 얼마'로 표현되는 값이라면 델타 타임을 곱해야 한다고 기억하면 됩니다.

반대로 곱하면 안 되는 경우도 있습니다. 점프 키를 누른 순간 한 번만 주는 힘이나, 아이템을 먹을 때 한 번 오르는 점수처럼 '시간에 걸쳐 일어나지 않는 일'에는 델타 타임이 필요 없습니다. 여기에 곱하면 오히려 기기마다 결과가 달라집니다.

처음 배울 때 자주 하는 실수

  • 델타 타임을 빼먹음: 내 컴퓨터에서는 괜찮다가 다른 기기에서 속도가 달라져 뒤늦게 발견합니다. 이동 코드를 쓸 때마다 확인하는 습관이 필요합니다.
  • 두 번 곱함: 속도에 이미 곱한 값을 다른 함수에서 또 곱하면 움직임이 아주 느려집니다. 어디서 곱했는지 한곳으로 정리해 두세요.
  • 물리 함수에 섞어 씀: 물리 엔진의 힘이나 속도 설정은 엔진이 자체 시간 간격으로 처리하는 경우가 많아, 습관처럼 곱하면 안 됩니다. 쓰는 함수의 설명서를 확인해야 합니다.
  • 부드러운 따라가기 공식에 단순 곱셈: 목표 쪽으로 일정 비율씩 다가가는 방식은 델타 타임을 그냥 곱해도 기기마다 미묘하게 달라질 수 있어, 시간 기반 보간 함수를 쓰는 편이 안전합니다.

또 로딩이나 창 이동 때문에 한 프레임이 아주 길어지면 델타 타임이 갑자기 커집니다. 이때 캐릭터가 벽을 순간이동하듯 뚫고 지나가는 문제가 생길 수 있습니다. 그래서 많은 엔진은 델타 타임이 너무 커지지 않도록 상한을 두거나, 물리 계산을 고정된 간격으로 나눠 처리합니다.

일시정지와 슬로 모션도 델타 타임으로 만듭니다

델타 타임을 제대로 써 두면 시간을 조작하는 연출도 쉬워집니다. 게임 전체의 시간 배율을 0으로 바꾸면 델타 타임도 0이 되어 모든 움직임이 멈춥니다. 이것이 일시정지입니다. 배율을 0.3 정도로 낮추면 모든 것이 느려지는 슬로 모션이 됩니다. Unity에서는 Time.timeScale 값으로 이 배율을 조절합니다.

다만 일시정지 중에도 메뉴 애니메이션은 움직여야 합니다. 그래서 엔진은 시간 배율의 영향을 받지 않는 별도의 시간 값도 제공합니다. 어떤 움직임에 어느 시간을 쓸지 구분하는 것도 실무에서 꼭 챙기는 부분입니다.

이름과 연락처만 남기면 담당 멘토가 연락드립니다상담 가능 시간 평일·주말 · 전화 010-2135-9730

직접 확인해 보는 간단한 실험

엔진에서 큐브 두 개를 만들고, 하나는 델타 타임 없이, 하나는 델타 타임을 곱해 움직이게 해 보세요. 그다음 프레임 제한을 30과 120으로 바꿔 가며 실행하면 두 큐브의 차이가 눈에 확 들어옵니다. 개념을 읽는 것보다 한 번 보는 것이 훨씬 오래 남습니다.

이런 기초 개념은 혼자 공부할 때 넘기기 쉽지만, 나중에 버그를 찾을 때 가장 먼저 의심해야 하는 부분이 됩니다. Unity 스크립트를 처음 배우면서 이런 원리까지 함께 잡고 싶다면, SBS아카데미게임학원 유니티3D(Unity) 과정 상담에서 현재 코딩 경험을 알려 주고 시작 지점을 맞춰 보시기 바랍니다.

자주 묻는 질문

델타 타임은 항상 같은 값인가요?

아닙니다. 프레임마다 처리할 일이 달라서 매번 조금씩 바뀝니다. 그래서 고정 숫자를 쓰지 않고 매 프레임 엔진이 알려 주는 값을 읽어서 씁니다.

2D 게임에서도 델타 타임이 필요한가요?

필요합니다. 2D와 3D는 화면 표현 방식이 다를 뿐, 프레임 속도가 기기마다 다르다는 문제는 같습니다.

TIP내 상황에 맞는 답이 필요하다면 무료 상담에서 지금 수준과 목표를 기준으로 구체적으로 안내해 드립니다.

가까운 캠퍼스에서 게임프로그래밍 알아보기

사는 곳과 가까운 캠퍼스를 고르면 수업 내용, 오시는 길, 상담 신청을 한 번에 볼 수 있습니다.

함께 읽으면 좋은 글

Free consulting

게임프로그래밍, 내 상황에서는 어떻게 시작할까요?

글에서 다룬 내용을 내 실력과 목표에 맞춰 담당 멘토가 구체적으로 정리해 드립니다.

  1. 상담 신청서 접수
  2. 담당 멘토가 연락드림
  3. 방문 또는 전화로 진로·과정 상담
전화로 바로 상담010-2135-9730
전화 상담상담 신청