가장 좋은 대답은 : 그것은 의존한다 .
어느 쪽도 제한하지 않아도됩니다
업데이트 : 업데이트가 상한에 묶이지 않으면 게임 논리는 델타 시간 에 의존해야 합니다. 이것은 많은 게임에서 사용되는 매우 일반적인 접근 방법이지만 유일한 방법은 아닙니다.
렌더링 : 렌더링이 상한에 구속되지 않으면 프레임 버퍼가 불완전하거나 잘못된 상태로 표시되어 아티팩트 가 찢어 질 수 있습니다. 많은 게임에서 수직 동기화 (v-sync)를 사용하는 이유
둘 다 제한 할 수 있습니다
업데이트 : 일부 게임 은 일부 또는 모든 게임 플레이 시스템 에 고정 된 시간 간격 을 사용 합니다. 이 방법은 설명한대로 작동합니다. 초당 업데이트 수는 최고 수준의 시스템에서 너무 빨리 움직이지 않도록 상한으로 제한됩니다. 이것은 델타 타이밍의 필요성을 제거합니다. 일부 애플리케이션은 고정 된 타임 스텝으로 개선되고 일부는 델타 타이밍으로 개선됩니다. 어떤 접근 방식을 선택하는지는 정확히 달성하려는 것에 전적으로 달려 있습니다. 온라인 서적 GameProgrammingPatterns 에는 두 아키텍처 모두 를 다루는 게임 루프 전용 장이 있습니다 .
렌더링 : 앞에서 언급 한 테어 링 문제를 피하려면 초당 프레임 수를 상한으로 설정해야하지만 응용 프로그램 은 일부 CPU 잠금으로 수동으로 시도하지 않아야합니다 . 대신 v-sync를 활성화하고 기본 하드웨어가 모니터의 새로 고침 빈도와 동기화되도록하십시오. 이를 통해 게임은 현재 일반적인 60Hz보다 훨씬 높은 주파수에서 작동 할 수있는 미래의 모니터와 호환됩니다. 또한 많은 게이머, 특히 벤치마킹을하는 게이머는 가능한 한 가장 높은 프레임 속도를 허용하기 위해 v-sync없이 실행하는 것을 선호합니다. 따라서 런타임 중에 기능을 활성화하거나 비활성화하는 것이 합리적입니다.
제한해서는 안되는 것
게임에서 사용자 입력에 대한 폴링 기반 접근 방식을 사용하는 경우 (예 : getInput()
업데이트 단계에서 컨트롤러 상태를 업데이트하기 위해 일종의 호출) 제한이없는 경우 더 좋습니다. 또는 제한된 경우 매우 높은 상한으로 설정하십시오. 사용자가 입력 한 내용을 자주 쿼리하고 그에 따라 행동할수록 게임의 반응이 빠르고 원활 해집니다. 오늘날 우리가 듣는 소위 60Hz 게임은 AI와 모든 세계 상태를 그 속도로 업데이트하지 않고 일부는 그렇게 빨리 렌더링하지 않지만 컨트롤러 입력을 초당 적어도 60 번 쿼리하고 이에 따라 플레이어 아바타를 업데이트합니다. 이것은 빠른 진행형 액션 게임과 만 관련이 있음을 인정했습니다.