|
3D-программирование miniB3D, OpenGL |
07.07.2009, 18:05
|
#1
|
ПроЭктировщик
Регистрация: 14.05.2009
Сообщений: 101
Написано 31 полезных сообщений (для 67 пользователей)
|
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
|
(Offline)
|
|
07.07.2009, 18:38
|
#2
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Xors3D(Delta Timing)
Да вроде так.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
07.07.2009, 18:58
|
#3
|
ПроЭктировщик
Регистрация: 14.05.2009
Сообщений: 101
Написано 31 полезных сообщений (для 67 пользователей)
|
Ответ: Xors3D(Delta Timing)
Ещё вопрос, С такой дельтой на разных машинах игра будет вести себя одинакого?
Последний раз редактировалось Unodeya, 07.07.2009 в 19:06.
|
(Offline)
|
|
07.07.2009, 19:06
|
#4
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Xors3D(Delta Timing)
у тебя dt зависти от того сколько будет идти это:
xPointEntity cam, cube
xMoveEntity cube, 0, 0.01*dt, 0
xUpdateWorld()
xRenderWorld()
xFlip
|
(Offline)
|
|
08.07.2009, 01:09
|
#5
|
ПроЭктировщик
Регистрация: 14.05.2009
Сообщений: 101
Написано 31 полезных сообщений (для 67 пользователей)
|
Ответ: Xors3D(Delta Timing)
Global dt# = 60 / xGetFps()
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
А если так ??
|
(Offline)
|
|
08.07.2009, 01:40
|
#6
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Xors3D(Delta Timing)
Следи за логикой dt - получается что ты умножишь скорость, на длительность цикла - тоесть чем дольше просчитывается, на тем большее число ты умножишь (но тут будет в следующий кадр). А т.к. миллисекунды сильно варьируют - будет немалая потеря точности, на мелких цыклах. Нада брать jomon'а либу, для получения более точных миллесекунд..
По сути так можно поступить - но это ненормальный способ совсем..
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.07.2009, 01:45
|
#7
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Xors3D(Delta Timing)
Сообщение от MoKa
Следи за логикой dt - получается что ты умножишь скорость, на длительность цикла - тоесть чем дольше просчитывается, на тем большее число ты умножишь (но тут будет в следующий кадр). А т.к. миллисекунды сильно варьируют - будет немалая потеря точности, на мелких цыклах. Нада брать jomon'а либу, для получения более точных миллесекунд..
По сути так можно поступить - но это ненормальный способ совсем..
|
Теоретики. Я всю жись юзал Millisecs() и нормальная точность. Если у тебя там не > 1000 FPS (в чём я сомневаюсь)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.07.2009, 01:49
|
#8
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Xors3D(Delta Timing)
Если фпс примерно 60 - то это ~19 миллесекунд на цикл, если фпс падает до 20 - то это уже будет около 12. Разницу между 12 и 13 в фпс не сильно учуешь, но в логике она будет. По сути нормально. Но неточности на низких фпс будут присутствовать.
Если в этой игре нету завязок с временем или сетью (что бывает редко), то так можно без проблем.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
|
|
08.07.2009, 17:37
|
#9
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Xors3D(Delta Timing)
Если фпс примерно 60 - то это ~19 миллесекунд на цикл, если фпс падает до 20 - то это уже будет около 12.
|
Ты чего, у тебя при бОльшем ФПС бОльшая дельта, наоборот же ж!
60 ФПС = 17 мсек
20 ФПС = 50 мсек
Разница между 17 и 50, я думаю, ясна и без тысячных долей.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.07.2009, 18:54
|
#10
|
scientist.alien
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений (для 2,593 пользователей)
|
Ответ: Xors3D(Delta Timing)
А теперь сравним дельты на ФПС-ах 1000, 1999 и 2001:
1, 1, 0
Хотя в последних двух случаях должно было быть около 0.5
Итог - способ имеет место быть, но я продолжу привязываться к ФПС как более "честной" еденице, позволяющей получать float величины дельты
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab. We LOVE you. We MADE you.
|
(Offline)
|
|
08.07.2009, 19:19
|
#11
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Xors3D(Delta Timing)
А теперь сравним дельты на ФПС-ах 1000, 1999 и 2001:
|
Покажите пальцем где у вас бывает > 1000 FPS? Хотя бы > 500 ?
Итог - способ имеет место быть, но я продолжу привязываться к ФПС как более "честной" еденице, позволяющей получать float величины дельты
|
Чтобы измерить FPS нужно знать время цикла.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
08.07.2009, 20:20
|
#12
|
scientist.alien
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений (для 2,593 пользователей)
|
Ответ: Xors3D(Delta Timing)
>>Чтобы измерить FPS нужно знать время цикла.
Или сосчитать количество кадров, прошедшее за время 1 секунды
>>Покажите пальцем где у вас бывает > 1000 FPS? Хотя бы > 500 ?
Нате: (x3d, любуюсь скайбоксом)
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab. We LOVE you. We MADE you.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.07.2009, 20:52
|
#13
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Xors3D(Delta Timing)
А в реальной игре?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
08.07.2009, 21:16
|
#14
|
scientist.alien
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений (для 2,593 пользователей)
|
Ответ: Xors3D(Delta Timing)
Это является прототипом. Ясное дело что в реальной игре будет значительно меньше ФПС, но! Я хочу использовать дельтатайминг и в таких мелких прототипах, и хочу чтобы он работал корректно. В данном случае он бы не работал вовсе, заморозив прототип нафиг (dt=0)
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab. We LOVE you. We MADE you.
|
(Offline)
|
|
08.07.2009, 21:19
|
#15
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Xors3D(Delta Timing)
В движке есть функции позволяющие расчитать время выполнения куска кода с высокой точностью (возвращает float значение которого равно затраченному времени в миллисекундах). Если реально надо - завернуть не долго.
|
(Offline)
|
|
Эти 6 пользователя(ей) сказали Спасибо Knightmare за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Xors3d wants YOU! |
.Squid |
Xors3D |
33 |
13.01.2013 23:34 |
Xors3D для D |
johnk |
Проекты C++ |
8 |
09.08.2009 14:18 |
Xors3D for .NET? |
johnk |
C++ |
7 |
06.08.2009 09:34 |
Xors3D |
ЛысыЙ_Чук-Иванчук |
Модули для BlitzMax |
145 |
18.06.2009 21:17 |
xors3d |
NitE |
3D-программирование |
9 |
02.04.2009 22:21 |
Часовой пояс GMT +4, время: 06:20.
|