Почему мобильной игре пофиг, сколько Гц (FPS) выдаёт экран смартфона

Поделиться в соцсетях

Недавно написал для DGL статью на тему, почему “игровые смартфоны” – маркетинговый буллшит. В комментах меня спрашивают – погоди-погоди, а как же частота обновления экрана? Типа, FPS-то всё равно решает? Есть, ведь, телефоны там с 90 Гц, даже 120 Гц.

Товарищи! Первый же абзац этой статьи – не надо судить смартфоны по меркам рынка ПК. Казалось бы, для раскрытия заданной в заголовке темы этот абзац никакой информационной нагрузки не несёт, но сама эта мысль очень важна для понимания всего остального.

Если коротко: просто перестаньте судить о смартфонах (да и игровых консолях) как о ПК. Just stop it. Там общего настолько мало, что почти ничего.

Смартфон-то крутой сам по себе. Но в играх он ничем не будет отличаться от других.

Вы думаете, стоит вам найти смартфон с 90 Гц экраном, как игры тут же начнут летать в 90 FPS? Да, на ПК бы так и было, во многих случаях, хотя тоже не во всех, но о них сейчас не будем. Если интересно – потом расскажу.

Суть в том, что большинство мобильных игр имеют жёсткое и неснимаемое ограничение на FPS. И это 30 FPS. Даже не 60! Asphalt, Modern Combat, Fortnite, PUBG Mobile – вот эти ребята. Честно, не помню про Real Racing. Да, вы можете найти видосы, как мобильные игры запускают на эмуляторах на ПК в 60 FPS – но именно на эмуляторах, а не на самих смартфонах.

У вас смартфон может уметь хоть в 100500 Гц, а игра всё равно будет работать в 30 FPS. Потому что так заложено на стадии разработки.

Почему заложено? Это тоже интересный вопрос. В подавляющем большинстве мобильных игр физика и управление жёстко привязаны к фреймрейту. То есть, обсчёт нового положения объектов согласно прилагающимся к ним силам и считывание нажатых кнопок или данных гироскопа происходит перед прорисовкой очередного кадра. Если такая игра начнёт работать на 90 Гц – она просто начнёт работать в три раза быстрее, как на ускоренной перемотке.

Конечно, формально можно не привязывать физику игры к фреймрейту. Но это сильно зависит от игрового движка. К примеру, в Unity вам всё равно придётся обсчитывать всё перед прорисовкой кадра, просто вы можете в формуле расчёта новой позиции объекта опираться на прошедшее время по таймеру реального времени. И потом каждый раз думать – а что будет с вашим, например, автомобилем, если телефон вдруг лаганёт и игра остановится на секунду. Как минимум – два объекта, которые должны столкнуться, могут пройти друг сквозь друга. Как максимум… что угодно может произойти. К сожалению, я не знаю, можно ли в том же Unity обсчитывать физику и управление вообще не привязываясь к рендеру кадра, но это всё равно вызовет лишь новые вопросы и проблемы в работе игры.

Я не говорю, что частота обновления экрана не имеет значения. Я говорю, что этой игре на него пофиг.

Ну а почему именно 30 FPS, а не 60? Да потому, что запуск игры лишь на топовых смартфонах разработчикам не интересен. Не всегда даже понижением детализации графики можно добиться, чтобы на старом ведре игра работала в стабильных 60 FPS. С 30 FPS здесь проще. Мне иногда дают на тест совсем слабые телефоны, которые стоят копейки, и вот на них, прикиньте, Modern Combat 5 работает так же (с точки зрения производительности), как на топовых Samsung Galaxy. Просто игра выглядит как мыло.

Впрочем, возможно есть и ещё какие-то причины, почему мобильны игры работают в 30 FPS. Буду рад, если сами разработчики выскажутся в комментариях.