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

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

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

Ответ
 
Опции темы
Старый 22.06.2007, 22:05   #1
vadya
Оператор ЭВМ
 
Регистрация: 17.12.2006
Сообщений: 35
Написано 0 полезных сообщений
(для 0 пользователей)
Уход от привязки к FPS

решил сделать уход от привязки к FPS как в FAQ создаем фпс. сделал так
Function update_igrok()
If user_time=0 user_time=MilliSecs()
new_time=MilliSecs()
delta_t=(new_time-user_time)
user_time=new_time

If EntityDistance(igrok,piv)>20
MoveEntity igrok,0,0,.1*delta_t
If AnimSeq(igrok)=0 Animate igrok,1,.5,1,trans
Else
If AnimSeq(igrok)=1 Animate igrok,2,1,0,trans

EndIf

TranslateEntity igrok,0,-.03*delta_t,0
End Function
но у меня игрок дергается при передвижении. скажите где моя ошибка и как ее исправить пожалуйста
(Offline)
 
Ответить с цитированием
Старый 22.06.2007, 22:35   #2
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: Уход от привязки к FPS

Нужно выяснить смысл величины delta_t.
Когда разрабатывается игра, она нацелена на такую-то частоту обновления, допустим, 100 кадров в секунду. Это значит, что если у игрока игра выдает 100 ФПС, delta_t должна быть равна единице. Если реальный показатель ФПС ниже расчетного, нужно ускорить все движения, то есть delta_t > 1. Если же игра идет слишком быстро, delta_t < 1.
Теперь можно подумать о реализации:
time = 0

; Главный цикл
While 1
	ticks = Millisecs()	; текущее время

	elapsed = ticks - time
	time = ticks
После первого кадра значение time инициализируется текущим временем (это можно сделать и раньше, при желании). В elapsed хранится время, потраченное на обработку одного кадра (прошлого кадра).
При ФПС = 100, на обработку одного кадра уходит времени
const TARGET_FPS = 100

; 1000 миллисекунд / n кадров в секунду
period# = Float(1000) / Float(TARGET_FPS)
Мы уже знаем, что при ФПС = 100 delta_t = 1. Т.е. уже должно быть понятно, что надо что-то делить на что-то еще. Если ФПС > 100, delta_t должно быть меньше единицы. При этом на один кадр тратится времени меньше, чем при ФПС = 100. А если поделить меньшее число на большее, мы получим значение меньше единицы. Таким образом,
const TARGET_FPS = 100

; 1000 миллисекунд / n кадров в секунду
const period# = Float(1000) / Float(TARGET_FPS)


time = 0

; Главный цикл
While 1
	ticks = Millisecs()	; текущее время

	elapsed# = ticks - time
	time = ticks

	delta_t# = elapsed / period

	UpdateGame(delta_t)
	
	Render()
Wend
Если же ФПС < 100, elapsed будет больше, чем period, и delta_t соответственно примет значение больше 1.
(Offline)
 
Ответить с цитированием
Старый 23.06.2007, 09:34   #3
vadya
Оператор ЭВМ
 
Регистрация: 17.12.2006
Сообщений: 35
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Уход от привязки к FPS

спс щас попробую
(Offline)
 
Ответить с цитированием
Старый 23.06.2007, 11:01   #4
vadya
Оператор ЭВМ
 
Регистрация: 17.12.2006
Сообщений: 35
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Уход от привязки к FPS

не получается выходит ошибка вариабл тип мистак
(Offline)
 
Ответить с цитированием
Старый 23.06.2007, 11:28   #5
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: Уход от привязки к FPS

Где ошибка?
(Offline)
 
Ответить с цитированием
Старый 24.06.2007, 21:41   #6
vadya
Оператор ЭВМ
 
Регистрация: 17.12.2006
Сообщений: 35
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Уход от привязки к FPS

delta_t# = elapsed / period
(Offline)
 
Ответить с цитированием
Старый 24.06.2007, 22:53   #7
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: Уход от привязки к FPS

Проверь, чтобы у elapsed и period был тип Float.
(Offline)
 
Ответить с цитированием
Старый 26.06.2007, 13:02   #8
shaman_al
Оператор ЭВМ
 
Регистрация: 14.04.2007
Сообщений: 25
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Уход от привязки к FPS

Столкнулся с подобной проблемой.
Подскажите плиз, какая функция возвращает значение ФПС и как можно ограничить максимум ФПС (например 25 установить) ?
(Offline)
 
Ответить с цитированием
Старый 26.06.2007, 13:46   #9
jimon
 
Сообщений: n/a
Re: Уход от привязки к FPS

shaman_al
нету таких функций, самому писать надо
 
Ответить с цитированием
Старый 26.06.2007, 20:17   #10
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Уход от привязки к FPS

получить FPS
fps=1000/(millisecs()-a_time)
a_time=millisecs()

ограничить фпс:
while b_time>millisecs()-(1000/требуемый_фпс)
wend
b_time=millisecs()
(Offline)
 
Ответить с цитированием
Старый 26.06.2007, 22:25   #11
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: Уход от привязки к FPS

http://blitzetc.boolean.name/articles/stab.htm
Ограничить так можно:
timer = CreateTimer(25)

; Главный цикл
While 1
    WaitTimer(timer)
    ;...
Wend
(Offline)
 
Ответить с цитированием
Старый 27.06.2007, 01:22   #12
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Уход от привязки к FPS

раз уж про ето тема зашла то можно ставить flip 0 для того чтобы комп тупо не ждал пока картинка прорисуется на мониторе, а занялся бы чем нибудь более полезным.
(Offline)
 
Ответить с цитированием
Старый 27.06.2007, 10:32   #13
ЛысыЙ_Чук-Иванчук
Дэвелопер
 
Регистрация: 19.03.2006
Сообщений: 1,241
Написано 10 полезных сообщений
(для 17 пользователей)
Re: Уход от привязки к FPS

Правильно Flip 0 и Таймер на 25 фпс... и будет само то!!!!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Техника привязки Игр к CD/DVD SBJoker Алгоритмика 26 09.02.2009 10:30
Недопустимый дескриптор привязки johnk Болтовня 1 16.12.2007 12:18
неполучаются привязки hunt 3D-программирование 13 16.07.2006 00:00


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


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