29 lines
2.2 KiB
Markdown
29 lines
2.2 KiB
Markdown
---
|
|
id: TIME-STEP-001
|
|
category: Unified
|
|
confidence_score: 1.0
|
|
tags: [game-development, [[Physics|Physics]]-engine, synchronization, game-loop]
|
|
last_reinforced: 2026-04-26
|
|
---
|
|
|
|
# Time Step [[Logic|Logic]] in Games (게임 타임스텝 로직)
|
|
|
|
## 📌 한 줄 통찰 (The Karpathy Summary)
|
|
> "물리는 일정하게, 렌더링은 부드럽게 시간의 흐름을 제어하라" — 하드웨어 성능에 관계없이 물리 연산의 일관성(Determinism)을 보장하고 화면 업데이트를 최적화하기 위한 시간 관리 알고리즘.
|
|
|
|
## 📖 구조화된 지식 (Synthesized Content)
|
|
- **추출된 패턴:** 가변적인 프레임 속도(Variable Frame Rate) 환경에서도 물리 엔진은 고정된 시간 간격(Fixed Delta Time)으로 업데이트하여 시뮬레이션의 안정성을 확보하는 패턴.
|
|
- **핵심 패턴:**
|
|
- **Fixed Time Step:** 물리 연산을 항상 동일한 시간 간격(예: 1/60초)으로 수행하여 충돌 감지 오류나 물리 발산을 방지.
|
|
- **Accumulator Pattern:** 지난 프레임부터 흐른 시간을 누적기에 쌓고, 고정 타임스텝만큼 소모하며 물리 업데이트를 반복 실행.
|
|
- **Interpolation (평활화):** 남은 잔여 시간(Remainder)을 활용하여 이전 물리 상태와 현재 상태 사이를 보간해 프레임 끊김 현상 제거.
|
|
- **Deterministic Lockstep:** 모든 클라이언트가 동일한 타임스텝 로직을 공유하여 멀티플레이어 동기화 유지.
|
|
|
|
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
|
- **과거 데이터와의 충돌:** 단순히 프레임 간격($\Delta t$)을 물리 연산에 곱하던 방식은 프레임 드랍 시 물체가 벽을 뚫는 등 심각한 오류 유발. 현대 게임 엔진은 반드시 누적기 기반의 고정 타임스텝을 사용함.
|
|
- **정책 변화:** Skybound 프로젝트는 1/60초 고정 타임스텝을 적용하며, 복잡한 물리 상황에서도 'Spiral of Death'에 빠지지 않도록 프레임당 최대 업데이트 횟수를 제한함.
|
|
|
|
## 🔗 지식 연결 (Graph)
|
|
- Physics-Engine, Game-Analytics, [[Parallel-Computing|Parallel-Computing]], Numerical-[[Analysis|Analysis]]
|
|
- **Raw Source:** 10_Wiki/Topics/AI/Time-Step-Logic-in-Games.md
|