2008-09-17 4 views
4

고정 요금 게임 로직을 어떤 업데이트 속도로 실행해야합니까?초당 게임 업데이트 수는 얼마입니까?

이전에는 초당 60 회의 업데이트를 사용했지만, 초당 짝수 번 업데이트 (16.666666)가 아니기 때문에 어렵습니다. 현재 사용하는 게임은 100 개를 사용하지만 대부분의 경우 과장된 것 같습니다.

+2

나는 오타라고 생각합니다. 초당 16.666 업데이트가 있습니까? 아마도 "초당 60 회의 업데이트는 16.666 밀리 초당 업데이트"입니다. – davr

답변

0

코드가주기까지 측정되지 않으면 각 게임 루프가 완료되는 데 걸리는 시간이 밀리 초가 아니므로 16.6666이 비합리적인 것은 문제가되지 않는다는 것을 명심하십시오. 어쨌든 시간과 보상이 필요합니다. . 게다가 초 당 16.6666 업데이트가 아니라 게임 루프가 목표로 삼아야하는 평균 시간 (밀리 초)입니다.

0

이러한 변수는 일반적으로 추측 및 확인 전략을 통해 가장 잘 나타납니다.

게임 논리를 신빙성이없는 방식으로 구현하십시오 (예를 들어, ms/업데이트를 변수로 사용하고 계산에 사용). 그런 다음 작동 할 때까지 새로 고침을 한 다음 놀아보십시오. 그것을 거기에서 지키십시오.

단기적인 해결책으로, 짝수 업데이트 속도를 원하지만 초당 업데이트의 균등성에 신경 쓰지 않는다면 15ms는 초당 60 업데이트에 가깝습니다. 당신이 둘 다에 관하여 인 경우에, 당신의 가장 가까운 선택권은 20ms이다 또는 50의 갱신은 아마 당신이 얻을 것입니다 가장 가까운 것입니다.

두 경우 모두 단순히 시간을 double (또는 고해상도의 긴 코드)로 처리하고 변수를 하드 코딩하지 않고 변수로 게임 속도를 제공합니다.

0

모니터와 동일한 재생 빈도로 실행하는 것이 이상적입니다. 그렇게하면 비주얼과 게임 업데이트가 서로 충돌하지 않게됩니다. 각 프레임이 정수 밀리 초 동안 지속되지 않는다는 사실은 당신에게 중요하지 않습니다. 왜 그게 문제 야?

10

위 항목 중 하나가 아닙니다. 가능한 가장 매끄러운 게임 플레이를 위해 게임은 프레임 기반이 아닌 시간 기반이어야합니다. 프레임 잠금은 논리를 조정할 수 있고 프레임 속도를 잠글 수있는 간단한 게임에서 작동합니다. 프레임 속도가 보드 전체로 점프하고 화면이 VSynced되지 않을 수있는 최신 3D 타이틀은 그렇게 잘 수행되지 않습니다.

당신이해야 할 일은 객체가 얼마나 빨리 움직여야하는지 (즉, 초당 가상 단위)를 계산하고, 마지막 프레임 이후의 시간을 계산하고, 가상 단위의 수를 그 값을 오브젝트의 위치에 추가하십시오. 빌라! 시간 기반 운동.

+0

많은 게임과 마찬가지로 Doom 3도 고정 된 60fps로 실행되었습니다. – moswald

+3

이것은 종종 물리학과 잘 맞지 않습니다. Half Life 2와 같은 많은 게임은 고정 타임 스텝 게임 루프를 사용하며 프레임의 지속 시간을 커버하기 위해 단일 프레임에서 게임 논리를 여러 번 실행합니다. –

+0

Mos : NVidia 또는 ATI 제어판을 열고 "수직 동기화"에 대한 설정을 찾으십시오. "끄기"로 뒤집습니다. Doom 3을 실행하고 정확히 60FPS로 실행되는지 확인하십시오. – 64BitBob

0

나는 보통 30 또는 33을 사용합니다. 사용자가 흐름을 느낄 정도로 자주하고 CPU를 너무 많이 먹지 않을 정도로 희귀합니다.

0

일반적으로 게임의 FPS를 제한하지 않고 마지막 논리 회로에서 입력 한 시간이지나도록 논리를 변경합니다.

고정 금리까지는 어떤 이유로 높은 요금이 필요하지 않으면 25/30과 같은 것을 사용해야합니다. 충분한 속도 여야하며 게임을 CPU 사용에 약간 가볍게 만들 것입니다.

+0

하나님, 나는 사람들이 "25 또는 30fps 이상의 프레임을 쓰레기통에 알리지 못합니다."라고 말하면 좋겠다고 생각합니다. – moswald

+0

이 사이트에서 fpscmp02.zip 파일을 다운로드하면 자신의 눈으로 30과 60의 차이를 볼 수 있습니다. http://forums.gameon.co.uk/showthread.php?t=9989 – moswald

3

고정 속도 PC 게임의 경우 50을 좋아합니다. 나는 실제로 50과 60의 차이를 말할 수는 없다. (그리고 당신이 할 수있는 게임을 만들고 있다면 아마 100에 있어야한다.)

'고정 속도 게임 논리'가 아니라 '루프 그리기'라는 질문에 유의하십시오.문제는 수 TICK_LENGTH한다 무엇

while(1) 
{ 
    while(CurrentTime() < lastUpdate + TICK_LENGTH) 
    { 
    UpdateGame(); 
    lastUpdate += TICK_LENGTH; 
    } 

    Draw(); 
} 

: 명확하게하기 위해, 코드는 같이 보일 것인가?

+0

그러나 모니터가 60Hz에서 실행되는 경우 1 프레임 대신 2 프레임마다 5 프레임 씩 표시되므로 불쾌한 소리가납니다. 비디오 괴짜가 3 : 2 풀다운으로 인식하는 효과. –

+1

얼마나 많은 FPS가 화면에 그려지 는가? 충돌 감지, 인공 지능 등에 대한 코드를 초당 몇 번 실행해야합니까? –

5

나는 Quake3 모드를 유지하기 위해 사용했는데 이것은 사용자 질문의 지속적인 출처였습니다.

Q3은 기본적으로 20 초마다 틱을 사용합니다. 그래야 그래픽 하위 시스템이 보간법을 적용하여 화면에서 부드럽게 움직입니다. 나는 처음에는이 방법이 좋지 않다고 생각했지만 괜찮 았던 것으로 밝혀졌으며 실제로 q3보다 더 빠른 동작을하는 게임이 전혀 없었습니다

저는 "존 핸드백, 좋은 나를 위해 충분하다 "

+1

실제로 보간 또는 외삽을 의미합니까? 그래픽 하위 시스템이 보간하면 항상 한 프레임 뒤처집니다. – Kenji

+0

예, 보간을 의미합니다. 지연이 있지만 클라이언트 측의 "예측"형식을 사용하므로 실제로 알지 못합니다. –

0

엔진은 수직 동기화 (vsync)로 60fps로"틱 "(업데이트)하고 그려야합니다.

  1. 응답의 느낌에 대한 낮은 입력 지연,
  2. 플레이어 장면이 빠르게 움직이는 경우에도 부드러운 움직임 :이 새로 고침 속도는 제공하기에 충분하다.

게임 물리학과 렌더러 모두 프레임을 삭제해야하지만 가능하면이 60hz 표준에 가깝게 실행되도록 게임을 최적화 할 수 있어야합니다. 또한 AI와 같은 일부 하위 시스템은 10-20fps에 가까워 질 수 있으며 다음과 같이 프레임 간 시간 델타에서 물리가 보완되는지 확인할 수 있습니다. http://gafferongames.com/game-physics/fix-your-timestep/

관련 문제