Вопрос с оптимизацией на мобильных устройствах
| |
Raven84 | Дата: Понедельник, 13 Июля 2015, 07:47 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Проблема такая. Я конечно не спец в железе и не мастер кода, но ГМС пользуюсь уже довольно давно. Создал простенькую игру на GMS, сделал билд под Андроид. Давал потестить знакомым, да и сам тестил на своих устройствах. Так вот: игра на смартфоне идет с заметным подтормаживанием, на планшете же игра просто "летает", но процессор в смартфоне гораздо мощнее чем в планшете. Я сравнил оперативку и заметил, что она выше на планшете. Отсюда я сделал вывод, что при запуске на смарте не хватает оперативы, отсюда и тормоза. Но разве это возможно? Разве скорость работы приложения зависит хоть как то от объема оперативки? И если да, то напрашивается вопрос: как можно повысить производительность (скорость) игры на смарте? В GM8 по моему была такая функция (может и в GMS есть) как постепенная подгрузка ресурсов (спрайтов, бэков, звуков и пр.) в игру по мере надобности и выгрузка ненужных. Я так понимаю, что игра полностью при запуске пихает все в оперативу, если этим не пользоваться. Есть опытные люди в этих вопросах на форуме? Может кто подсобить с ответами? Пользователь YellowAfterlife мне показался очень опытным человеком в GMS. Может позже ему в личку напишу, если он пропустит эту тему. Но хотелось бы всех выслушать. Давно интересует производство небольших игр под Андроид на GMS (все модули лицензия). Уже есть пара-тройка. До этого делал только под PC и там естественно проблем с производительностью не было. Но под Андроид даже очень простые игры тормозят. Что это? Проблема самой GMS или дело в моей криворукости (я имею ввиду не оптимизированый код и т.д.)?
Super Knight Story (в разработке) Idolzzz - игра доступна в Steam и Play Market Oliver's Adventures in the Fairyland
Сообщение отредактировал Raven84 - Понедельник, 13 Июля 2015, 07:49 |
|
| |
YellowAfterlife | Дата: Понедельник, 13 Июля 2015, 10:17 | Сообщение # 2 |
Сейчас нет на сайте
| Проблемы чаще не от оперативной памяти, а от особенностей видеокарты - к примеру, смена текстурной страницы во время рисования на одних устройствах может стоить гораздо больших объемов производительности, чем на других. Первой вещью для проверки является отключение application_surface (application_surface_enable(false)). Порой лишь одного факта рисования в поверхность достаточно для проседания fps. После посмотреть на текстурные страницы (GGS - Android - Graphics - Preview) и убедится, что игровая графика влазит в одну текстурную страницу. На YoYoGames techblog вроде бы была одна или две статьи по поводу оптимизации.
|
|
| |
XDominator | Дата: Понедельник, 13 Июля 2015, 11:23 | Сообщение # 3 |
постоянный участник
Сейчас нет на сайте
| в версии 1.3 появились новые особенности компилятора, которые без некоторых шаманств привели к тому, что приложения дико тормозят на android. Я не очень понял сути происходящего, но приложение, собранное на 1.2, выдавало 300+ fps_real на слабеньком смартфоне БилайнЕ600, и оно же, собранное на 1.3 без каких либо изменений, выдавало 15-20 fps на том же девайсе.
Покопавшись на форуме, я нашел несколько вариантов решения проблемы, но прежней производительности достичь все равно так и не удалось. На 1.4 вроде как стало полегче с этим, но все равно все не так гладко как хотелось бы. Приведу пример:
Мой проект на gms: - собран на 1.3. (ссылка - https://play.google.com/store/apps/details?id=com.picarusagency.TheSoulLighter)
Тест проводил на Alcatel one touch idol X+ (8 ядер, fullHD дисплей)
В игре реализован бесшовный переход между комнатами (в момент смены уровня). так вот, пока стояла версия android 4.2, на этом переходе игра замирала иногда даже на 10-15 секунд(!). Сейчас версия 4.4.2, замирание исчезло. Но...
При этом появились дикие тормоза при выборе планеты. При прокручивании менюшки с планетами, фпс заднего фона нормальный, а вот планеты искажаются и дергаются, как будто для них индивидуально фпс становится около 10. Вот такие непонятные и абсолютно непредсказуемые баги присутствуют в GMS...
Сейчас разрабатываю игру, и в один момент тоже наткнулся на баг - на одном теефоне из 3-х тестируемых на одной из картинок стабильно появляется темная полоса на всю длину примерно в 3-4 пикселя толщиной. Сколько ни пересобирал, пересоздавал этот спрайт, все перепробовал - на 2-х и в винде все норм, на том телефоне полоса. Причем полоса успешно прячется за другими объектами. Магия, не иначе.
Ghaarp
The soul lighter(Android, logic)
Zzzzombie RAGE!!!(For android)
|
|
| |
Raven84 | Дата: Понедельник, 13 Июля 2015, 12:34 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| YellowAfterlife, Цитата После посмотреть на текстурные страницы (GGS - Android - Graphics - Preview) и убедится, что игровая графика влазит в одну текстурную страницу. Ну на одну конечно не входит, учитывая бэкграунды. В разных играх кол-во страниц колеблется от 2 до 6. Вообще иногда бывает не реально уместить все на одной странице, даже увеличив ее размер. А что 2-6 страниц заметно снизят производительность? Цитата Первой вещью для проверки является отключение application_surface (application_surface_enable(false)). Я когда-то задавался вопросом производительности и ,копаясь на официальном форуме YoYo, тоже наткнулся на этот оператор. Тестил давно. Так что сейчас уже точно сказать не смогу. Но по моему он почти не увеличил производительности. Вроде бы стало работать чуть побыстрее (если я ничего не путаю), но вроде возникали какие-то проблемы с отображением графики. То ли движения предметов в игре стали скачкообразными и дерганными то ли еще что-то. Уже не помню. Но обязательно попробую еще раз. Хотя и не верю, что это поможет.Добавлено (13 июля 2015, 12:22) --------------------------------------------- Вообще, я вроде как-то пробовал поместить один бэк в игру и всего пару-тройку объектов с небольшим кол-вом операций и собрать билд под Андроид. Чтобы убедиться, что дело не в моем говнокоде так сказать. И вроде бы даже такая поделка выдавала тормоза на смарте. Хотя точно утверждать не берусь. Давно дело было. Может как-то влияет заметно на производительность разрешение экрана игры? Потому что в этом исходнике по сути и тормозить то было нечему (ресурсов мало, код проц не грузит и т.д.) Добавлено (13 июля 2015, 12:23) --------------------------------------------- YellowAfterlife, Цитата На YoYoGames techblog вроде бы была одна или две статьи по поводу оптимизации. Я вроде бы и до них добирался. Но там вроде бы простые вещи писали о которых говорят все, но они не помогают.Добавлено (13 июля 2015, 12:32) --------------------------------------------- XDominator, Хм...Я слышал про баги в GMS на Андроиде, но думал, что со временем их все устранили. А судя по всему в новой версии наоборот все только усугубилось. И что нет никакого решения? Кстати в The soul lighter проблему-то решил или нет? Сейчас скачаю на смарт, посмотрю. Добавлено (13 июля 2015, 12:34) --------------------------------------------- XDominator, Всегда удивлялся как добиваются таких кол-в установок? Прибегали к чей-то помощи?
Super Knight Story (в разработке) Idolzzz - игра доступна в Steam и Play Market Oliver's Adventures in the Fairyland
|
|
| |
XDominator | Дата: Понедельник, 13 Июля 2015, 13:50 | Сообщение # 5 |
постоянный участник
Сейчас нет на сайте
| Да там установок то... ну продвигал и выкладывал уже не я, я только разрабатывал, вроде как первые 200 установок были куплены, а дальше по накатанной.
В игрушке проблемы нерешаемы, они просто рандомно вылазят в разных местах на разных устройствах. Невозможно предсказать, где конкретно игра затупит на твоем аппарате, хотя на большинстве смартов все работало нормально(тестил примерно на 10-ке девайсов)
Ghaarp
The soul lighter(Android, logic)
Zzzzombie RAGE!!!(For android)
|
|
| |
Raven84 | Дата: Понедельник, 13 Июля 2015, 14:07 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| XDominator, Потестил на своем смарте. Тоже тормозит. Причем очень ощутимо. Так что не поиграть. На планшет не ставил, не зачем,т.к. там уверен проблем не возникнет. Блин, вопрос остается открытым.
Super Knight Story (в разработке) Idolzzz - игра доступна в Steam и Play Market Oliver's Adventures in the Fairyland
|
|
| |
|