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

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

Вернуться   www.boolean.name > Проекты > Проекты на BlitzMax

Ответ
 
Опции темы
Старый 06.04.2009, 23:21   #1
Ende
AnyKey`щик
 
Регистрация: 08.11.2007
Сообщений: 13
Написано одно полезное сообщение
(для 3 участников)
Радость Wrecking Crew & LodeRunner : Leeroy

Всем привет, решил отписаться по поводу своего первого, я надеюсь, в будущем законченного (так как угробил времени не так мало) проекта. На нем, по сути, я и учусь делать игры и рисовать арт)) Это аркада, если есть такое право выразиться ремейк Wrecking Crew на NES + хочу добавить геймплей лодераннера, так сказать совместить эти две игры. Получается пока что не так уж и плохо, пишу параллельно игровую механику и редактор, черт побери, карт)) Игра на BlitzMax, вот один скрин, выложу еще где-то завтра-послезавтра.



Друзья, у меня к вам вопрос - как стабилизировать fps?? Он каждый раз разный при запуске игры!!
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Ende за это полезное сообщение:
impersonalis (07.04.2009), Randomize (08.04.2009), tormoz (09.05.2009)
Старый 07.04.2009, 07:36   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 03.09.2005
Сообщений: 14,014
Написано 6,795 полезных сообщений
(для 20,912 пользователей)
Ответ: Wrecking Crew & LodeRunner : Leeroy

как стабилизировать fps??
Рассчитывать все изменения в игре от dt, где dt - время, прошедшее с последнего обновления. Это же позволяет сделать рендер-твининг (Blitz3D). Это что касается привязки к фпс (синхронизации); теперь о стабилизации. Обновлять графику (в плане рисовать её) не каждую итерацию,а раз 30 в секунду (человек имеет где-то 25Гц зрительного рефреш-а). В освободившиеся промежутки времени (из-за неперманентного режима отрисовки) обрабатывать тяжёлые, но не критичные ко времени завершения обсчёта участки логики. Дробить объекты на подгруппы, обрабатывая их по частям (на 1ой итерации боты с №0-19, на 2ой - 20-39, на 3ей - 40-45 [т.к. тут включилась отрисовка] и т.д.). Оптимизировать графический вывод - отрисовывать тока необходимый участок экрана (если это не делается движком), кешировать в простойные моменты (как вызванные слабой активностью игрока, так и итерацией без отрисовки) пока ненужные, но прогнозируемые участки. Перерисовывать только изменённые с последнего раза участки (правда, это моет спровоцировать неоправданный рост объёма логики отрисовки).
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?

Последний раз редактировалось impersonalis, 07.04.2009 в 07:44.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
ABTOMAT (07.04.2009), Ende (07.04.2009)
Старый 07.04.2009, 12:34   #3
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,317
Написано 5,163 полезных сообщений
(для 14,916 пользователей)
Ответ: Wrecking Crew & LodeRunner : Leeroy

(человек имеет где-то 25Гц зрительного рефреш-а)
Херня и выдумка рекламщиков 25-го кадра
Или как же тогда объяснить тот факт что человек может спокойно отличить 25 Гц от 100 ?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (07.04.2009)
Старый 07.04.2009, 14:07   #4
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,910
Написано 3,395 полезных сообщений
(для 9,285 пользователей)
Ответ: Wrecking Crew & LodeRunner : Leeroy

всё элементарно просто, частота "захвата кадров" мозгом с сетчатки глаза 24Гц.
Однако изображение с частотой 24Гц может быть недостаточно из-за рассинхронизованности двух систем (человеческого мозга и воспроизводящего видео устройства). Поэтому наибольшая вероятность захвата глазом изображения в момент смены кадров на устройстве примерно на половину. в то время как вероятность захватить глазом кадр именно в момент переключения кадров 1/24 что маловато..

при частоте 100гц, имеет более 4х кратное увеличение частоты и значит вероятность увидеть полный кадр увеличивается в 4 раза т.е. 4/24 или 1/6.

Но на такой частоте уже в игру вступает инерционность зрения, которая выражается в запоминании сетчаткой глаза предыдущего кадра...который потом медленно начинает пропадать... и следущее изображение складывается с остаточным изображение и мы получает то самое смазывание на больших скоростях..
__________________
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
ABTOMAT (07.04.2009), impersonalis (07.04.2009), Tadeus (07.04.2009)
Старый 07.04.2009, 16:39   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 03.09.2005
Сообщений: 14,014
Написано 6,795 полезных сообщений
(для 20,912 пользователей)
Ответ: Wrecking Crew & LodeRunner : Leeroy

выдумка: особое восприятие гинотизрующего кадра номер 25.
правда: свыше 25 кадров осознанно оценить сложно, кадры свыше позволят достичь мягкости хода и комфортности восприятия (что, собсно, написал выше Джокер)
Или как же тогда объяснить тот факт что человек может спокойно отличить 25 Гц от 100 ?
ну уж.. 25 от 60-70.. а вот 90 от 100 - чего-т сомневаюсь.
Или ты в принципе настиваешь, что глаз не имеет конечной сокрости восприятия? А ТВ жадничают, выдавая такой низкий рефреш?
Да и как-то: я могу плоскую картинку от реального мира отличить - а всё равно играю: суть в том, чтоб корректно разгрузить цикл, а то б я и 1 фпс оставил)
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?

Последний раз редактировалось impersonalis, 07.04.2009 в 16:50.
(Offline)
 
Ответить с цитированием
Старый 07.04.2009, 17:01   #6
Ende
AnyKey`щик
 
Регистрация: 08.11.2007
Сообщений: 13
Написано одно полезное сообщение
(для 3 участников)
Ответ: Wrecking Crew & LodeRunner : Leeroy

Ребят, вы тут немножко оффтопом заниметесь со своим рефреш рейтом )) Я все равно никак понять не могу, как мне организовать в игре среднюю скорость. Когда загружен мозилла, фотошоп и какая-нибудь игра - моя демка идет меееееедлеееенннооооо....... А вот если ее одну запукскать, то там все просто жутко шустро летает!! Чуть позже выложу новые скрины.
(Offline)
 
Ответить с цитированием
Старый 07.04.2009, 17:46   #7
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Ответ: Wrecking Crew & LodeRunner : Leeroy

Сообщение от Ende Посмотреть сообщение
Я все равно никак понять не могу, как мне организовать в игре среднюю скорость. .
>Еще раз внимательно и вдумчиво читаем<

ЗЫ. А еще поиск рулит. Да-да.
(Offline)
 
Ответить с цитированием
Старый 07.04.2009, 17:59   #8
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,317
Написано 5,163 полезных сообщений
(для 14,916 пользователей)
Ответ: Wrecking Crew & LodeRunner : Leeroy

Впрочем факт остаётся фактом: 25 FPS явно недостаточно

Ende, коэффициент всякого обновления, зависящего от производительности умножай на коэффициент*дельта-тайм.

дельта-тайм = время смены кадров, я пользуюсь таким (псевдокод на б3д):

(просьба не ср*ть, что можно было обойтись одной переменной dt, на всё есть основания )

Global dt
Начало_Цикла
cycletime = Millisecs()
Игра вместе с рендером, 2Д логикой и всё-всё-всё
dt = Millisecs() - cycletime
Конець_Цикла

Таким образом dt оказывается временем предыдущего цикла

Например: за каждый цикл сколько пикселей пролетит самолёт (напр, 100). Зависит от производительности? Да! Чем больше FPS тем больше раз произойдёт передвижение - тем дальше он сдвинется. Если передвигать не на константное значение, а на коэфф.*dt (например, если средний dt у нас 10 (грубо говоря при 100 FPS) то получим 10*dt) тогда чем больше времени прошло за рендер кадра (FPS уменьшилось) то ве увеличилось и пройденное расстояние тож -> изменение компенсировалось.

Очень важно отделить, где что зависит от dt, а где нет. В сложных формулах могут появиться квадраты и т.д. но в принципе пока я думаю у тебя такого нет. Разберись с этим, dt - крутая весчь!
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Ende (07.04.2009), impersonalis (07.04.2009)
Старый 07.04.2009, 18:10   #9
Ende
AnyKey`щик
 
Регистрация: 08.11.2007
Сообщений: 13
Написано одно полезное сообщение
(для 3 участников)
Ответ: Wrecking Crew & LodeRunner : Leeroy

Спасибо, вроде понемногу разобрался)) Сейчас рисую врагов, какими их можно сделать, я даже не представляю))
(Offline)
 
Ответить с цитированием
Старый 07.04.2009, 18:11   #10
HolyDel
 
Регистрация: 25.09.2006
Сообщений: 6,030
Написано 1,469 полезных сообщений
(для 2,690 пользователей)
Ответ: Wrecking Crew & LodeRunner : Leeroy

я недавно пришел к выводу что dt очень красиво ложится в архитектуру игры если считать не в пикселях за цикл, а в пикселях за секунду. и вообще все параметры привязывать не к циклу и тикам а ко времени.

т.е. перезарядка ружья не 60 циклов, а 1 секунда
игрок едет вперед не на 2 еденицы за цикл, а на 100 едениц в секунду и т.д.
с учетом того что dt - это в мс. очень удобно бывает писать типа:
if(MouseDown(1) && reload_time<0)
{
Shoot();
reload_time = 1000; //1000 мс
}
reload_time -= dt;

Последний раз редактировалось HolyDel, 07.04.2009 в 19:09.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
ABTOMAT (07.04.2009), Tadeus (07.04.2009)
Старый 07.04.2009, 18:27   #11
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 03.09.2005
Сообщений: 14,014
Написано 6,795 полезных сообщений
(для 20,912 пользователей)
Ответ: Wrecking Crew & LodeRunner : Leeroy

http://forum.boolean.name/showpost.p...8&postcount=20
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 07.04.2009, 19:04   #12
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,317
Написано 5,163 полезных сообщений
(для 14,916 пользователей)
Ответ: Wrecking Crew & LodeRunner : Leeroy

Конечно же я имел в виду "за секунду"
Но я думаю, фабула и так ясна
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 08.05.2009, 20:06   #13
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: Планета Земля
Сообщений: 4,106
Написано 2,310 полезных сообщений
(для 6,438 пользователей)
Ответ: Wrecking Crew & LodeRunner : Leeroy

Когда демка будет???
Очень хочется поиграть.
Я фанат Lode Runner.
__________________
Retry, Abort, Ignore? █
Пека: AMD Athlon II x4 2.6Ghz; 8Gb ram; Nvidia Geforce GTX 750 Ti
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


Часовой пояс GMT +1, время: 20:27.


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