Показать сообщение отдельно
Старый 13.01.2009, 00:33
puzzlesea вне форума Посмотреть профиль Отправить личное сообщение для puzzlesea Найти все сообщения от puzzlesea
  № 10  
Ответить с цитированием
puzzlesea

Регистрация: Jan 2009
Сообщений: 15
Я использовал такой подход:
1. Логика четко фиксирована по времени - так гораздо легче считать, если есть события и их последствия, а не только простое перемещение.
2. Частота отрисовки подстраивается под производительность: Нам известен интервал между циклами отрисовки. Засекаем время обсчета логики и время отрисовки кадра. Если времени и на то и на другие не хватает, переходим к рассчету след. кадра, увеличиваем запас времени на отрисовку (время общего интервала минус время на обсчет). Обсчитываем логику пока не накопится достаточно времени для отрисовки. И так по циклу. Еще я отрисовку делал в бэкбуфер, а он по-любому выводился с фиксированной частотой, т.к. это занимало ничтожно мало времени в сравнении даже с обсчетом логики и картинка получалась достаточно плавной и при низком ФПС. И еще я использовал самонастройку, которая уменьшала количество не нужных особо объектов (частиц в эффектах) и ФПС был на достаточно хорошем уровне.
Недостаток: вариант, когда на просчет логики не хватает времени, не рассматривался. Когда просчет съедает все время, отрисовки может не быть вообще, но это можно предусмотреть в алгоритме.
И еще это было не на флеше, но, считаю, применить метод можно.
Еще любят делать отдельные потоки для логики и отрисовки. Логика расчитывается отдельно, и картинка отрисовывается отдельно. Если это как-то объединить с подстройкой ко времени отрисовки, то можно получать нужное и при падении ФПС.

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


Последний раз редактировалось puzzlesea; 13.01.2009 в 00:40.