Разрешения окна Godot 4.4: растяжение, пропорции и проверка UI
Чтобы интерфейс Godot не ломался на другом экране, разделите базовый размер проекта, реальный размер окна и правила масштабирования содержимого. Выбор одного разрешения в настройках не гарантирует удобное изображение на всех ноутбуках.
Материал относится к Godot 4.4. Здесь разбирается настройка и проверка адаптации окна, а не подбор видеокарты или способ повысить FPS любым уменьшением разрешения. Для pixel art и сложного 3D требования могут различаться.
Зафиксируйте базовый размер
В Multiple resolutions базовые размеры задаются в Display → Window. Это размер, относительно которого вы проектируете содержимое, а не обязательное физическое разрешение монитора каждого игрока.
Например, 1280×720 может быть исходным рабочим полотном. Окно с теми же пропорциями и окно 1280×800 потребуют разных решений для свободной области. До настройки выпишите: допустимы ли полосы, можно ли показать больше игрового мира и должен ли HUD оставаться привязанным к краям.
Сохраните проверенное состояние проекта. Дальше меняйте сначала режим масштабирования, затем правило пропорций, а не несколько параметров одновременно.
Выберите Stretch Mode
В документации 4.4 описаны три основных режима. Их названия не означают три одинаковых способа «сделать всё крупнее».
| Режим | Что принципиально меняется |
|---|---|
| Disabled | Нет масштабирования содержимого этим механизмом; Stretch Aspect не действует |
| Canvas Items | 2D рисуется в целевом разрешении с масштабированием относительно базового размера; 3D этим режимом не меняется |
| Viewport | Сцена сначала рисуется во viewport базового размера, затем его результат масштабируется под окно |
Для Canvas Items нельзя обещать соответствие каждого пикселя спрайта одному пикселю экрана. Для Viewport важно качество масштабирования уже отрисованного результата. Поэтому текст, тонкие линии и pixel art проверяйте визуально, а не только по тому, заполнено ли окно.
В 3D не считайте Canvas Items автоматическим снижением внутреннего разрешения всей сцены. Определите, какие именно данные масштабирует выбранный режим, и отдельно измерьте производительность своего проекта.
Определите правило пропорций
Stretch Aspect действует, когда Stretch Mode не Disabled. Для начала достаточно сознательно сравнить три варианта:
- Keep сохраняет пропорции и добавляет полосы при несовпадении окна с базовой формой.
- Expand сохраняет пропорции, но позволяет видеть больше содержимого по одной из осей в зависимости от формы окна.
- Ignore заполняет окно без сохранения исходных пропорций, поэтому круги и персонажи могут выглядеть растянутыми.
У Keep Width и Keep Height свои направленные правила расширения, описанные в первоисточнике. Не выбирайте их по одному названию: проверьте, какая область становится видимой при узком, высоком и широком окне.
Решение зависит и от игрового дизайна. Дополнительная видимая область может раскрыть объекты за предполагаемой границей уровня или изменить обзор в соревновательной игре. Чёрные полосы не обязательно ошибка, если постоянная область обзора — осознанное требование.
Настройте привязки Control отдельно
Stretch не заменяет адаптивное расположение интерфейса. Руководство Size and anchors описывает anchors как относительные точки родительского Control или viewport, а offsets — смещения относительно этих точек.
Для кнопки у правого нижнего края нужна соответствующая привязка к родителю, а не только позиция, удачная в окне автора. Для центрального блока проверьте якоря по центру и корректные смещения. Готовые Anchor Presets позволяют задать распространённое выравнивание без ручного ввода каждого значения.
Учитывайте именно родителя. Элемент может быть правильно привязан к маленькой панели, но вся панель при этом оставаться в неподходящем месте. Проверьте дерево Control сверху вниз и не пытайтесь исправлять неверную структуру бесконечным увеличением шрифта.
Не перепутайте Scale с универсальным улучшением
В документации действие Scale зависит от режима. Для Canvas Items он дополнительно масштабирует 2D-содержимое. Для Viewport изменение Scale влияет на разрешение viewport, что меняет и крупность пикселей, и условия рендеринга.
Integer scaling ограничивает масштаб целыми значениями и помогает избежать дробного масштабирования pixel art, но не обещает, что любое исходное изображение идеально заполнит любой экран. Проверьте доступную область и читаемость при реальных размерах окна.
Не называйте уменьшение render resolution безусловной оптимизацией интерфейса. Сначала проверьте изображение, затем — показатели профилировщика, сохраняя одинаковую сцену.
Проверочная матрица перед выдачей
Для своего базового полотна проверьте хотя бы исходные пропорции, более высокое и более широкое окно, небольшой размер и полноэкранный запуск. Пример набора для дизайна 1280×720: 1280×720, 1280×800 и 1600×900 плюс свободное изменение формы окна.
В каждом случае проверьте края HUD, длинные надписи, кнопки, всплывающие панели, возможность нажать элементы мышью и отсутствие неожиданно видимой области мира. Повторите на экспортированной сборке. Скриншот редактора не подтверждает поведение готового окна на другом устройстве.
FAQ
Canvas Items уменьшает разрешение 3D?
В описанном режиме он не меняет 3D. Не переносите поведение Viewport на Canvas Items.
Почему Aspect ничего не меняет?
Сначала проверьте Stretch Mode: при Disabled настройка Stretch Aspect не действует.
Чёрные полосы всегда нужно убрать?
Нет. Keep может намеренно сохранять фиксированные пропорции. Выбирайте между полосами, дополнительной областью и искажением осознанно.