Показать сообщение отдельно
Старый 23.11.2007, 14:48   #11
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: Одинаковая скорость.

он совместно с tormoz сделали комбинированную систему
Сделать-то сделали, только она работала лишь на стенде, выдавая чудесные глюки при попытке практического применения. В общем, это был сферический конь в вакууме. )

С таймером же, они всегда вместе и поэтому фпс будет ниже чем с этим ограничением.
На максимальных нагрузках ФПС, т.е. количество проходов рендера, с таймером будет выше, зато будет тормозить логика и игра замедлится.
Синхронизатор зарежет ФПС фреймскипами, в итоге логика тормозить не будет, но на экране будет в лучшем случае слайдшоу.
Дельтатайминг достаточно нестабилен- возможны постоянные перепады скорости и рывки.
...
В итоге лично я избрал сочетание "программный ограничитель проходов логики" + "включаемый фреймскип" + "рендер твининг". В наиболее примитивном виде это выглядит так:
;Всё внутри главного цикла
;Ограничитель логики
IF LogicDelay<Millisecs() THEN
  LogicDelay=LogicDelay+LogicMaxCycleDealy
  IF LogicDelay<Millisecs() THEN LogicDelay=Millisecs()+LogicMaxCycleDealy
    ;Тут вставляем обновление логики
ENDIF

;Рендер
RenderSkip=1-RenderSkip
IF RenderSkip=0 THEN RenderWorld()
Очевидно, фреймскип следует делать включаемым, зависимым от ФПС. Можно также ввести рендер твининг, хотя в Блице он не архистабилен.
И конечно же не стоит удивляться второй строке кода.
(Offline)
 
Ответить с цитированием