한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

게임 렉 백서 › L1 클라이언트 게임 프로세스

고정 타임스텝 따라잡기 폭주 Fixed-timestep catch-up / spiral of death

원인 ID cg-fixed-step · 주 담당 게임개발팀·클라이언트 개발

그림과 실험이 있는 원본 카드로 열기 →

한 번 멈춘 뒤 밀린 계산을 몰아서 하다가, 그 계산 때문에 또 밀립니다.

왜 게임 시뮬레이션을 고정 간격으로 돌리는데 한 번 멈춤 → 그러면 밀린 스텝을 한 프레임에 몰아서 계산 → 화면에서는 긴 프레임이 줄줄이 이어지며 튀거나, 상한에 걸려 세계가 느려짐

증상
뚝뚝 끊김, 몰아치기, 슬로우모션
요인
정체
누가 겪나
나만
언제
가끔 무작위로, 사람이 몰릴 때
담당
주 담당 게임개발팀·클라이언트 개발
게임개발팀 할 일
프레임당 따라잡기 상한, 남는 시간은 보간으로 처리.
그래프에서는
가끔 무작위로 튐 · 프레임 시간, 프레임당 고정 스텝 수
확인할 곳
개발 빌드 프로파일러에서 한 프레임에 고정 스텝이 몇 번 돌았는지(유니티는 FixedBehaviourUpdate 등 FixedUpdate 단계 마커 수)와 프레임 시간을 함께 봄
이러면 맞음
긴 프레임 하나 뒤에 스텝을 여러 번 도는 긴 프레임이 줄줄이 이어지고 상한(유니티 Maximum Allowed Timestep)에 닿으면 게임 시간이 실제보다 늦게 흐름
이러면 아님
긴 프레임이 한 번으로 끝나면 “프레임 타임 스파이크”나 “클라이언트 가비지 컬렉션”
확인 수단
게임 서버·클라이언트의 로그·지표가 필요
더 알아보기
유니티의 물리 계산(FixedUpdate)이 대표적인 고정 스텝입니다(기본 0.02초, 1초에 50번). Time 설정의 Maximum Allowed Timestep(한 프레임에 따라잡을 최대 시간, 기본 약 0.33초)이 따라잡기 상한입니다. 한 프레임이 이보다 길면 넘친 시간은 버려져, 그만큼 게임 시계가 실제보다 늦어집니다.

출처

  1. Set fixed timestep to optimize physics simulation frequency Unity
    Fixed Timestep 기본값 0.02초(1초에 50번), 프레임이 길면 한 프레임에 물리 스텝을 여러 번 돌려 부담이 커짐
  2. Handling variation in time Unity
    Maximum Allowed Timestep 기본값 1/3초(0.3333333), 1초가 멈춰도 게임 시간은 0.333초만 흐름, 따라잡기 스텝이 또 느려지는 악순환을 막는 상한
  3. Profiler markers reference Unity
    FixedBehaviourUpdate: MonoBehaviour.FixedUpdate 실행 구간, 물리 마커는 FixedUpdate 단계에서 호출됨

함께 보면 좋은 원인

같은 층: L1 클라이언트 게임 프로세스

같은 증상(뚝뚝 끊김)의 다른 층 원인

그림과 실험이 있는 원본 카드 보기