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

Вниз

Организация рендеринга   Найти похожие ветки 

 
Juster~   (2003-04-20 13:49) [0]

Для того чтобы скорость демки была fps-независима я собираюсь использовать мультимедиа таймер (MMSystem). Посоветуйте, пожалуйста, как организовать рендеринг и обновление. Рендеринг я собираюсь поставить на таймер (~25 мс), а обновление зациклить в программе. Но ведь скорость, с которой будет происходить обновление, тоже бывает разная, тогда получиться что скорость демки будет зависить от скорости обновления (в основном это просчет столкновений), чего мне не надо. Что тогда делать? Ввести коэффициент (зависящий от UPS - Updates Per Second) для движения или вообще по другому сделать?


 
cyborg   (2003-04-20 16:10) [1]

Я наоборот сделал, считается всё по таймеру, а рендерится в цикле программы.
25 мс слишком мало, сделай 40, будет 25 раз в секунду обновляться, что приёмлемо, можно даже побольше поставьть, 50 например. Если мало поставишь, при просчётах на слабых машинах, если не будет успевать всё просчитать за эти 25 мс., то будет очень сильно всё тормозить.


 
Snap   (2003-04-20 16:32) [2]

А нельзя как нибудь проверять при каждом обновлении сколько это занимает времени и автоматически чтонибудь корректировать? К примеру скорость таймера?


 
cyborg   (2003-04-20 16:42) [3]

Можно, перед рендерингом GetTickCount и после, и смотришь разницу.


 
Juster~   (2003-04-20 18:49) [4]

2 cyborg: А если обновление не успеет произойти за эти 50 мс, тогда следующая фаза обновления пропадет, а значит снизится скорость движения, ведь так?


 
cyborg   (2003-04-20 18:54) [5]

Обновление чего?
Если не успеет, то будет тормозить сильно вся система, так как таймер имеет высокий приоритет, так что скорость движения это ещё цветочки :).


 
aldor   (2003-04-20 21:37) [6]

2Snap ( t) 2Snap
Совершенно верно, в очень динамичных играх с огромным количеством объектов "нулевой цикл" организовывается именно так.

Если интересует, примерная схема:

forever:
Прорисовка кадра текущего состояния.
t = время, ушедшее на прорисовку кадра.
ProcessGame(t) - продвигаем события игры на это время.

При любом времени прорисовки кадра, игра будет идти "в реальном времени". Для большей точности можно также еще учесть время, ушедшее на ProcessGame (ИМХО, нельзя локанично перевести).



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

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

Наверх





Память: 0.45 MB
Время: 0.01 c
6-74357
Веньтель
2003-08-25 22:54
2003.10.23
Программно запретить доступ к сетке некоторых машин


3-73989
SiJack
2003-10-01 09:22
2003.10.23
Использование БД двумя программами


14-74453
Knight
2003-10-03 16:54
2003.10.23
Кто-нибудь один... не надо много


3-74065
uu
2003-10-02 14:05
2003.10.23
импорт из HTML


1-74233
yaJohn
2003-10-09 11:19
2003.10.23
Переполнение массива в длл





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский