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