Xors3D(Delta Timing)
НАчал изучать ксорс! Это руль)
Написал такой дельта тайминг.. Вроде работает.. Обращаюсь к специалистам всё ли правельно сделал? Спасибо за ответ. Global dt xGraphics3D 1024, 768, 32, 1, 0 xSetbuffer xBackBuffer() cube=xCreateCube() cam = xCreatecamera() xPositionEntity cam, 0, 0, - 5 Repeat deltatime = MilliSecs() xPointEntity cam, cube xMoveEntity cube, 0, 0.01*dt, 0 xUpdateWorld() xRenderWorld() xFlip dt = MilliSecs() - deltatime Until xKeyHit(1) End |
Ответ: Xors3D(Delta Timing)
Да вроде так.
|
Ответ: Xors3D(Delta Timing)
Ещё вопрос, С такой дельтой на разных машинах игра будет вести себя одинакого?
|
Ответ: Xors3D(Delta Timing)
у тебя dt зависти от того сколько будет идти это: :)
Код:
xPointEntity cam, cube |
Ответ: Xors3D(Delta Timing)
Код:
|
Ответ: Xors3D(Delta Timing)
Следи за логикой dt - получается что ты умножишь скорость, на длительность цикла - тоесть чем дольше просчитывается, на тем большее число ты умножишь (но тут будет в следующий кадр). А т.к. миллисекунды сильно варьируют - будет немалая потеря точности, на мелких цыклах. Нада брать jomon'а либу, для получения более точных миллесекунд..
По сути так можно поступить - но это ненормальный способ совсем.. |
Ответ: Xors3D(Delta Timing)
Цитата:
|
Ответ: Xors3D(Delta Timing)
Если фпс примерно 60 - то это ~19 миллесекунд на цикл, если фпс падает до 20 - то это уже будет около 12. Разницу между 12 и 13 в фпс не сильно учуешь, но в логике она будет. По сути нормально. Но неточности на низких фпс будут присутствовать.
Если в этой игре нету завязок с временем или сетью (что бывает редко), то так можно без проблем. |
Ответ: Xors3D(Delta Timing)
Цитата:
60 ФПС = 17 мсек 20 ФПС = 50 мсек Разница между 17 и 50, я думаю, ясна и без тысячных долей. |
Ответ: Xors3D(Delta Timing)
А теперь сравним дельты на ФПС-ах 1000, 1999 и 2001:
1, 1, 0 Хотя в последних двух случаях должно было быть около 0.5 Итог - способ имеет место быть, но я продолжу привязываться к ФПС как более "честной" еденице, позволяющей получать float величины дельты |
Ответ: Xors3D(Delta Timing)
Цитата:
Цитата:
|
Ответ: Xors3D(Delta Timing)
Вложений: 1
>>Чтобы измерить FPS нужно знать время цикла.
Или сосчитать количество кадров, прошедшее за время 1 секунды >>Покажите пальцем где у вас бывает > 1000 FPS? Хотя бы > 500 ? Нате: (x3d, любуюсь скайбоксом) |
Ответ: Xors3D(Delta Timing)
А в реальной игре?
|
Ответ: Xors3D(Delta Timing)
Это является прототипом. Ясное дело что в реальной игре будет значительно меньше ФПС, но! Я хочу использовать дельтатайминг и в таких мелких прототипах, и хочу чтобы он работал корректно. В данном случае он бы не работал вовсе, заморозив прототип нафиг (dt=0)
|
Ответ: Xors3D(Delta Timing)
В движке есть функции позволяющие расчитать время выполнения куска кода с высокой точностью (возвращает float значение которого равно затраченному времени в миллисекундах). Если реально надо - завернуть не долго.
|
Часовой пояс GMT +4, время: 21:20. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot