# 게임 루프 안의 시계를 이해하기
렌더링된 각 프레임은 게임에 새로운 경과 시간을 전달합니다. 가변 델타 루프에서는 보통 position += velocity × frameTime처럼 움직임을 업데이트합니다. 프레임이 안정적이면 평균 속도는 의도한 값에 가깝지만, 한 번의 업데이트가 그 업데이트를 만든 프레임만큼 커질 수 있습니다. 따라서 hitch는 단순한 화면 정지가 아니라 그 업데이트가 소비하는 게임 시간을 바꾸는 사건입니다. # 가변 적분과 고정 누산기 비교하기
고정 타임스텝 루프는 각 프레임 시간을 누산기에 더한 뒤 16.667 ms 같은 선택된 스텝을 반복해서 소비합니다. 시뮬레이션은 같은 크기의 업데이트를 받고 렌더러는 다른 리듬으로 표시할 수 있습니다. 남은 소수 시간은 다음 프레임까지 누산기에 남습니다. 긴 프레임이 오면 고정 루프는 경과 시간을 반영하기 위해 여러 작은 업데이트를 수행합니다. 스텝 크기는 안정적이지만 따라잡기 작업이 순간적으로 늘 수 있습니다. | 안정적인 렌더링 | 일반 프레임 시간으로 한 번 업데이트 | 같은 스텝으로 누적 시간을 소비 | 두 경로가 같은 움직임을 따르는지 확인합니다. |
| 긴 프레임 | 큰 업데이트가 오브젝트를 너무 멀리 이동 | 여러 고정 업데이트가 시간을 따라잡음 | 위치 차이와 따라잡기 수를 함께 읽습니다. |
| 다른 렌더링 속도 | 업데이트 크기가 프레임 속도에 따라 변함 | 시뮬레이션 스텝은 동일함 | 고정 스텝은 렌더링 의존성을 줄입니다. |
| 델타 상한 | 상한을 넘는 시간을 무시 | 누산기는 전체 프레임 시간을 받음 | 시간 손실을 허용할 때만 제한합니다. |
# 프레임 스파이크가 실제로 하는 일 보기
초당 60프레임에서는 일반 프레임이 약 16.667 ms입니다. 여기에 80 ms 스파이크가 추가되면 한 프레임은 약 96.667 ms가 됩니다. 가변 모델은 이 시간을 한 번의 업데이트로 소비합니다. 고정 모델은 대신 약 여섯 번의 16.667 ms 스텝을 소비합니다. 전체 경과 시간은 같을 수 있지만 시뮬레이션을 통과하는 경로는 달라집니다. # 위치 차이와 따라잡기를 함께 읽기
위치 차이는 가변 경로에서 고정 경로를 뺀 값입니다. 두 적분 정책이 얼마나 벌어졌는지를 보여 주지만 어느 쪽이 자동으로 옳은지는 말해 주지 않습니다. 따라잡기 수는 한 번의 렌더링 프레임에서 필요한 고정 작업량을 보여 줍니다. 큰 차이는 보이는 움직임의 불일치를, 많은 스텝은 CPU 예산 문제 가능성을 나타냅니다. 서로 관련 있지만 같은 진단은 아닙니다. # 델타 제한을 정책으로 다루기
상한은 일시 정지된 탭, 브레이크포인트 또는 심각한 hitch가 캐릭터를 순간 이동시키거나 물리 오브젝트를 지오메트리 너머로 보내는 일을 막을 수 있습니다. 대신 가변 시계는 실제 경과 시간보다 뒤처집니다. 게임이 시간을 보존해야 한다면 고정 누산기나 다른 복구 정책을 사용합니다. 점프를 제한하고 반응성을 유지해야 한다면 상한이 유용할 수 있지만 잃는 시간을 의도적으로 선택해야 합니다. # 보호해야 할 작업에 맞춰 루프 선택하기
| 물리, 충돌 또는 결정론적 게임플레이 | 고정 타임스텝 | 같은 스텝이 렌더링 리듬에 대한 의존성을 줄입니다. |
| 상태를 누적하지 않는 단순한 시각 효과 | 가변 델타 | 업데이트가 작고 보통 따라잡기 큐가 필요하지 않습니다. |
| 부드러운 표시가 필요한 게임플레이 시뮬레이션 | 보간이 있는 고정 업데이트 | 시뮬레이션 스텝은 유지하고 표시에서 소수 진행을 숨깁니다. |
| 심각한 정지 뒤 복구 | 제한된 따라잡기 정책 | 나쁜 프레임 하나가 무제한 시뮬레이션 작업을 만들지 않게 합니다. |
# 반복 가능한 조정 절차 사용하기
먼저 스파이크 없이 두 경로가 일치하는지 확인합니다. 반복 가능한 hitch를 추가하고 빈도를 바꿔 보이는 오류가 누적되는지 안정되는지 확인합니다. 속도를 바꾸기 전에 고정 스텝을 조정하고 따라잡기 수를 살핍니다. 마지막으로 상한을 켜고 가변 시뮬레이션 시간과 실제 시간을 비교합니다. 이 순서로 차이의 원인과 이를 제한하는 정책을 분리할 수 있습니다.
이 실험으로 증명할 수 없는 것
이 실험실은 지정된 프레임 시간과 일정한 속도를 사용하므로 시간 동작을 설명할 뿐 기기를 측정하거나 엔진을 검증하지 않습니다. 실제 물리, 입력 샘플링, 네트워크, 보간, 프레임 예산에 따라 최선의 설계는 달라질 수 있습니다. 결과를 가설로 삼고 실제 게임에서 확인하세요.