вопрос: Что нужно знать про FPS и необходимость борьбы с перфекционизмом?
ответ:
Очень часто разработчики приложений меряются FPS (frame per second, "кадров в секунду"). При этом периодически называются значения порядка "1000 и более". В связи с чем есть несколько фактов, которые надо учитывать ))
Факт: человеческому глазу сложно (в принципе, а у большинства людей с "обычным, нетренированным" зрением - и вообще, невозможно) воспринимать графику, меняющюся чаще чем 60 раз в секунду. Соответственно, фпс более 60 - излишний перфекционизм. Силы, потраченные на достижение данного результата лучше потратить на что-то более полезное. Более того, это может стать даже вредным.
Например, в Вашей игре 90 фпс. Следовательно, для большинства игроков каждый третий кадр будет "невидимым" - его просто не заметят. То есть 1/3 игрового процесса пропадает. Подумайте, не попадают ли в эту 1/3 какие-либо действительно важные игровые элементы/действия, например "выстрелы" (и в итоге пули рождаются "в воздухе", в далеке от игрока), или ключевые кадры анимации, или те "гемплейные моменты", в которые игрок должен среагировать (а он их просто не заметил)?
Факт: многие устройства (или браузеры, если говорить не о мобильных, а о десктопных версиях) искуственно (аппаратно или программно) ограничивают фпс. В частности, большинство мобильных устройств в целях экономии энергии ограничивают фактический фпс 30 кадрами в секунду. А, например, Амазон со своими Кинлфаерами пошел еще дальше - оставив разработчикам всего 20 фпс. Соответственно, изучите устройства Вашей целевой аудитории, и адаптируйте Ваше приложение уже с учетом особенностей, не тратя время на излишний перфекционизм и доведение до "совершенства", которое кроме Вас самих никто не заметит и не оценит ))
Факт: использование события "Every tick" очень удобно, однако многие забывают, что частота "Every" напрямую зависит от фпс, и чем фпс ниже - тем реже происходит действие. Если "Every tick" у Вас происходит движение - оно будет замедленно (и создастся впечатление "тормозов", при этом по факт тормозов не будет), если создание какого-либо обьекта (например, дроп монеток из сундучков) - их создастся меньше, если анимация - часть кадров может пропасть, и анимация станет дерганной.
При этом можно использовать событие "Every X second" - которое дает аналогичный эффект, только независящий от фпс. Наприме, при Х = 0.05 - аналогично 20 фпс, при Х = 0.033 - 30 фпс, при Х = 0.017 - 60 фпс. И какой бы фактический фпс не был на конечном устройстве - действие всегда будет одинаковым, таким, каким Вы его и запланировали.
P.S. Небольшая подборка мини-фактов - числу 5 кратны и 20, и 30, и 60. 5 - базовая скорость анимации в Construct2. 0.2 секунды - время, за которое мозг казуального игрока успевает "обхватить" картинку на экране и понять, что на ней происходит (без деталей, разумеется). 0.1 секунда требуется на то же самое хардкорному игроку. Если внимние игрока привлечено к какому-то небольшому участку экрана - на происходящее в других частях он обращает меньше внимания, и действие там может быть менее четким. "мозговой фпс" игрока для "низкоприоритетных" участков экрана может составлять 1-3 кадра в секунду, и этим можно пользоваться. Пример - "бэкграунды гоночек". Проедтесь по НФС с низкой скоростью и посмотрите на пейзажи - будете удивлены. А когда вы поглощены гонкой - Вы этого не замечаете. Да и кто (кроме нескольких фриков, делающих это специально) будет ездить в гоночках медленно? Или многие, наверняка, замечали, что анимация в тавер дэфенсах (даже топовых) - не очень, у монстров 5 "кадров" на 1 анимацию? Но в пылу боя вы видите марширующих коварных противников, так как Ваш мозг воспринимает все с поправкой на свой "внутренний фпс" - и если его устраивает "процесс", то и ощущения от корявой (действительно корявой, ведь 5 кадров из 60 возможных - это коряво и лениво) анимации будут "хорошие", как будто игрок увидел и 55 остальных, ненарисованных кадров. А вот на Главном Герое это будет смотреться хуже - ведь на нем все внимание, и он воспринимается РЕАЛЬНО ))
Фпс - это не бог игростроя, а еще один из инструментов. Пользуйтесь им с умом, и не ищите ложного "совершенства" там, где оно не нужно. Лучше потратьте высвобожденные силы на действительно важные вещи.
Что нужно знать про FPS? |
Последний раз редактировалось SysDiman 08 ноя 2013, 06:53, всего редактировалось 2 раз(а).
В случае "спасибо, помог" плюс в репутацию приветствуется ) Если сделанное тянет на отдельный "плюс", разумеется ))
Мои игры: SSG (тест, браузерка), Cradle of Flames (Android)
Мои игры: SSG (тест, браузерка), Cradle of Flames (Android)
статья хорошая, но мне кажется она немного не вписывается в раздел F.A.Q. (часто задаваемых вопросов). ее либо перенести в раздел Уроки либо оставить тут но переименовать на Что нужно знать про FPS?
как считаешь?
как считаешь?
Уроки: Раннер от А до Я
Уроки: Создание игры для Андроид от А до Я
Уроки: TDS от А до Я
Уроки: Платформер от А до Я
Создание игр на заказ
Уроки: Создание игры для Андроид от А до Я
Уроки: TDS от А до Я
Уроки: Платформер от А до Я
Создание игр на заказ
-
- Сообщений: 6494
- Я тут с 05 сен 2012
- Двиг: Construct2
- Лицензия: Personal
- VK: gabrielsailergray
- Репутация 469 [ ? ]
Sailer писал(а):перенести в раздел Уроки либо оставить тут но переименовать на Что нужно знать про FPS?
На мой взгляд, для раздела уроки, она не подходит, лучше переименовать...
ок. оставляем тут
Уроки: Раннер от А до Я
Уроки: Создание игры для Андроид от А до Я
Уроки: TDS от А до Я
Уроки: Платформер от А до Я
Создание игр на заказ
Уроки: Создание игры для Андроид от А до Я
Уроки: TDS от А до Я
Уроки: Платформер от А до Я
Создание игр на заказ
-
- Сообщений: 6494
- Я тут с 05 сен 2012
- Двиг: Construct2
- Лицензия: Personal
- VK: gabrielsailergray
- Репутация 469 [ ? ]
Не знаю кто там меряется ФПС, впервые слышу, но допустим у себя в проекте я делаю именно 60 потому что на 50 - 40 игра смотрится не красиво, а чтобы она понравилась она не должна тормозить...
Играя в вашу игру если она будет тормозить игрок выкинет ее в мусорку !
Играя в вашу игру если она будет тормозить игрок выкинет ее в мусорку !
-
- Сообщений: 3539
- Я тут с 30 окт 2012
- Двиг: C2\Unity
- Лицензия: Personal
- Skype: asmatrix116
- VK: vk.com/red.gear
- Репутация 203 [ ? ]
AHTuCTATuK писал(а):допустим у себя в проекте я делаю именно 60 потому что на 50 - 40 игра смотрится не красиво
Ты, наверное, не совсм понял, про что я.
Когда ты говоришь "я делаю 60 фпс", ты имеешь в виду "средний" (а скорее всего даже "максимальный") фпс проекта. То есть у тебя весь экран целиком обновляется 60 раз за секунду. Но все ли обьекты у тебя обновляются с той же частотой? У тебя, насколько я понял, есть персонаж, у которого есть анимация движения. И что, хочешь сказать, у тебя за секунду проигрывается 60 кадров? Я почему-то подозреваю, что у тебя в принципе нет анимаций длиннее 20 кадров )) А уж тем более идущих со скоростью 60 кадров в секунду? )) И все проверки и действия тебя в игре происходят с частотой 60 раз в секунду (то есть если тебе надо двинуть персонажа на 10 пикселей за секунду, ты делаешь 60 движений по 0.16 пикселя)?
Вот про что я писал - какая разница, какая у тебя частота обновления экрана, если сами события происходят реже? И есть ли смысл заставлять все события подгонять к "60 раз за секунду", если можно подогнать их к кратным значениям, а 60 оставить только для тех мест, которые критически важны?
Низкий фпс - это еще не тормоза, он может таким быть специально. Еще раз напомню про Need For Speed - есть трасса длинной 20 километров, например, детальная отрисовка пейзажей займет у художников массу времени и сил (а студии влетит в крупную копеечку к бюджету разработки). Но зачем это делать, если фактический фпс пейзажа (не машины, машину-то прорисовывают максимально детально) - крайне низкий, и игрок все равно видит лишь общую смазанную картинку, а "дорисовывает" ее уже его подсознание (ну да, мы видим "поле", "небоскреб", "фонтан" - но каждый видит слегка по разному, а рельная игровая графика лишь задает ориентиры для мозга - массштабы, пропорции, стиль, цветовую палитру).AHTuCTATuK писал(а):чтобы она понравилась она не должна тормозить
В игре на мобилки делаю анимации с разной частотой кадр/сек.
Для персонажа 2 анимации - 25 кадров(бег+серф) - они действительно постоянно на виду и самые часто проигрываемые.
Анимация покоя и падения - урезал до 15 кадр/сек, выкинув много лишних кадров, хотя в динамике можно обойтись и 1 кадром без анимации вовсе - был баг, когда анимация вовсе не проигрывалась на них 2х - я это даже не сразу заметил, пока на стресс-тесте(доведя игру до 17фпс) не пригляделся...
Мелкие анимации по 7-10 кадров проигрываются 12 кадр/сек - опять же в динамике глазу дискомфорта не составляет.
Пытался урезать по кадрам падающие метеориты - вот тут глаз забунтовал - ибо анимации большие - и меньше 25 кадров/сек глаз видит раскадровку...
В целом при тестировании на смартфоне в режиме энергосбережения(ограничивает приложения до 40 фпс) - игра идет вполне плавно, физика работает корректно по большей части - неприхотливому пользователю с незамыленным глазом от постоянного сравнения с 60фпс будет и вовсе незаметна разница, как по мне.
Для персонажа 2 анимации - 25 кадров(бег+серф) - они действительно постоянно на виду и самые часто проигрываемые.
Анимация покоя и падения - урезал до 15 кадр/сек, выкинув много лишних кадров, хотя в динамике можно обойтись и 1 кадром без анимации вовсе - был баг, когда анимация вовсе не проигрывалась на них 2х - я это даже не сразу заметил, пока на стресс-тесте(доведя игру до 17фпс) не пригляделся...
Мелкие анимации по 7-10 кадров проигрываются 12 кадр/сек - опять же в динамике глазу дискомфорта не составляет.
Пытался урезать по кадрам падающие метеориты - вот тут глаз забунтовал - ибо анимации большие - и меньше 25 кадров/сек глаз видит раскадровку...
В целом при тестировании на смартфоне в режиме энергосбережения(ограничивает приложения до 40 фпс) - игра идет вполне плавно, физика работает корректно по большей части - неприхотливому пользователю с незамыленным глазом от постоянного сравнения с 60фпс будет и вовсе незаметна разница, как по мне.
SysDiman писал(а):Я почему-то подозреваю, что у тебя в принципе нет анимаций длиннее 20 кадров
поверь есть и даже 84 кадра =)))) так что еще раз говорю, если у меня ФПС падает ниже 50 смотрится все это ужасно, рассчитывай не рассчитывай там, но глазу не приятно !
SysDiman писал(а):Низкий фпс - это еще не тормоза, он может таким быть специально. Еще раз напомню про Need For Speed - есть трасса длинной 20 километров, например, детальная отрисовка пейзажей займет у художников массу времени и сил (а студии влетит в крупную копеечку к бюджету разработки). Но зачем это делать, если фактический фпс пейзажа (не машины, машину-то прорисовывают максимально детально) - крайне низкий, и игрок все равно видит лишь общую смазанную картинку, а "дорисовывает" ее уже его подсознание (ну да, мы видим "поле", "небоскреб", "фонтан" - но каждый видит слегка по разному, а рельная игровая графика лишь задает ориентиры для мозга - массштабы, пропорции, стиль, цветовую палитру).
Сделай на С2 специально низкий ФПС... я посмотрю... тут дело не в студиях не в игровых движках не в мега 3Д играх... у нас конструктор, тем более, создай игру где ты задний фон смажешь ( и толку будет 0 ), стилистика будет не ахти у тебя, допустим я видеть такое не могу, и играть тем более !
а то про что ты говоришь да есть... но у меня не NFS Underground и не FIFA !
-
- Сообщений: 3539
- Я тут с 30 окт 2012
- Двиг: C2\Unity
- Лицензия: Personal
- Skype: asmatrix116
- VK: vk.com/red.gear
- Репутация 203 [ ? ]
AHTuCTATuK писал(а):поверь есть и даже 84 кадра
И показываются за 1 кекунду? То есть скорость анимации тоже 84? )) Ну нет же? )) Я не про то, что у тебя плохая игра, или еще что - ты просто не до конца понимаешь смысл понятия "фпс"... Я, откровенно, вообще не для того, что бы задеть тебя или твой проект статью писал - просто, очень часто люди стремятся к "высокому фпс", не понимая - зачм он им нужен..
Возвращаясь к анимации в 84 кадра - если они действительно показываются за 1 секунду - ты не поверишь, но часть кадров ты просто не видишь, на самом деле. Плавность анимации в большОй степени придает обработка картинки человеческим мозгом. Если при уменьшении фпс страдает качество - посмотри, может дело не в количестве кадров, а в том, что "ключевые" кадры стоят не в тех местах? То есть смотри, например - есть, например, анимация "поворот к противнику и выстрел из ружья", длится она 1 секунду (например, опять же) - вроде вполне достаточно для нормального восприятия. И провернуться можно успеть, и ружье поднять, и выстрел (с облоком пороховых газов и вспышкой пламени) показать, и вылет пули. Но если "ключевые" кадры отстоят друг от друга меньше чем на 0.2 (или 0.1 для хардкорщиков) секунды (при 60 пфс - 12 кадров) - то какая бы между ними плавная интерполяция не происходила, анимация будет смотреться "дерганной" и некачественной... Даже при 280 фпс... То есть надо просто понимать, что тот технический фпс, про который чаще всего говорят - не есть показатель качества картинки. Это просто один из параметров изображения, такой же как разрешение, цветность и прочие. Нельзя же всеръез утверждать что "картинка 1024 на 1024 лучше чем аналогичная 64 на 64" - ну да, в ней больше пикселей.. Но если это картинка Главного Героя, стоящего на дороге 128 пикселей шириной - то плывет весь стиль, и скорее всего, и геймплей.
Во всем нужна согласованность, а один из главных принципов, которые следует соблюдать при разработке игр - это принцип "достаточности" - не нужно тратить излишние силы на доведение до ненужной, псевдо-идеальности, когда те же силы можно потратить на поиск места, которое действительно можно улучшить.
Ну то есть смотри - ты наткнулся на проблему, что
, но решение принял "поднять фпс". А почему это начинает смотреться ужасно? То есть ты "лечишь" симптом, а не болезнь. Это все равно, что в примере про героя с излишним разрешением придти к выводу что "он смотрится ужасно", но вместо того, что бы разобраться в чем проблема и решить ее - начать повышать разрешение графики. Да, в итоге методом "научного тыка" будет найдено правильное (или близкое к правильному) соотношение - но уже будет потрачено много сил и ресурсов, и к сожалению, они будут зря потрачены.AHTuCTATuK писал(а):если у меня ФПС падает ниже 50 смотрится все это ужасно, рассчитывай не рассчитывай там, но глазу не приятно !
Еще раз, про "меньше 60 фпс и смотрится ужасно" - ты на мобильные устройства расчитываешь? А на них твой фпс будет ниже, и это от тебя не зависит - ну не заставишь ты самсунг переделать все свои устройства (и уже проданные в том числе, хе-хе), что бы они не ограничивали фпс... И что делать? Заранее смириться с тем, что на конечном устройстве твоя игра будет "смотреться ужасно", ее "никто не купит", и так далее? )) Или все-таки понять, в чем проблема, и решить ее не "увеличением фсп"?
Ну то есть ты можешь, конечно, строить свою игру под 60 фпс, и это правильно, но оптимизировать игру надо под 20-30 фпс...
во многих местах ты этого просто и не увидишь и не узнаешь )) У меня, например, на игре под айпад (экран 768 на 1024) бэкграунд размером 400 на 226 растянут до размеров 1152 на 1408, но смазанности никакой не видно - 1) это бэкграунд, на него особо внимания не обращают и2) я на него повесил очень-очень легкий эффект "water", и он слегка колышется - и все, никто и не видит никакой размытости, создается впечатление, что так и задумано ))AHTuCTATuK писал(а):задний фон смажешь ( и толку будет 0 ), стилистика будет не ахти у тебя, допустим я видеть такое не могу, и играть тем более
P.S.
Вернуться в F.A.Q. по Construct 2
Сейчас эту тему просматривают
Зарегистрированные пользователи: нет зарегистрированных пользователей