Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Почему DelphiX притормаживает в ХР, а в 98 летает?   Найти похожие ветки 

 
Vudu   (2004-10-20 18:08) [0]

Я тут сделал небольшую 2Д стрелялку (в ХР), потом включил ее в 98 и в ней стала такая скорость что невозможно играть. Можно ли это какнибудь пофиксить?
(я использовал увеличение интервала таймера в ХР до границы неторможения)


 
miek   (2004-10-20 18:21) [1]

Игры надо делать FPS-независимыми, тогда не будет неприятных сюрпризов. Когда работаешь по таймеру, обязательно смотри, сколько времени прошло с момента последнего вызова.


 
Megabyte-ceercop ©   (2004-10-22 06:53) [2]

Если юзаешь таймер, и его интервал не стоит на нуле или единице а где нибудь на 30-50, то проверку FPS делать ненужно, таймер обеспечит синхронизацию на самых ьыстрых машинах, и не очень быстрых. Его частота не зависит от машины.


 
miek   (2004-10-22 08:16) [3]

Это ты серьезно? Ну-ну, блажен кто верует, а я уже накололся раз.


 
Vudu   (2004-10-22 14:51) [4]

Вот и я интервал у таймера увеличивал, но мне кажеться это несерьезно, потому что на разных виндах все равно заметна разница. А если сильно увеличивать то сильно "FPS" падает.


 
miek ©   (2004-10-22 19:41) [5]

Не в интервале дело. Ты должен измерять время от последнего вызова процедуры таймера и в соответствии с ним менять все параметры движений и взаимодействий. Например, прошло Х миллисекунд, двигаем героя на Y пикселей, а если прошло 2*Х мс, то уже двигаем на 2*Y. Это называется FPS-независимость. Доходчиво?


 
Vudu   (2004-10-22 22:54) [6]

Кажись дошло. Надо будет попробовать.


 
DonNikola   (2004-12-21 05:40) [7]

Крайне рекомендую использовать мультимедийный таймер.
У него разрешение до 1 миллисекунды, а у стандартного ~18, и если сидеть на стандартном, то fps выше 50 не будет, даже для простого PutPixel"я.
Смотри в MMSystem функции: timeBeginPeriod, timeSetEvent etc.


 
Ландграф Павел ©   (2004-12-21 07:28) [8]

По большому счету проблема кривого (созданого не для игр) ДХтаймера, ставь из ПоверДрава, или пиши сам [через пики=)]
А скоростя разные из-за дровов... ну и особенностей 2k виндов, и из-за вышеописанной проблемы


 
Sphinx   (2004-12-21 11:31) [9]

> У него разрешение до 1 миллисекунды, а у стандартного ~18,

Для 9х - дискретизация TTimer составляет 55 мс, для систем NT - 10 мс.


 
DonNikola   (2004-12-22 04:37) [10]

2Sphinx: Прошу прощения ошибся, но только в цифре, перепутал 18 и 55, но смысл тот же. Я на форму кинул два таймера, один 1ms, другой  1000ms, первый увеличивает счетчик, а второй его отображает и сбрасывает, результат 19-24, это если ничего вообще кроме таймеров не работает. На WinApi результат почти тот же, разве что нет такого разброса. А с мультимедийным таймером до 500 фреймов в секунду отрабатывает, опять же если никакой другой активности нет.
И, на мой взгляд рассчитывать на то что везде стоит NT лучше не стоит, можно напороться.


 
DonNikola   (2004-12-22 04:39) [11]

А 18 - это то максимальное количество FPS которое можно получить, если использовать стандартный таймер.


 
Sphinx   (2004-12-22 11:26) [12]

> DonNikola   (22.12.04 04:39) [11]

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


 
DonNikola   (2004-12-22 23:49) [13]

Потоки это конечно здорово, но мне кажется, что их использование для этих целей несколько излишне. Я сначала пробовал делать непрерывный вывод, но отказался, сообщения не успевают отрабатываться, другие программы тормозят. Лучше повесить процедуру на мультимедийный таймер, а в ней постить WM_TIMER в главное окно, а уже в обработчике WM_TIMER"а и делать отрисовку. Так оно больше на виндовое приложение похоже, а что больше похоже, то и работать стабильнее будет. Такой метод даже на 5x86 работает.



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.031 c
4-1108110884
Stanislav
2005-02-11 11:34
2005.03.20
Как определить момент подключения Flash памяти ?


14-1109759124
mmms
2005-03-02 13:25
2005.03.20
Здравствуйте! Подскажите зачем есть такая закладка Diagram


1-1109808715
rosl
2005-03-03 03:11
2005.03.20
мониторинг


3-1108648358
Pluto
2005-02-17 16:52
2005.03.20
Размер базы данных


1-1110263709
X-Disa
2005-03-08 09:35
2005.03.20
TSpeedButton.Handle





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский