이것은 비디오 게임을 시뮬레이션하고 렌더링하는 방법의 예 (의사 코드)입니다. 내 질문간단한 시뮬레이션 및 렌더링 루프 이해
//simulate 20ms into the future
const long delta = 20;
long simulationTime = 0;
while(true)
{
while(simulationTime < GetMilliSeconds()) //GetMilliSeconds = Wall Clock Time
{
//the frame we simulated is still in the past
input = GetUserlnput();
UpdateSimulation(delta, input);
//we are trying to catch up and eventually pass the wall clock time
simulationTime += delta;
}
//since my current simulation is in the future and
//my last simulation is in the past
//the current looking of the world has got to be somewhere inbetween
RenderGraphics(InterpolateWorldState(GetMilliSeconds() - simulationTime));
}
:
나는 루프 (초당 25을 의미) '는 true 동안'외부를 통해 갈은 40ms가 있습니다. RenderGraphics 메서드는 10ms가 소요됩니다. 그래서 그것은 내적 루프를 위해 30ms가 있음을 의미합니다. UpdateSimulation 메서드는 5ms가 소요됩니다. 0.1ms 미만의 값이므로 무시할 수 있습니다.
40ms (외부 루프)의 내 시간 일정을 유지하기 위해 '델타'변수를 설정할 수있는 최대 값은 무엇입니까? 그리고 왜?