본문 바로가기
프로그래밍/공부

[Game] Delta Time

by Sik.K 2022. 12. 14.

델타타임을 이해하기 전에 우선 FPS에 대한 개념을 이해할 필요가 있다.

 

FPS는 무엇일까?

 

FPS(Frame Per Second), 즉 초당 프레임을 의미한다. 1초에 몇 프레임이 재생이 되는 지를 말하는 것인데, 기존에는 컴퓨터 간의 성능 차이가 심하지 않아서 부각이 되지 않던 문제가 하드웨어의 성능이 올라가면서 문제가 대두되었다.

 

게임의 경우 캐릭터는 이동을 하고 프레임을 재생하고 다시 이동을 하고 프레임을 재생한다. 그리고 이 이동량은 변수든 상수든 개발자가 정해두게 된다.

 

프레임당 이동량이 정해져 있다면, 더 많은 FPS를 가지는 컴퓨터와 적은 FPS를 가진 컴퓨터에서 이동량은 어떻게 되는 것일까?

 

FPS가 60인 컴퓨터와 120인 컴퓨터가 있다고 가정하자, 여기에 게임을 실행시키고 게임 캐릭터는 1 프레임에 x 좌표 방향으로 +1 움직인다고 하는 경우, 두 컴퓨터에서 같은 게임을 실행하였을 경우 이는 어떻게 될까?

 

1초에 60 프레임을 재생시키는 컴퓨터는 1초에 x 좌표로 + 60을 움직일 것이고, 120 프레임을 재생시키는 컴퓨터는 1초에 + 120을 움직이게 된다.

 

 

 

컴퓨터의 성능 차이로 인해 게임 내에서 이동량의 불평등이 생기는 것이다. 이를 해결하기 위해 나온 개념이 바로 델타 타임이다.

 

 

 

델타 타임이란 1초에 60 프레임을 재생하는 경우, 한 프레임이 재생되고 다음 프레임이 재생되는 그 사이의 시간이 바로 델타 타임이다.

 

한 프레임이 재생될 때, FPS가 60인 컴퓨터와 120인 컴퓨터의 델타 타임은 다르다.

 

이 델타 타임을 이동량에 곱해주게 된다면 한 프레임이 재생되었을 때 이동량이 서로 다르게 되지만 1초 내에 움직이는 전체량은 같기 때문에 성능 차이에서 오는 이동량의 불평등을 해결할 수 있게 된다.

 

Ex) 1 프레임에 100의 이동량을 가져야 한다고 가정할 경우, FPS가 60인 컴퓨터에서는 델타 타임이 0.0166이고, FPS가 120인 컴퓨터에서는 델타 타임이 0.0083이다. 이 둘을 각각 이동량에 곱해줄 경우 FPS가 60인 컴퓨터는 1 프레임에 1.66 픽셀(픽셀에 소수점이 있는 것은 일단 무시하자)을 움직이고 FPS가 120인 컴퓨터의 경우 0.83 픽셀을 움직인다. 이를 각각 다시 60과 120을 곱해주면 99.6이라는 동일한 값이 나온다. 결국 각각 FPS가 60과 120인 컴퓨터는 1초에 같은 이동량을 움직이는 것이다.

 

이것이 바로 델타 타임이 존재하는 이유다.

'프로그래밍 > 공부' 카테고리의 다른 글

[Game] 변환행렬  (2) 2022.12.15
[Programing] 정적 & 동적 라이브러리  (0) 2022.12.15
[C++] 싱글턴 패턴  (0) 2022.12.13
[C++] 정적(Static) 변수  (0) 2022.12.13
[C++] 비트 연산자  (0) 2022.12.13

댓글