Упрощаем адаптацию 2D-игр под любые экраны: как работает моя система скейлинга

Одна из ключевых задач при разработке 2D-игр — корректное отображение контента на устройствах с разными разрешениями. Рассказываю, как я решил эту проблему с помощью гибкой системы скейлинга, которая экономит время и сохраняет качество графики.

📐 Базовое разрешение — сердце системы

За основу взято разрешение 360×800 пикселей. Все расчеты масштаба идут относительно этих значений.

🎨 Подготовка ресурсов: один клик вместо рутины

  1. Спрайты из Figma экспортируются в масштабе x4 (например, для базовой иконки 100×100 пикселей — 400×400 в x4).
  2. AssetPack автоматически генерирует наборы текстур для масштабов x1, x2, x3, x4.
  3. Игра загружает текстуры, соответствующие текущему скейлу устройства.

Плюсы:

💻 Код и координаты: работаем как в Figma

В коде мы всегда используем координаты базового масштаба (x1). Например, если в Figma объект расположен в точке (50, 100), в коде это так и указывается. Рендерер автоматически масштабирует позицию и размеры под текущее разрешение.

Почему это удобно:

✍️ Шрифты: магия метрик и глифов

Для текстов я тоже сохраняю единый подход:

  1. Шрифты генерируются с метриками и кеглем в масштабе x4.
  2. Скрипт создает текстуры глифов для всех масштабов (x1–x4) и шрифт с метриками для x1.
  3. В игре текст рендерится с текстурой нужного скейла, но метрики (отступы, межбуквенные интервалы) остаются в x1.

Результат:

Итог

Система скейлинга позволяет:
✅ Автоматизировать подготовку ассетов.
✅ Использовать высокодетализированные текстуры для 4K-экранов.
✅ Работать в единой системе координат, как в Figma.
✅ Избежать ручных расчетов под каждое устройство.

Если у вас есть вопросы или идеи по оптимизации — пишите в комментариях! 🚀