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

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

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

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

Ответ
 
Опции темы
Старый 22.11.2007, 19:15   #1
AndruXa
Знающий
 
Регистрация: 10.09.2007
Сообщений: 262
Написано 6 полезных сообщений
(для 8 пользователей)
Одинаковая скорость.

Совет всем новичкам писать эту фишку, чтоб потом не сталкиваться с проблемами разной скорости на разных компах, особенно в крупных проектах.
Как это сделать:
1) Сразу после инициализации графики пишем:
Global elapsed,FPS,period,time,ticks,tween#
FPS=50 
period=1000/FPS 
time=MilliSecs()-period
2) В главном цикле пишем:
elapsed=MilliSecs()-time 
      Until elapsed 
       
      ticks=elapsed/period 
      
      tween#=Float(elapsed Mod period)/Float(period) 
       
      For k=1 To ticks 
            time=time+period
3) Между UpdateWorld и RenderWorld пишем:
If k=ticks Then CaptureWorld
Next
4) Меняем RenderWorld наRenderWorld tween

PS:Все это из примера Castle, поставляемого с программой
Как видите все просто
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Abiron (02.01.2009)
Старый 22.11.2007, 19:20   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Одинаковая скорость.

AndruXa, ага, я эту фишку распространяю давныыым давно.
Вот она, сразу кодом
(Offline)
 
Ответить с цитированием
Старый 22.11.2007, 19:31   #3
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Re: Одинаковая скорость.

есть еще варианты ??
(Offline)
 
Ответить с цитированием
Старый 22.11.2007, 19:53   #4
AndruXa
Знающий
 
Регистрация: 10.09.2007
Сообщений: 262
Написано 6 полезных сообщений
(для 8 пользователей)
Re: Одинаковая скорость.

есть еще варианты ??
Других не знаю, а че, этого мало
(Offline)
 
Ответить с цитированием
Старый 22.11.2007, 19:54   #5
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Одинаковая скорость.

Да и называеться она: Синхронизация.
Я бы назвал так: Стабилизация UPS.
(Offline)
 
Ответить с цитированием
Старый 22.11.2007, 21:10   #6
jimon
 
Сообщений: n/a
Re: Одинаковая скорость.

есть еще синхронизация по дельта таймингу
синхротизация по таймеру
и есть еще тупое ограничение Fps мертвыми циклами

еще много чего есть
 
Ответить с цитированием
Старый 23.11.2007, 00:11   #7
AndruXa
Знающий
 
Регистрация: 10.09.2007
Сообщений: 262
Написано 6 полезных сообщений
(для 8 пользователей)
Re: Одинаковая скорость.

Извиняюсь, но это создавалось для новичков, Вспомните себя вам и это было сложно(как и мне)
(Offline)
 
Ответить с цитированием
Старый 23.11.2007, 00:52   #8
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: Одинаковая скорость.

Для новичков создавались Хелп, CreateTimer() и WaitTimer().
Тебя заверить могу, что простого более и стабильного способа ФПС стабилизации найти не стоит пытаться даже, юный падаван...

А ежели серьезно, то методов этих - как грязи и нужно выбирать наиболее подходящий к конкретной сиуации. Если же разницы между методами не видишь- не ищи лучшего от хорошего и юзай штатный таймер.
(Offline)
 
Ответить с цитированием
Старый 23.11.2007, 01:58   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Одинаковая скорость.

Diplomat дело говорит, помнится он совместно с tormoz сделали комбинированную систему.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 23.11.2007, 11:37   #10
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Одинаковая скорость.

Diplomat, но дело то в том, что таким ограничением как во 2 посту по ссылке, реализуеться и небольшая оптимизация, т.к. рендер и логика не идут паралельно, а порой рендер пропускаеться, поэтому получается что упс первостепеннен а фпс если позволяеться - будет. С таймером же, они всегда вместе и поэтому фпс будет ниже чем с этим ограничением.
имхо.
(Offline)
 
Ответить с цитированием
Старый 23.11.2007, 14:48   #11
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: Одинаковая скорость.

он совместно с tormoz сделали комбинированную систему
Сделать-то сделали, только она работала лишь на стенде, выдавая чудесные глюки при попытке практического применения. В общем, это был сферический конь в вакууме. )

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

;Рендер
RenderSkip=1-RenderSkip
IF RenderSkip=0 THEN RenderWorld()
Очевидно, фреймскип следует делать включаемым, зависимым от ФПС. Можно также ввести рендер твининг, хотя в Блице он не архистабилен.
И конечно же не стоит удивляться второй строке кода.
(Offline)
 
Ответить с цитированием
Старый 17.08.2008, 23:46   #12
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Re: Одинаковая скорость.

Есть еще вариант, с хелпа блитза :
;************************************************* ****
Описание
Используйте эту команду в паре с WaitTimer для контроля скорости выполнения игры (fps). Вы можете использовать это в главном цикле программы. Это не позволит выполняться игре быстрее на более мощных компьютерах. Использование этой системы очень хорошая практика, если ваша игра будет выполняться на различных компьютерах.

Пример
; Создаём таймер для контроля скорости
frameTimer=CreateTimer(60)

; Главный цикл отрисовки экрана
While Not KeyHit(1)
WaitTimer(frameTimer) ; Пауза пока не пройдет 60 млс. с прошлого вызова
Cls
; Сама отрисовка
Flip
Wend

; Уничтожаем таймер
FreeTimer(frameTimer)
;************************************************* *******
(Offline)
 
Ответить с цитированием
Старый 28.08.2008, 13:05   #13
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Ответ: Одинаковая скорость.

Это идиотизм
(Offline)
 
Ответить с цитированием
Старый 28.08.2008, 13:18   #14
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Одинаковая скорость.

Это идиотизм
поясните©
(Offline)
 
Ответить с цитированием
Старый 28.08.2008, 13:31   #15
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Ответ: Одинаковая скорость.

Если время просчета логики займет больше времени чем нужно, резко снижается скорость игры. На слабых же компах все начинает тормозить из-за того что "отстает" прорисовка. Вроде бы так )

извиняюсь ))) Здесь же только прорисовка

Последний раз редактировалось Tadeus, 28.08.2008 в 13:36.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (28.08.2008)
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скорость сакачки ger1234567 Delphi 0 31.12.2008 23:30
Тест на скорость newman Болтовня 1 04.05.2008 23:42
Скорость Fant 3D-программирование 36 24.06.2007 01:21
Скорость smaller 3D-программирование 5 21.08.2006 16:02


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


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