Игровой цикл Android, как контролировать скорость и частоту кадров

Я записал игру для Android, и я протестировал его на Dev Phone 1. Это работает отлично, скорость является просто правильной. Однако я уверен, что телефонный ЦП становится быстрее. Они могут уже быть быстрее, чем Dev Phone.

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

Я предполагаю, что обращаюсь к частоте кадров - но главным образом скорость, на которой моя игра пробегает основной игровой цикл.

Любая теория или опыт были бы большими!Спасибо.

18
задан Ben Mc 15 February 2010 в 09:56
поделиться

1 ответ

Вы можете выполнить статические проверки полученного типа (посмотрите на библиотеку признаков типа boost), но если вы не используете специализацию (или перегрузки, как правильно указывает @ litb) в тот или иной момент, вы не сможете предоставить различные конкретные реализации в зависимости от типа аргумента.

Если у вас нет конкретной причины (которую вы могли бы добавить к вопросу) не использовать специализацию в интерфейсе просто специализируйтесь.

template <> int subtract( std::string const & str );
-121--1468049-

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

-121--1188272-

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

Однако это само по себе не приводит к наилучшим возможным результатам, так как интервал может немного изменяться между кадрами. Есть очень хорошая статья по этому вопросу: http ://gafferongames.com/game-physics/fix-your-timestep/.

Кроме того, телефоны Android уже работают медленнее и быстрее, чем телефон dev 1. Таким образом, вы должны подготовиться к обоим случаям, если вы нацелены на все Android устройства. Если ваша игра не настолько тяжелая, возможно, вы сможете достичь желаемой частоты кадров на всех устройствах. Но если не ограничить частоту кадров, игра будет слишком быстрой на более быстрых телефонах Android.

15
ответ дан 30 November 2019 в 09:18
поделиться
Другие вопросы по тегам:

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