Изображения и шрифты
Какие картинки грузятся, какой размер разумен и почему встроенная фигура почти всегда лучше картинки
Главное
- Если можно обойтись фигурой - берите фигуру
- Для мобильного уровня потолок картинки - 2048, вообще - 4096
- Делайте картинку примерно того размера, каким она будет на экране. Округляйте вверх до степени двойки
Форматы и размер
Грузится всё, что движок умеет декодировать из байтов файла. На практике это png и jpg
Размер файла игра не ограничивает, ограничивает железо:
| Устройство | Наибольшая сторона |
|---|---|
| Android, гарантированно | 4096 |
| Android, обычно | 8192-16384 |
| настольный ПК | до 32768 |
Память
Реальный предел - память. В памяти картинка хранится как сырые пиксели, сколько бы ни весил файл.
png занимает 4 байта на пиксель. jpg - 3, потому что прозрачности у него нет
| Размер | Память (png) |
|---|---|
| 512 на 512 | 1 МБ |
| 1024 на 1024 | 4 МБ |
| 2048 на 2048 | 16 МБ |
| 4096 на 4096 | 64 МБ |
| 8192 на 8192 | 256 МБ |
Текстура 8192 - это четверть гигабайта на одну картинку. На телефоне это не медленно, это вылет
Что решает игрок
Три пункта в настройках графики у каждого игрока решают, сколько памяти займёт картинка:
- сжимать ли картинки при загрузке. Сжатие делит числа выше в 4-8 раз
- наибольшая сторона картинки в памяти. Сторона вдвое меньше - памяти вчетверо меньше
- строить ли мип-карты, уменьшенные копии для мелкой отрисовки
Телефон по умолчанию сжимает картинки и режет их по 2048. Настольный ПК держит картинку целиком и режет по 4096
Ваша часть - одно поле у картинки: что на ней изображено. Поле стоит рядом с картинкой в списке ресурсов. Фотография лучше всего переживает уменьшение и сжатие. Рисунок с резкими краями - хуже
Пиксель-арт никогда не сжимается, не получает мип-карт и не сглаживается, что бы ни предпочло устройство
Мип-карты
Мип-карты не дают мелкой картинке мерцать. Это уменьшенные копии, которые рисуются вместо полной картинки, пока она мала на экране. Они стоят на треть больше памяти
Без мип-карт уменьшенная картинка не сглаживается, а рябит. Игрок может их выключить, а Пиксель-арт не получает их никогда
Картинка 4096, которая занимает на экране 200 пикселей, стоит в 256 раз больше памяти, чем она же, заранее уменьшенная до 256
Фигура раньше картинки
Фигура дешевле картинки во всём: нет файла, нет памяти, нет вопроса о правах. Встроенные фигуры - настоящая геометрия, а не картинка на прямоугольнике. У них нет прозрачных полей, которые рисуются и выбрасываются
На телефоне это заметно. На среднем мобильном чипе сцена из 1000 объектов тратит 95-97% времени видеокарты на закраску пикселей. Фигура занимает 29.4% своего прямоугольника. Остальное в квадрате с текстурой - прозрачный мусор
Картинка нужна, когда нужно именно изображение: логотип, фотография, нарисованный вручную арт.
Для геометрической формы берите фигуру. Нужной нет - нарисуйте её в Редактор фигур
Шрифты
Шрифты грузятся в ttf, otf, ttc. Без своего шрифта текст рисуется тем, что нашлось в системе, а на разных устройствах это разное
Кэш шрифта - набор символов, заранее подготовленных к отрисовке. Его пересобирает генератор по тексту, который есть в уровне.
Запускайте генератор, когда текст перестал меняться
Дальше: Бюджет уровня, Мобильные устройства