Зафиксированный по сравнению с переменными частотами кадров в играх: что является лучшим, и когда?

Collection<Integer> l = new ArrayList<Integer>();//Do the collection thing...

l.removeIf(i -> i == 5);      //iterates through the collection and removes every occurence of 5

Лямбда-выражения и методы сбора в Jdk 8 входят в Handy и добавляют некоторый синтаксический сахар

7
задан vcsjones 20 July 2012 в 15:07
поделиться

5 ответов

Кажется, что большинство 3D разработчиков предпочитает переменного кадр/с: Quake, Гибель и Нереальные механизмы оба масштаба вверх и вниз на основе производительности системы.

  • По крайней мере необходимо компенсировать слишком быструю частоту кадров (в отличие от игр 80-х, работающих в 90-х, слишком быстро)
  • основной цикл должен быть параметризован тактом во всяком случае, и, пока это не слишком длинно, достойный интегратор как RK4 должен обработать физику гладко, Некоторые типы анимации (keyframed спрайты) могли быть болью для параметризации. Сетевой код должен будет быть умным также, для ухода от плееров с более быстрыми машинами от стрельбы в слишком много маркеров, например, но этот вид регулировки должен будет быть сделан для компенсации задержки во всяком случае (параметризация анимации помогла бы скрыть сетевую задержку также)
  • , код времени должен будет быть изменен для каждой платформы, но это - небольшое локализованное изменение (хотя некоторые системы делают чрезвычайно точную синхронизацию трудным, Windows, Mac, Linux кажется хорошо)
  • , Переменные частоты кадров допускают максимальную производительность. Фиксированная частота кадров допускает последовательную производительность, но никогда не будет достигать макс. во всех системах (это, кажется, выставочный стопор для любой серьезной игры)

, Если бы Вы пишете сетевую 3D игру, где вопросы производительности, которые я должен был бы сказать, стиснули зубы и реализуют переменные частоты кадров.

, Если это - 2D головоломка, вероятно, можно сойти с рук фиксированная частота кадров, возможно, немного параметризованная для супер медленных компьютеров и следующих моделей лет.

2
ответ дан 2 September 2019 в 02:54
поделиться

Я склоняюсь к переменной framerate модель, но внутренне некоторые системы отмечаются на фиксированном такте. Это довольно легко сделать при помощи аккумулятора времени. Физика является одной системой, которая лучше всего выполняется на фиксированном такте и отмечается многократно на кадр при необходимости, чтобы избежать потери в устойчивости и сохранить моделирование гладким.

Немного кода для демонстрации использования аккумулятора:

const float STEP = 60.f / 1000.f;
float accumulator = 0.f;

void Update(float delta)
{
    accumulator += delta;

    while(accumulator > STEP)
    {
        Simulate(STEP);
        accumulator -= STEP;
    }
}

Это не прекрасно каким-либо образом, но представляет основную идею - существует много способов изменить к лучшему эту модель. Очевидно, существуют проблемы, в которых разберутся, когда вход framerate является неприлично медленным. Однако большое преимущество состоит в том, что, неважно, то, как быстро или замедляют дельту, моделирование перемещается в гладкий уровень во "время плеера" - который является, где любые проблемы будут восприняты пользователем.

Обычно я не вхожу в графику & аудио сторона вещей, но я не думаю, что они затронуты так же как Физика, введены и сетевой код.

4
ответ дан 2 September 2019 в 02:54
поделиться

Одна опция, которую я, как пользователь, хотел бы видеть чаще, динамично изменяет уровень детализации (в широком смысле, не только техническом смысле), когда framerates варьируются за пределами certian конверта. Если Вы представляете на уровне 5 футов в секунду, то выключаете наложение рельефа. Если Вы представляете на уровне 90 футов в секунду, увеличиваете дополнительные свойства немного и даете пользователю некоторые более симпатичные изображения для траты их ЦП и GPU с.

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

, Конечно, я говорю это как пользователь игр, и не серьезный в том, что - никогда не пытался записать нетривиальную игру.

3
ответ дан 2 September 2019 в 02:54
поделиться

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

, Если, например, Вы добавляете время кадра * скорость к позиции и структурируете время, становится очень маленьким, и положение является великоватым, Ваши объекты могут замедлиться или прекратить перемещаться, потому что вся Ваша дельта была потеряна из-за точности. Можно компенсировать это использование отдельного ошибочного аккумулятора, но это - боль.

зафиксировавший (или по крайней мере нижняя граница на длине кадра) времена кадра позволяют Вам управлять, сколько ошибки FP необходимо принять во внимание.

2
ответ дан 2 September 2019 в 02:54
поделиться

Мой опыт справедливо ограничен несколько простыми играми (разработанный с SDL и C++), но я нашел, что довольно легко только реализовать уровень статического кадра. Вы работаете с 2-ми или 3-ми играми? Я предположил бы, что более сложные 3-и среды извлекут выгоду больше из переменной частоты кадров и что трудность была бы больше.

0
ответ дан 2 September 2019 в 02:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: