Провел небольшой эксперимент с html5 играми.
Обновил 2 игры из 4. Обновления включают:
- добавление процента загрузки на лоадер скрине;
- исправление бага в Chrome, когда игра загружается в отдельной фоновой закладке, иногда iframe может иметь размеры 0х0.
В результате выросло количество игроков в игре и время загрузки самой игры.
Параметр времени загрузки может быть необъективен, если люди не дожидаются конца загрузки (они ведь не попадут в статистику) и время загрузки может быть ниже. Поэтому увеличение времени загрузки может быть свидетельством того, что больше людей с медленным интернетом стали дожидаться запуска игры.
При этом в двух других играх из контрольной группы (более популярных) количество игроков эти 2 дня падало (что исключает вариант того, что это просто случайность).
В общем вывод такой:
- делайте явным процесс загрузки. показывайте проценты на экране. Желательно еще и с анимацией, чтобы пользователь точно видел прогресс;
- убедитесь, что игра открывается и загружается в фоновой вкладке без проблем. В Defold это исправлено в 1.2.181, но если используете более раннюю версию, то обязательно посмотрите этот PR и примените эти изменения в ваш шаблон: https://github.com/defold/defold/pull/5641/files
Я не могу отделить одно от другого т.к. не знаю что именно дало результат. Поэтому рекомендую проверять оба пункта.
Обновил 2 игры из 4. Обновления включают:
- добавление процента загрузки на лоадер скрине;
- исправление бага в Chrome, когда игра загружается в отдельной фоновой закладке, иногда iframe может иметь размеры 0х0.
В результате выросло количество игроков в игре и время загрузки самой игры.
Параметр времени загрузки может быть необъективен, если люди не дожидаются конца загрузки (они ведь не попадут в статистику) и время загрузки может быть ниже. Поэтому увеличение времени загрузки может быть свидетельством того, что больше людей с медленным интернетом стали дожидаться запуска игры.
При этом в двух других играх из контрольной группы (более популярных) количество игроков эти 2 дня падало (что исключает вариант того, что это просто случайность).
В общем вывод такой:
- делайте явным процесс загрузки. показывайте проценты на экране. Желательно еще и с анимацией, чтобы пользователь точно видел прогресс;
- убедитесь, что игра открывается и загружается в фоновой вкладке без проблем. В Defold это исправлено в 1.2.181, но если используете более раннюю версию, то обязательно посмотрите этот PR и примените эти изменения в ваш шаблон: https://github.com/defold/defold/pull/5641/files
Я не могу отделить одно от другого т.к. не знаю что именно дало результат. Поэтому рекомендую проверять оба пункта.
GitHub
Issue-5640 Fix zero size canvas when open game in separate Chrome tab. by AGulev · Pull Request #5641 · defold/defold
If game is in iFrame and opened in separate Chrome tab without focus (Cmd + click to link and wait a bit page loads) then sometimes canvas has 0x0 size.
It seems like Chrome has some kind of optimi...
It seems like Chrome has some kind of optimi...
Изучая компрессию текстур и различные форматы текстур для мобильных устройств я пришел к следующим выводам.
TLDR:
Если в приоритете оперативная память, то лучше использовать
ASTC 6x6 или 4x4 если качество нужно очень высокое (6х6 выглядит довольно хорошо, для большинства текстур)
——если не поддерживается——>
PVRTC 4bbp для iOS или ETC2 для андроид
——если не поддерживается——>
RGBA, а что поделать
Если в приоритете размер на диске или скорость скачки, а оперативная память уже не так важна (например для HTML5), то лучше использовать WebP lossy, подобрав допустимое качество (Но это компрессия, текстура в памяти будет стандартная RGBA)
——
TLDR:
Если в приоритете оперативная память, то лучше использовать
ASTC 6x6 или 4x4 если качество нужно очень высокое (6х6 выглядит довольно хорошо, для большинства текстур)
——если не поддерживается——>
PVRTC 4bbp для iOS или ETC2 для андроид
——если не поддерживается——>
RGBA, а что поделать
Если в приоритете размер на диске или скорость скачки, а оперативная память уже не так важна (например для HTML5), то лучше использовать WebP lossy, подобрав допустимое качество (Но это компрессия, текстура в памяти будет стандартная RGBA)
——
Самым лучшим вариантом является ASTC - это просто боженька компрессий. Мэтры которые даже снят компрессию пророчат ему то, что он станет убийцей всех форматов если придет на PC (с Apple M1 это уже становится реальным и надеюсь остальные подхватят, но посмотрим).
У него соотношение качество/размер очень классное + есть возможность играться с качеством меняя размер блока. https://android-developers.googleblog.com/2015/01/efficient-game-textures-with-hardware.html
6x6 подойдет почти всем при этом в памяти занимает меньше даже чем PVRTC 4bbp.
Для RGBA текстуры размером 2048х2048 занимаемая память будет такой:
ASTC 6x6 - 1.8Mb
ASTC 4x4 - 4Mb
PVRTC 4bbp - 2Mb
ETC2 - 4Mb
Если качество нужно повыше, то есть ASTC 4x4 - там к качеству сложно придраться.
Но из-за того, что покрытие не 100% приходится рассматривать другие форматы. PVRTC 4bbp и ETC2.
Аппаратная поддержка ASTC появилась только с A7 (iPhone6) а iPhone5s хоть уже и на Metal, но все щее не поддерживает ASTC. Поэтому если вам нужна поддержка iPhone5 и его ровесников (iPad Air, iPad mini 2/3), то вам нужен PVRTC.
ETC2 для андроидов, что не поддерживают ASTC. Cтатистика тут https://developer.android.com/guide/app-bundle/asset-delivery/texture-compression
ETC2 поддерживается всеми устройствами с OpenGL ES 3, поэтому если у вас есть такое минимальное требование на проекте, то поздравляю, ETC2 ваш вариант. А вот если вы поддерживаете OpenGL ES 2 придется подумать и про другие варианты и ухищрения.
У него соотношение качество/размер очень классное + есть возможность играться с качеством меняя размер блока. https://android-developers.googleblog.com/2015/01/efficient-game-textures-with-hardware.html
6x6 подойдет почти всем при этом в памяти занимает меньше даже чем PVRTC 4bbp.
Для RGBA текстуры размером 2048х2048 занимаемая память будет такой:
ASTC 6x6 - 1.8Mb
ASTC 4x4 - 4Mb
PVRTC 4bbp - 2Mb
ETC2 - 4Mb
Если качество нужно повыше, то есть ASTC 4x4 - там к качеству сложно придраться.
Но из-за того, что покрытие не 100% приходится рассматривать другие форматы. PVRTC 4bbp и ETC2.
Аппаратная поддержка ASTC появилась только с A7 (iPhone6) а iPhone5s хоть уже и на Metal, но все щее не поддерживает ASTC. Поэтому если вам нужна поддержка iPhone5 и его ровесников (iPad Air, iPad mini 2/3), то вам нужен PVRTC.
ETC2 для андроидов, что не поддерживают ASTC. Cтатистика тут https://developer.android.com/guide/app-bundle/asset-delivery/texture-compression
ETC2 поддерживается всеми устройствами с OpenGL ES 3, поэтому если у вас есть такое минимальное требование на проекте, то поздравляю, ETC2 ваш вариант. А вот если вы поддерживаете OpenGL ES 2 придется подумать и про другие варианты и ухищрения.
Android Developers Blog
Efficient Game Textures with Hardware Compression
Posted by Shanee Nishry , Developer Advocate As you may know, high resolution textures contribute to better graphics and a more...