2010-06-28 4 views
6

저는 처음으로 게임을 디자인하고 있지만, 게임 시간의 기반이 무엇인지 궁금합니다. 그것은 시계를 기반으로 하는가 아니면 프레임에 의존 하는가? (참고 : 나는 확실하지 않다 '게임 시간은'올바른 단어가 여기에있는 경우, 정정 저를, 그렇지 않은 경우)게임 시간이란 무엇입니까? 실시간 또는 프레임?

더 명확하게하려면 다음 시나리오를 상상 :

  1. 컴퓨터 1을 2는 30fps의 캐릭터가 같은 속도로 산책하는 같은 게임이 재생됩니다 모두 컴퓨터에

이하, 느린 컴퓨터

  • 60fps로
  • 까지 빠릅니다.

    게임 시간이 프레임을 기반으로하는 경우 컴퓨터 1에서 문자가 두 배 빠르게 이동합니다. 반면에 게임 시간이 실제 시간을 기준으로 한 경우 컴퓨터 1은 프레임의 두 배를 표시하지만 문자는 컴퓨터 2만큼 빠르게 움직입니다.

    제 질문은 게임 시간을 다루는 가장 좋은 방법은 무엇이고 장단점은 무엇입니까?

    +0

    +1 처음 QBASIC에서 프로그래밍을 시작한 시간을 상기시켜줍니다. :) – MAK

    +5

    컴퓨터에 터보 버튼이 있는지 여부에 달려 있습니다 ... –

    +0

    하 ... 게임이 너무 빠르기 때문에 터보를 끄는 것을 기억합니다. –

    답변

    7

    정말 오래된 게임은 프레임 수를 사용했습니다. 기계가 더 새롭고 게임이 더 빨리 실행되기 때문에 이것은 매우 나쁜 생각이었습니다.

    따라서 시스템 시계를 기반으로하십시오. 일반적으로 이것은 마지막 프레임이 얼마나 오래 걸렸는지를 알고이 숫자를 사용하여이 프레임을 얼마나 '실시간으로'알 수있게합니다.

    +2

    +1 : ㅎ. 누군가는 * Wing Commander *를 기억합니다 ... 그 문제에 대한 최악의 시리즈 중 하나입니다. 업데이트 된 하드웨어로 인해 재생할 수 없게되었습니다. 이제 게임은 시스템 시간을 기반으로 시간을 해석하고 그래픽 시스템은 게임 개체의 상태를 쿼리하고 그림을 그립니다. – Satanicpuppy

    +4

    실제로 사용 된 오래된 게임은 타이머 틱 * 프레임 수가 아닙니다. 빠른 클럭 (8MHz 대 4.77MHz)은 한 번에 두 번째 틱이 더 많았으며, 10 틱마다 일어난 일이 있기 때문에 게임이 더 빨리 실행되고 더 자주 화면에 그려지는 것을 의미했습니다. 증가 된 프레임 속도는 빠른 진드기의 * 결과 * 였지만 운동 자체의 기초가 아니 었습니다. –

    +0

    @Stephen P : 타이머 틱이 아니라 CPU주기를 의미한다고 생각합니다. 정말로 오래된 비디오 게임 (예 : Odyssey I)은 다양한 속도로 커패시터로 유입 및 유출되는 전하를 사용했습니다. 프레임 속도는 입력 클럭 속도의 엄격한 하위 배수이지만 약간 새로운 게임 (예 : 원래 Pong)은 비디오 프레임을 사용했습니다. 가장 인기있는 프로세서 제어 게임 시스템 (Atari 2600)은 전체 디스플레이를 한 번에 저장할 수있는 충분한 하드웨어가 없기 때문에 모든 프레임을 스캔 할 때 렌더링해야합니다. – supercat

    3

    프레임 수가 아닌 시스템 클럭에 의존해야합니다. 당신은 이것에 대한 자신의 경우를 만들었습니다.

    0

    각각의 사용자가 동일한 경험을 가지려면 실제 시간을 사용해야합니다. 그렇지 않으면 다른 사용자가 하드웨어에 따라 장점/단점을 갖게됩니다.

    1

    FPS는 컴퓨터가 초당 렌더링 할 수있는 프레임의 양을 나타냅니다.

    게임 시간은 게임 시간입니다. 당신은 그것을 정의합니다. 종종 "게임 루프"라고합니다. 프레임 렌더링은 게임 루프의 일부입니다. 또한 게임 프로그래밍과 관련된 FSM을 확인하십시오.

    저는 게임 프로그래밍에 관한 몇 권의 책을 읽는 것이 좋습니다. 당신이 묻는 질문은 그 책이 첫 장에서 설명하는 것입니다.

    0

    게임은 모든 플랫폼에서 동일한 게임 플레이를 제공하기 위해 프레임이 아닌 시계를 사용해야합니다. MMO 또는 온라인 슈팅 게임을 볼 때 분명합니다. 어떤 플레이어도 다른 플레이어보다 빠르지 않아야합니다.

    0

    처리 대상에 따라 게임의 어떤 부분이 문제입니까?

    예를 들어, 애니메이션, 물리학 및 AI는 제대로 작동하려면 프레임 속도가 독립적이어야합니다. FPS 종속 애니메이션 또는 물리 스레드가있는 경우 물리 시스템이 느려지거나 느린 시스템에서는 문자가 느리게 이동하고 매우 빠른 시스템에서는 엄청나게 빠릅니다. 안좋다.

    스크립팅 및 렌더링과 같은 일부 다른 요소의 경우 프레임 당, 따라서 프레임 속도에 따라 달라져야합니다. 프레임 간의 시간차에 관계없이 각 스크립트를 처리하고 각 오브젝트를 프레임 당 한 번 렌더링하려고합니다.

    0

    게임은 시스템 시계를 사용해야합니다. 당신이 당신의 게임이 알맞은 컴퓨터에서 놀고 싶지 않기 때문에!

    10

    일반적으로 상용 게임에는 "시뮬레이션"루프와 "렌더링"루프라는 두 가지 기능이 있습니다. 이들은 가능한 한 분리되어야합니다.

    시뮬레이션 시간 단계를 약간의 값 (최대 프레임 속도보다 크거나 같음)으로 수정하려고합니다. 복잡한 물리학은 가변 시간 간격을 좋아하지 않습니다. 나는 아무도 이것을 언급 한 것이 놀랍지 만, 당신이 흥미로운 물리학을 가지고 있다면 고정 시간 단계 대 가변 시간 단계가 큰 문제입니다. 여기에 좋은 링크가 있습니다 : http://gafferongames.com/game-physics/fix-your-timestep/

    그러면 렌더링 루프가 가능한 빨리 실행되고 현재 시뮬레이션 단계의 결과가 렌더링됩니다.

    따라서, 귀하의 예를 참조 :

    당신은 초당 60 프레임에서 시뮬레이션을 실행하는 것, 즉 16.67ms 시간 단계입니다. 컴퓨터 A는 60fps로 렌더링됩니다. 즉, 모든 시뮬레이션 프레임을 렌더링합니다. 컴퓨터 B는 모든 시뮬레이션 프레임을 렌더링합니다. 따라서 캐릭터는 같은 시간에 같은 거리를 움직이지만 매끄럽지는 않습니다.

    +0

    그것은 흥미 롭습니다; 전에는 변수 timestep 물리학에 문제가 없었습니다. 나는 비교적 단순한 작업을했거나 (과학적으로) 스탭 크기를 잠갔습니다. 더 빠른 머신에서 더 미세한 타임 스텝을 사용하면 더 부드럽고 더 좋아질 것입니다. 그렇습니다. 특정 물리학 기술은 속도가 너무 느려서 제대로 작동하지 않지만 컴퓨터를 고장 나게 만드는 것은 훨씬 나아지지 않습니다. – zebediah49

    +0

    "멀티 플레이어"는 "재미있는"의 정의일지도 모릅니다. 아마도이 특별한 경우에 지나치게 비싸지 만, 타임 스텝이 까다로운 주제라는 관점에서 볼 때 가치가있는 것은 아닙니다. – Justicle

    +0

    타임 스톱이 다르다면 매끄럽게 처리되지만 게임 플레이를 변경할 수도 있습니다. 예 : 게임의 적절한 통합을하지 않는 일부 (대부분) 게임에서, 바이러스 스캐너가 걷어차는 등 시간 경과가 바뀌면 크게 다른 시뮬레이션 결과를 얻을 수 있습니다 (예 : 점프, 당신은 꽤 많이 레벨의 어느 곳이라도 뛰어 넘을 수 있었습니까?). –

    0

    게임은 일반적으로 Windows에서 QueryPerformanceCounter와 같은 최고 해상도 타이머를 사용하여 작업을 수행합니다. 오래된 게임은 프레임을 사용했지만, FPS를 변경하여 문자 그대로 Quake에서 더 빠르게 실행할 수있게 된 후에는 더 이상 그렇게하지 않을 것을 배웠습니다.

    관련 문제