На чем основано игровое время?Реальное время или кадры? - PullRequest
6 голосов
/ 28 июня 2010

Я разрабатываю игру впервые, но мне интересно, на чем основано время игры. Это основано на часах или основано на кадрах? (Примечание: я не уверен, что слово «игровое время» здесь подходит, поправьте меня, если это не так)

Чтобы быть более понятным, представьте себе следующие сценарии:

  1. Компьютер 1 быстрый, до 60 кадров в секунду
  2. Компьютер 2 медленный, не более 30 кадров в секунду

На обоих компьютерах играется одна и та же игра, в которой персонаж ходит с одинаковой скоростью.

Если игровое время основано на кадрах, персонаж будет двигаться в два раза быстрее на компьютере 1. С другой стороны, если игровое время основано на реальном времени, компьютер 1 будет показывать в два раза больше кадров, но персонаж будет двигаться так же быстро, как на компьютере 2.

Мой вопрос: как лучше всего справляться со временем игры и каковы преимущества и недостатки?

Ответы [ 9 ]

10 голосов
/ 28 июня 2010

В общем, в коммерческих играх работают две вещи - цикл "симуляции" и цикл "рендеринга".Они должны быть максимально разделены.

Вы хотите зафиксировать временной шаг вашего моделирования на некотором значении (большем или равном вашей максимальной частоте кадров).Сложная физика не любит переменные временные шаги.Я удивлен, что никто не упомянул об этом, но шаги с фиксированным временем и шаги с переменным временем имеют большое значение, если у вас есть какая-то интересная физика.Вот хорошая ссылка: http://gafferongames.com/game-physics/fix-your-timestep/

Тогда ваш цикл рендеринга может выполняться максимально быстро и отображать результаты текущего шага моделирования.

Итак, ссылаясь на ваш пример:

Вы будете запускать симуляцию со скоростью 60 кадров в секунду, то есть с шагом в 16,67 мс.Компьютер A будет отображать со скоростью 60 кадров в секунду, то есть он будет воспроизводить каждый кадр симуляции.Компьютер B будет рендерить каждый второй кадр моделирования.Таким образом, персонаж будет двигаться на то же расстояние в одно и то же время, но не так плавно.

7 голосов
/ 28 июня 2010

Действительно старые игры использовали подсчет кадров. Быстро стало очевидно, что это плохая идея, поскольку машины становятся все новее, и, следовательно, игры работают быстрее.

Таким образом, основывайте его на системных часах. Как правило, это делается путем определения продолжительности последнего кадра и использования этого числа, чтобы узнать, сколько «реального времени» проходит этот кадр.

3 голосов
/ 28 июня 2010

Следует полагаться на системные часы, а не на количество кадров. Вы сделали свой собственный случай для этого.

1 голос
/ 28 июня 2010

FPS - это просто количество кадров, которое компьютер может воспроизводить в секунду.

Время игры - ВАШЕ время игры.Вы определяете это.Его часто называют «игровой цикл».Рендеринг кадров является частью игрового цикла.Также проверьте FSM, связанный с программированием игры.

Я настоятельно рекомендую вам прочитать пару книг по программированию игр.Вопрос, который вы задаете, заключается в том, что эти книги объясняют в первых главах.

0 голосов
/ 28 июня 2010

Игры обычно используют таймер с самым высоким разрешением, доступный как QueryPerformanceCounter на Windows, для определения времени.В старых играх использовались фреймы, но после того, как вы могли буквально работать быстрее в Quake, изменив свой FPS, мы научились больше этого не делать.

0 голосов
/ 28 июня 2010

Игра должна опираться на системные часы. Так как вы не хотите, чтобы ваша игра игралась на приличных компьютерах в мгновение ока!

0 голосов
/ 28 июня 2010

Это зависит от того, что вы обрабатываете, о какой части игры идет речь.

Например, для правильной работы анимации, физики и ИИ должны быть независимыми от частоты кадров. Если у вас есть анимационная или физическая нить, зависящая от FPS, то физическая система замедлится или персонаж будет двигаться медленнее в медленных системах и будет невероятно быстрым в очень быстрых системах. Не хорошо.

Для некоторых других элементов, таких как сценарии и рендеринг, вам, очевидно, нужно, чтобы они были для каждого кадра и, следовательно, зависели от частоты кадров. Вы хотите обработать каждый скрипт и визуализировать каждый объект один раз за кадр, независимо от разницы во времени между кадрами.

0 голосов
/ 28 июня 2010

Все игры должны использовать часы, а не кадры, чтобы обеспечить одинаковый игровой процесс независимо от платформы.Когда вы смотрите на MMO или онлайн-шутеры, это очевидно: ни один игрок не должен быть быстрее других.

0 голосов
/ 28 июня 2010

Чтобы пользователи каждого из них имели одинаковый опыт, вы захотите использовать фактическое время, иначе разные пользователи будут иметь преимущества / недостатки в зависимости от их аппаратного обеспечения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...