GameDevLogs
478 subscribers
23 photos
21 links
Заметки разработчика вэб и мобильных игр. Тут поднимаются как технические темы, так и общие темы связанные с разработкой игр в общем. https://agulev.com
加入频道
Channel created
Провел небольшой эксперимент с html5 играми.
Обновил 2 игры из 4. Обновления включают:

- добавление процента загрузки на лоадер скрине;
- исправление бага в Chrome, когда игра загружается в отдельной фоновой закладке, иногда iframe может иметь размеры 0х0.

В результате выросло количество игроков в игре и время загрузки самой игры.
Параметр времени загрузки может быть необъективен, если люди не дожидаются конца загрузки (они ведь не попадут в статистику) и время загрузки может быть ниже. Поэтому увеличение времени загрузки может быть свидетельством того, что больше людей с медленным интернетом стали дожидаться запуска игры.
При этом в двух других играх из контрольной группы (более популярных) количество игроков эти 2 дня падало (что исключает вариант того, что это просто случайность).

В общем вывод такой:
- делайте явным процесс загрузки. показывайте проценты на экране. Желательно еще и с анимацией, чтобы пользователь точно видел прогресс;
- убедитесь, что игра открывается и загружается в фоновой вкладке без проблем. В Defold это исправлено в 1.2.181, но если используете более раннюю версию, то обязательно посмотрите этот PR и примените эти изменения в ваш шаблон: https://github.com/defold/defold/pull/5641/files

Я не могу отделить одно от другого т.к. не знаю что именно дало результат. Поэтому рекомендую проверять оба пункта.
Изучая компрессию текстур и различные форматы текстур для мобильных устройств я пришел к следующим выводам.

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 придется подумать и про другие варианты и ухищрения.