게임을 하면서 FPS(Frames Per Second)라는 단어를 자주 들어보았을 것이다!
이는 '초당 프레임 수'라는 의미를 가지고 있다!
이번에는 FPS가 게임에 어떻게 영향을 미치는지 알아보자!
1. Time.deltaTime이란?
- Time.deltaTime은 "한 프레임 당 실행하는 시간"을 뜻하는데, 값을 float형태로 반환한다! 단위는 초를 사용한다.
2. Time.deltaTime의 원리
- 유니티의 Update() 함수는 매 프레임마다 호출하여 해당 코드를 실행하게 된다! 예를 들어 캐릭터의 이동을 Update() 함수에 구현했다고 가정해보자~ 그럼 성능이 좋은 컴퓨터와 나쁜 컴퓨터에선 어떤 차이가 일어날까??
위 이미지와 같이 성능이 좋은 컴퓨터는(윗 그림) 1초에 100m를 이동시킬 수 있고, 성능이 나쁜 컴퓨터는(아래 그림) 1초에 10m를 이동하게 된다. 이런 상태로 게임이 출시된다면 아무리 실력이 좋더라도 성능이 좋은 컴퓨터가 유리할 수 밖에 없는 상황이 만들어진다. 이러한 문제를 해결할 수 있는 것이 Unity에서 Time.deltaTime을 제공해주고 있다!
'V(이동속도) = S(이동거리) / T(초)'
양변에 Time.deltaTime (1프레임 당 실행시간)을 곱해주면
'V x 1프레임 당 실행시간 = 1프레임 당 실행시간 x S / T'
'V x T = S' 이므로 'V x 1프레임 당 실행시간 = 1프레임 당 이동거리'
'1프레임당 이동거리 = 1프레임당 실행시간 x 이동속도' 가 된다.
위를 정리하자면 성능 나쁜 컴퓨터는 1프레임 당 실행시간이 길어짐에 따라 1프레임 당 이동거리도 자연스레 늘어날 것이다. 이는 성능이 좋은 컴퓨터와의 격차를 없앨 수 있다!
ex) 30프레임 게임은 Time.deltaTime = 0.03초
60프레임 게임은 Time.deltaTime = 0.016초