고현우
개발 일지
고현우
전체 방문자
오늘
어제
  • 분류 전체보기 (14)
    • Unity (7)
      • 작업 (1)
      • 지식 (6)
    • DirectX (0)
      • 작업 (0)
      • 지식 (0)
    • C# (3)
      • 디자인 패턴 (0)
      • 알고리즘 (1)
      • 자료구조 (0)
      • 지식 (2)
    • C++ (0)
      • 디자인 패턴 (0)
      • 알고리즘 (0)
      • 자료구조 (0)
      • 지식 (0)
    • 필수 지식 (4)
      • 물리 (0)
      • 선형대수학 (0)
      • 셰이더 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 뷰포트좌표
  • 선형 탐색 알고리즘
  • Y-Up
  • Shader
  • Unity
  • 스크린좌표
  • RenderingPipeline
  • 렌더링파이프라인
  • 셰이더
  • 로컬좌표
  • 그래픽스API
  • 버텍스 셰이더
  • 래스터라이저
  • VertexShader
  • 비동기
  • Z-Up
  • 메모리 계층
  • .NET
  • 월드좌표
  • 프래그먼트셰이더

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
고현우

개발 일지

[Unity] Delta Time 에 대해 알아보자
Unity/지식

[Unity] Delta Time 에 대해 알아보자

2021. 12. 19. 23:32

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를 사용하지 않을 때

source (https://www.parallelcube.com/2017/10/25/why-do-we-need-to-use-delta-time/)

 

Delta를 사용하였을 때

source (https://www.parallelcube.com/2017/10/25/why-do-we-need-to-use-delta-time/)

이처럼 게임 개발에서는 성능 수준이 다른 시스템에서도

이처럼 동일한 상태를 가질 수 있도록 하려면

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
    'Unity/지식' 카테고리의 다른 글
    • [Unity] 메인 루틴과 서브루틴, 코루틴(Co-routine) 에 대해 알아보자
    • [Unity] 쿼터니언과 짐벌락 현상에 대해 알아보자
    • [Unity] Attribute 에 대해 알아보자
    • [Unity] 라이프 사이클(Life Cycle) 에 대해 알아보자
    고현우
    고현우
    Unity / DirectX 게임 개발

    티스토리툴바