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

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

프레임 타임 스파이크 Frame hitch

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

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

한 프레임 계산이 평소보다 몇 배 오래 걸려 화면이 잠깐 멈춥니다.

왜 스킬 이펙트 폭증, 대량 스폰, UI 전체 갱신이 한 프레임에 몰림 → 그러면 16.7ms 안에 못 끝내고 50~300ms가 걸림 → 화면에서는 화면이 멈칫했다가 다음 프레임에 모두가 한 번에 이동

증상
뚝뚝 끊김, 멈춤
요인
정체
누가 겪나
나만
언제
사람이 몰릴 때, 특정 행동을 할 때, 가끔 무작위로
담당
주 담당 게임개발팀·클라이언트 개발
게임개발팀 할 일
무거운 일을 여러 프레임에 나누기, 프로파일러로 튀는 프레임 찾기, 이펙트 개수 상한.
수치 감각
60FPS의 한 프레임은 16.7ms. 50ms를 넘는 프레임 하나만 있어도 “끊겼다”고 느끼기 쉽습니다.
그래프에서는
가끔 무작위로 튐 · 프레임 시간
확인할 곳
PresentMon으로 게임 중 프레임 시간(FrameTime)과 CPU·GPU가 그 프레임에 쓴 시간(CPUBusy·GPUBusy)을 녹화. 모바일은 안드로이드 vitals의 느린 세션·느린 렌더링 지표
이러면 맞음
평소 16.7ms 근처인 프레임 시간이 50ms를 넘게 솟는 순간이 스킬 연출·대량 스폰·UI 전체 갱신과 겹치고, 그 순간 핑은 그대로임
이러면 아님
프레임 시간은 고른데 다른 캐릭터만 멈칫하면 “보간 버퍼가 없거나 짧음” 같은 네트워크 쪽. 튀는 간격이 규칙적이면 “클라이언트 가비지 컬렉션”을 먼저 봄
확인 수단
유저 쪽 환경에서 확인

출처

  1. Slow rendering Android (Google)
    60FPS를 내려면 한 프레임을 16ms 안에 그려야 하고 늦으면 프레임을 건너뛰어 끊김(jank)으로 보임
  2. Slow Sessions (games only) Android (Google)
    안드로이드 vitals는 게임 프레임이 50ms(20FPS)·34ms(30FPS)를 넘으면 느린 프레임으로 봄
  3. PresentMon Capture Application (README-CaptureApplication.md) Intel
    FrameTime(프레임 사이 CPU 시간), CPUBusy·GPUBusy(그 프레임을 만드는 데 CPU·GPU가 쓴 시간)

함께 보면 좋은 원인

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

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

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