"매 simulation 의 fixed Δt 의 advance, render 의 variable Δt 의 interpolate". 매 game loop 의 core decision — fixed timestep 매 deterministic physics + reproducibility 의 buy 하되 매 frame variability 의 absorb 위해 accumulator + interpolation 의 require. 2026 매 Glenn Fiedler "Fix Your Timestep!" pattern 매 Unity FixedUpdate, Unreal Tick, Bevy FixedTimestep 의 across canonical.
매 핵심
매 Fixed Timestep
매 simulation 매 constant Δt (e.g. 16.67ms = 60Hz) 의 always advance.
doubleprevious=now();while(running){doublecurrent=now();doubledt=current-previous;previous=current;update(dt);// 매 dt 매 frame 의 따라 fluctuate
render();}
Fixed timestep with accumulator
constexprdoubleDT=1.0/60.0;// 16.67ms
doubleaccumulator=0.0;doubleprevious=now();Statecurrent_state,previous_state;while(running){doublecurrent=now();doubleframeTime=std::min(current-previous,0.25);// 매 spiral 의 cap
previous=current;accumulator+=frameTime;while(accumulator>=DT){previous_state=current_state;integrate(current_state,DT);accumulator-=DT;}doublealpha=accumulator/DT;Staterender_state=lerp(previous_state,current_state,alpha);render(render_state);}
Determinism-safe integration (fixed-point)
// 매 lock-step multiplayer — float drift 의 avoid
structFixed64{int64_traw;// 매 32.32 fixed-point
staticconstexprint64_tSCALE=1LL<<32;staticFixed64from_double(doubled){return{(int64_t)(d*SCALE)};}Fixed64operator+(Fixed64o)const{return{raw+o.raw};}Fixed64operator*(Fixed64o)const{return{(raw*o.raw)>>32};}};
Physics tunneling guard (continuous collision)
// 매 variable / large Δt 매 fast object 매 thin wall 의 tunnel
boolsweepAABB(AABBa,Vec2vel,AABBb,doubledt,double&tHit){Vec2inv={vel.x?1.0/vel.x:1e30,vel.y?1.0/vel.y:1e30};doubletEnter=std::max((b.min.x-a.max.x)*inv.x,(b.min.y-a.max.y)*inv.y);doubletExit=std::min((b.max.x-a.min.x)*inv.x,(b.max.y-a.min.y)*inv.y);if(tEnter>tExit||tEnter>dt||tEnter<0)returnfalse;tHit=tEnter;returntrue;}
Unity-style separation
publicclassPlayer:MonoBehaviour{publicfloatspeed=5f;voidUpdate(){// 매 input + visuals 의 variable Δtfloath=Input.GetAxis("Horizontal");// 매 input buffer 의 only X 매 visual extrapolation 의 do}voidFixedUpdate(){// 매 physics 의 fixed Δt — Time.fixedDeltaTimerigidbody.MovePosition(transform.position+dir*speed*Time.fixedDeltaTime);}}