Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 24.06.2009, 22:08   #1
Unodeya
ПроЭктировщик
 
Аватар для Unodeya
 
Регистрация: 14.05.2009
Сообщений: 101
Написано 31 полезных сообщений
(для 67 пользователей)
Дельта тайминг

Слышал про это, но не раз в глаза код не видел. Кому не жалко поделитесь знаниями!)
(Offline)
 
Ответить с цитированием
Старый 24.06.2009, 22:16   #2
Sleepybear
ПроЭктировщик
 
Аватар для Sleepybear
 
Регистрация: 13.02.2009
Сообщений: 134
Написано 21 полезных сообщений
(для 22 пользователей)
Ответ: Дельта тайминг

http://forum.boolean.name/showthread...E5%EB%FC%F2%E0
http://forum.boolean.name/showthread...E5%EB%FC%F2%E0
http://forum.boolean.name/showthread...E5%EB%FC%F2%E0

Результат поиска по слову "Дельта"
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
newman (24.06.2009)
Старый 24.06.2009, 22:42   #3
Unodeya
ПроЭктировщик
 
Аватар для Unodeya
 
Регистрация: 14.05.2009
Сообщений: 101
Написано 31 полезных сообщений
(для 67 пользователей)
Ответ: Дельта тайминг

И что? Я тоже искал... КОда я там ни нашёл...ВСё равно спасибо
(Offline)
 
Ответить с цитированием
Старый 24.06.2009, 23:02   #4
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Ответ: Дельта тайминг

Код зависит в каждом конкретном случае непосредственно от кода игры, главное, что нужно понять - то, что необходимо домнажать ключевые действия (вроде перемещения и скорости проигрывания анимации) на некоторую скорость игры, которая должна быть обратно пропорциональна ФПС
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Ответить с цитированием
Старый 24.06.2009, 23:07   #5
Unodeya
ПроЭктировщик
 
Аватар для Unodeya
 
Регистрация: 14.05.2009
Сообщений: 101
Написано 31 полезных сообщений
(для 67 пользователей)
Ответ: Дельта тайминг

Это я понимаю... Мне нужен пример. Я понимаю что скорость перемещения обьекта нужно будет умножать на Дельту. Каким образом ведётся просчёт... Если не затруднит помогите пожалуйста.
(Offline)
 
Ответить с цитированием
Старый 24.06.2009, 23:34   #6
jimon
 
Сообщений: n/a
Ответ: Дельта тайминг

...
deltatime = 60.0 / current_fps
...
moveentity lol,0,0,speed * deltatime
...
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Unodeya (25.06.2009)
Старый 24.06.2009, 23:38   #7
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: Дельта тайминг

ы, напомнило мне одну историю, приключилась дня 2 назад, иду по улице и вдруг какойто старичок докапывается - короче вышел такой диалог
-"парень, незнаешь что тут происходит ?"
-"ну типа парад"
-"да я знаю ... а это, по какому поводу ?"
-"ну праздник, иванова ночь завтра"
-"да я знаю..."
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо NitE за это полезное сообщение:
newman (24.06.2009), Randomize (06.03.2010), Taugeshtu (25.06.2009)
Старый 24.06.2009, 23:44   #8
Unodeya
ПроЭктировщик
 
Аватар для Unodeya
 
Регистрация: 14.05.2009
Сообщений: 101
Написано 31 полезных сообщений
(для 67 пользователей)
Ответ: Дельта тайминг

Спасибо но у меня тут проблемма.
Вычисляю фпс так:
Function Init_Count_FPS()
If (MilliSecs()-FPSTime)>=1000 Then
		FPSTime = MilliSecs()
		FPSCount = FPSCountTemp
		FPSCountTemp = 0
	EndIf
	FPSCountTemp = FPSCountTemp + 1
	Return FPSCount
End Function
deltatime = 60.0 / FPSCount

Ставлю значение дельты перед инициализацие графики в глобалы.. Не работает.. В плане скорость меняется на -1.62354+008... Что делаю не так?
(Offline)
 
Ответить с цитированием
Старый 25.06.2009, 00:00   #9
jimon
 
Сообщений: n/a
Ответ: Дельта тайминг

Unodeya
сделай их не целыми
 
Ответить с цитированием
Старый 25.06.2009, 00:12   #10
Unodeya
ПроЭктировщик
 
Аватар для Unodeya
 
Регистрация: 14.05.2009
Сообщений: 101
Написано 31 полезных сообщений
(для 67 пользователей)
Ответ: Дельта тайминг

сделал с плавающей точкой. при проверке значения скорости игрока скорость = infinity(бесконечно)
(Offline)
 
Ответить с цитированием
Старый 25.06.2009, 00:59   #11
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Ответ: Дельта тайминг

По-моему, следует сделать так:
deltatime = 60.0 / Init_Count_FPS()

Потому что у тебя FPSCount является локальной переменной твоей функции
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Ответить с цитированием
Старый 25.06.2009, 10:43   #12
Unodeya
ПроЭктировщик
 
Аватар для Unodeya
 
Регистрация: 14.05.2009
Сообщений: 101
Написано 31 полезных сообщений
(для 67 пользователей)
Ответ: Дельта тайминг

FPSCount обозначена как глобальная переменная. А делить число на функцию, это что-то новое)) В любом случае не получилось.. Что-то не так.. Есть у кого нибудь маленький примерчик уже со счётчиком и каким нибудь обьектом? Помогите пожалуйста...
(Offline)
 
Ответить с цитированием
Старый 25.06.2009, 11:02   #13
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Дельта тайминг

Сообщение от Unodeya Посмотреть сообщение
А делить число на функцию, это что-то новое))
Ну, вам по-видимому ещё столько всего чудесного узнать предстоит о программировании.

Неприходила мысть просто подумать логически?
- Что такое фпс? Это число кадров в секунду.
- Что нужно сделать чтобы его узнать? Сосчитать кадры сделаные за секунду!
- Как сосчитать? Тупо fps=fps+1 в конце каждого кадра
- Но считать нужно в течении секунду, как это сделать? Запоминает в переменную текущее время fps_time=Millisecs() Потом проверяем если Millisecs() - fps_time>=1000 то прошла секунда и в переменной fps у нас искомый фпс.
Для следущего измерения нужно обнулить счётчик фпс предварительно сохранив старое значение last_fps=fps, fps=0, и снова запомнить текущее время: fps_time=Millisecs().

Ну а выводить на экран конешно последнее значение фпс из переменной last_fps.

Без понимания логики работы алгоритмов, делать в программировании нечего.
__________________
(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
H@NON (25.06.2009), Mr_F_ (25.06.2009), newman (25.06.2009), Randomize (29.04.2011), Tadeus (26.06.2009), Taugeshtu (25.06.2009)
Старый 25.06.2009, 11:09   #14
Unodeya
ПроЭктировщик
 
Аватар для Unodeya
 
Регистрация: 14.05.2009
Сообщений: 101
Написано 31 полезных сообщений
(для 67 пользователей)
Ответ: Дельта тайминг

Сообщение от SBJoker Посмотреть сообщение
Ну, вам по-видимому ещё столько всего чудесного узнать предстоит о программировании.

Неприходила мысть просто подумать логически?
- Что такое фпс? Это число кадров в секунду.
- Что нужно сделать чтобы его узнать? Сосчитать кадры сделаные за секунду!
- Как сосчитать? Тупо fps=fps+1 в конце каждого кадра
- Но считать нужно в течении секунду, как это сделать? Запоминает в переменную текущее время fps_time=Millisecs() Потом проверяем если Millisecs() - fps_time>=1000 то прошла секунда и в переменной fps у нас искомый фпс.
Для следущего измерения нужно обнулить счётчик фпс предварительно сохранив старое значение last_fps=fps, fps=0, и снова запомнить текущее время: fps_time=Millisecs().

Ну а выводить на экран конешно последнее значение фпс из переменной last_fps.

Без понимания логики работы алгоритмов, делать в программировании нечего.
Смотри мой пост под номером #8 там мой счётчик... В блице я работаю полтора месяца... А ещё зачем нужен был весь этот офтоп с сарказмом, Зачем вообще существует тогда этот форум? Если ты так умён помоги мне пожалуйста, а не пиши в этой теме лишнего..

Последний раз редактировалось Unodeya, 25.06.2009 в 11:20.
(Offline)
 
Ответить с цитированием
Старый 25.06.2009, 11:30   #15
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Дельта тайминг

1. Все переменные твоей функции должны быть глобальными
2. deltatime должна быть типа float (#)
3. На deltatime нужно умножать любое действие которое в игре должно быть стабилизировано по фпс, т.е. вместо MoveEntity ent, 10,0,0 пишем MoveEntity ent, 10*deltatime,0,0 и т.д.

Смысл умножения на делтатайм это "двигать вещи во столько раз быстрее во сколько раз наш фпс меньше проектного"

З.Ы. а FPSCount должна быть глобальной! А если она глобальная то можно невозвращать её значение из функции.
__________________
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
Arton (28.05.2017), Unodeya (25.06.2009)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 12:42.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com