FPS(Frame Per Second)와 Delta Time에 관해
이번 글에서는 유니티 게임 엔진에서 자주 사용되는
Delta Time에 관해 알아보는 시간을 가져보자
먼저 유니티는 Update라는 함수에서 매 프래임(Frame) 마다
호출이 되는데 여기서 Delta Time은 이전 프레임과 현재 프래임
사이의 시간 차이를 의미한다 여기서 FPS의 개념을 이해할 필요가 있다
FPS(Frame Per Second)는 시스템의 초당 처리하는 프래임수의 개수이다
이러한 FPS는 처리하는 시스템에 따라 또는 컴퓨터 사양에 따라
달라질수가 있는데 간단하게 예를 들어 1초당 10 프레임을 처리하는
저사양 컴퓨터 A와 1초당 100프레임을 처리할 수 있는 고사양 컴퓨터
B가 있다고 가정해보고
1프레임당 2px씩 총알이 나가는 슈팅게임을 실행했을 때
두 시스템에서 큰 차이가 나는 것을 아래 표에서 확인할 수 있습니다.
| 사용자 | 게임 구현 | 1초뒤 총알의 위치 결과 |
| 시스템 A [초당 프레임 10] | 1프레임당 2px 총알 이동 | 2px * 10 = 20px |
| 시스템 B [초당 프레임 100] | 2px * 100 = 200px |
해결 방안
이러한 단점을 보완하고자 유니티에서 Time 클래스의 deltaTime을
속성 값으로 정의하고 있어서 손쉽게 해결할 수가 있다.
Time.deltaTime = 1 / Frame Rate
| 사용자 | Time.deltaTime | 1초뒤 총알의 위치 결과 |
| 시스템 A [초당 프레임 10] | 1 / 10 = 0.1 | 20px * Time.deltaTime = 2px |
| 시스템 B [초당 프레임 100] | 1 / 100 = 0.01 | 200px * Time.deltaTime = 2px |
Delta를 사용하지 않을 때

Delta를 사용하였을 때

이처럼 게임 개발에서는 성능 수준이 다른 시스템에서도
이처럼 동일한 상태를 가질 수 있도록 하려면
Delta Time의 원리를 이해할 필요가 있다
이외에 필자가 글을 작성하며 참고한
레퍼런스 사이트를 아래에 첨부하도록 하겠다.
레퍼런스 사이트
https://www.parallelcube.com/2017/10/25/why-do-we-need-to-use-delta-time/
Why do we need to use Delta Time? – Parallelcube
You’ve probably seen an old game running in a high end device like if somebody had pushed the fastforward button, or the opposite case, a high quality game trying to run in a old device with an exasperating result. To solve this problem we need to make o
www.parallelcube.com
https://docs.unity3d.com/kr/current/ScriptReference/Time-deltaTime.html
Time-deltaTime - Unity 스크립팅 API
The completion time in seconds since the last frame (Read Only).
docs.unity3d.com
'Unity > 지식' 카테고리의 다른 글
| [Unity] 좌표계 에 대해 알아보자 (0) | 2022.01.13 |
|---|---|
| [Unity] 메인 루틴과 서브루틴, 코루틴(Co-routine) 에 대해 알아보자 (0) | 2022.01.11 |
| [Unity] 쿼터니언과 짐벌락 현상에 대해 알아보자 (0) | 2022.01.05 |
| [Unity] Attribute 에 대해 알아보자 (0) | 2021.12.21 |
| [Unity] 라이프 사이클(Life Cycle) 에 대해 알아보자 (0) | 2021.12.20 |