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 и добавляют некоторый синтаксический сахар
Кажется, что большинство 3D разработчиков предпочитает переменного кадр/с: Quake, Гибель и Нереальные механизмы оба масштаба вверх и вниз на основе производительности системы.
, Если бы Вы пишете сетевую 3D игру, где вопросы производительности, которые я должен был бы сказать, стиснули зубы и реализуют переменные частоты кадров.
, Если это - 2D головоломка, вероятно, можно сойти с рук фиксированная частота кадров, возможно, немного параметризованная для супер медленных компьютеров и следующих моделей лет.
Я склоняюсь к переменной 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 является неприлично медленным. Однако большое преимущество состоит в том, что, неважно, то, как быстро или замедляют дельту, моделирование перемещается в гладкий уровень во "время плеера" - который является, где любые проблемы будут восприняты пользователем.
Обычно я не вхожу в графику & аудио сторона вещей, но я не думаю, что они затронуты так же как Физика, введены и сетевой код.
Одна опция, которую я, как пользователь, хотел бы видеть чаще, динамично изменяет уровень детализации (в широком смысле, не только техническом смысле), когда framerates варьируются за пределами certian конверта. Если Вы представляете на уровне 5 футов в секунду, то выключаете наложение рельефа. Если Вы представляете на уровне 90 футов в секунду, увеличиваете дополнительные свойства немного и даете пользователю некоторые более симпатичные изображения для траты их ЦП и GPU с.
При правильной организации, пользователь должен получить лучший experince из игры, не имея необходимость входить в экран настроек и настраивать себя, и Вам придется волноваться меньше, как разработчик уровня, о проведении подсчета полигона то же через сцены различия.
, Конечно, я говорю это как пользователь игр, и не серьезный в том, что - никогда не пытался записать нетривиальную игру.
Основной проблемой, с которой я встретился с временами кадра переменной длины, является точность с плавающей точкой, и переменные времена кадра могут удивить Вас в том, как они кусают Вас.
, Если, например, Вы добавляете время кадра * скорость к позиции и структурируете время, становится очень маленьким, и положение является великоватым, Ваши объекты могут замедлиться или прекратить перемещаться, потому что вся Ваша дельта была потеряна из-за точности. Можно компенсировать это использование отдельного ошибочного аккумулятора, но это - боль.
зафиксировавший (или по крайней мере нижняя граница на длине кадра) времена кадра позволяют Вам управлять, сколько ошибки FP необходимо принять во внимание.
Мой опыт справедливо ограничен несколько простыми играми (разработанный с SDL и C++), но я нашел, что довольно легко только реализовать уровень статического кадра. Вы работаете с 2-ми или 3-ми играми? Я предположил бы, что более сложные 3-и среды извлекут выгоду больше из переменной частоты кадров и что трудность была бы больше.