Игровой цикл для Android, как контролировать скорость и частоту кадров - PullRequest
18 голосов
/ 15 февраля 2010

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

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

Полагаю, я имею в виду частоту кадров, но в основном скорость, с которой моя игра проходит основной цикл игры.

Любая теория или опыт были бы великолепны! Спасибо.

1 Ответ

15 голосов
/ 15 февраля 2010

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

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

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

...