Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Кілька дозволів

Проблема множинних дозволів

Розробникам часто важко зрозуміти, як найкраще підтримувати кілька роздільних здатностей у своїх іграх. Для настільних і консольних ігор це більш-менш просто, оскільки співвідношення сторін більшості екранів становить 16:9, а роздільна здатність стандартна (720p, 1080p, 1440p, 4K, …).

Для мобільних ігор спочатку це було легко. Протягом багатьох років iPhone і iPad використовували однакову роздільну здатність. Коли Retina була реалізована, вони просто подвоїли щільність пікселів; більшості розробників доводилося надавати ресурси за умовчанням і подвійною роздільною здатністю.

Зараз це вже не так, оскільки існує багато різних розмірів екрану, щільності та співвідношення сторін. Нетрадиційні розміри також стають дедалі популярнішими, наприклад ультраширокі дисплеї.

Для 3D-рендерингу немає великої потреби підтримувати кілька роздільних здатностей. Завдяки своїй векторній природі, 3D-геометрія просто заповнить екран залежно від розміру області перегляду. Для 2D та ігрових інтерфейсів це інша справа, оскільки зображення потрібно створювати з використанням певних розмірів пікселів у такому програмному забезпеченні, як Photoshop, GIMP або Krita.

Оскільки макети, співвідношення сторін, роздільна здатність і щільність пікселів можуть сильно змінюватися, більше неможливо розробити інтерфейс користувача для кожного окремого екрана. Треба використовувати інший метод.

Один розмір для всіх

Найпоширеніший підхід полягає у використанні однієї базової роздільної здатності, а потім підгонці її до всього іншого. Ця роздільна здатність – це те, як очікується, що більшість гравців гратимуть у гру (враховуючи їхнє обладнання). Для мобільних пристроїв Google має корисну статистику онлайн, а для комп’ютерів Steam також робить.

Як приклад, Steam показує, що найпоширенішою основною роздільною здатністю дисплея є 1920×1080, тому розумним підходом є розробка гри для цієї роздільної здатності, а потім масштабування для різних розмірів і пропорцій.

Godot надає кілька корисних інструментів, щоб легко це зробити.

Дивись також

Ви можете побачити, як працює підтримка Godot для кількох роздільних здатностей, за допомогою демонстраційного проекту «Кілька роздільних здатностей і співвідношення сторін» <https://github.com/godotengine/godot-demo-projects/tree/master/gui/multiple_resolutions>`__.

Базовий розмір

Базовий розмір вікна можна вказати в параметрах проекту в Дисплей → Вікно.

../../_images/screenres.webp

Однак те, що він робить, не зовсім очевидно; двигун не намагатиметься перемкнути монітор на цю роздільну здатність. Радше сприймайте це налаштування як «розмір дизайну», тобто розмір області, з якою ви працюєте в редакторі. Цей параметр безпосередньо відповідає розміру синього прямокутника у 2D-редакторі.

Часто виникає потреба підтримувати пристрої з розмірами екрана та вікна, які відрізняються від базового розміру. Godot пропонує багато способів керування тим, як вікно перегляду буде змінено та розтягнуто на різні розміри екрана.

Примітка

На цій сторінці window стосується області екрана, виділеної системою для вашої гри, тоді як viewport стосується кореневого об’єкта (доступного з get_tree().root), яким гра керує, щоб заповнити цей екран область. Це вікно перегляду є екземпляром Window. Згадайте з introduction, що всі об’єкти Window є вікнами перегляду.

Щоб налаштувати розтягнутий базовий розмір під час виконання зі сценарію, скористайтеся властивістю get_tree().root.content_scale_size (див. Window.content_scale_size). Зміна цього значення може опосередковано змінити розмір 2D-елементів. Однак, щоб забезпечити доступний користувачеві варіант масштабування, рекомендується використовувати Розтягнути шкалу, оскільки його легше налаштувати.

Примітка

Ґодо дотримується сучасного підходу до кількох дозволів. Механізм ніколи не змінить роздільну здатність монітора самостійно. Хоча зміна роздільної здатності монітора є найефективнішим підходом, це також найменш надійний підхід, оскільки він може залишити монітор на низькій роздільній здатності, якщо гра аварійно завершує роботу. Це особливо часто трапляється в macOS або Linux, які не так добре обробляють зміни роздільної здатності, як Windows.

Зміна роздільної здатності монітора також позбавляє розробника гри будь-який контроль над фільтрацією та розтягуванням співвідношення сторін, що може бути важливим для забезпечення правильного відображення для ігор з піксельним мистецтвом.

Крім того, зміна роздільної здатності монітора значно повільніше вмикає та виводить з гри клавішу Alt Tab, оскільки монітор має змінювати роздільну здатність кожного разу, коли це робиться.

Зміна розміру %1

Існує кілька типів пристроїв з кількома типами екранів, які, у свою чергу, мають різну щільність пікселів та роздільну здатність. Обробка всіх них може бути складною, тому Godot намагається трохи спростити життя розробнику. Вузол Viewport має кілька функцій для обробки зміни розміру, а кореневий вузол дерева сцен завжди є вікном перегляду (завантажені сцени створюються як його дочірні елементи, і до нього завжди можна отримати доступ, викликавши get_tree().root або get_node("/root")).

У будь-якому випадку, незважаючи на те, що зміна кореневих параметрів Viewport є, ймовірно, найбільш гнучким способом вирішення проблеми, це може потребувати багато роботи, кодування та здогадок, тому Godot надає набір параметрів у налаштуваннях проекту для обробки кількох роздільних здатностей.

Порада

Для рендерингу 3D з нижчою роздільною здатністю, ніж 2D-елементи (без потреби в окремих вікнах перегляду), ви можете використовувати підтримку Godot resolution scaling. Це гарний спосіб значно покращити продуктивність у сценаріях з обмеженим графічним процесором. Це працює з будь-якою комбінацією режиму розтягування та аспекту розтягування.

Налаштування розтяжки

Примітка

When testing different stretch modes and stretch aspect settings, make sure game embedding is configured to use the Stretch to Fit scaling option:

../../_images/multiple_resolutions_game_embedding_size_dropdown.webp

This ensures the viewport size always matches the window size, like when game embedding is disabled.

Налаштування розтягування знаходяться в налаштуваннях проекту та надають кілька варіантів:

../../_images/stretchsettings.webp

Режим виділення

Налаштування Режим розтягування визначає, як основний розмір розтягується відповідно до роздільної здатності вікна чи екрана. У наведених нижче анімаціях використовується «базовий розмір» лише 16×9 пікселів, щоб продемонструвати ефект різних режимів розтягування. Один спрайт, також розміром 16 × 9 пікселів, охоплює все вікно перегляду, і діагональ Line2D додається поверх нього:

../../_images/stretch_demo_scene.png
  • Режим розтягування = вимкнено (за замовчуванням): розтягування не відбувається. Одна одиниця в сцені відповідає одному пікселю на екрані. У цьому режимі налаштування Stretch Aspect не діє.

    ../../_images/stretch_disabled_expand.gif
  • Режим розтягування = Елементи полотна: у цьому режимі основний розмір, указаний у ширині та висоті в налаштуваннях проекту, розтягується, щоб охопити весь екран (з урахуванням параметра Розтягнення). Це означає, що все відображається безпосередньо з цільовою роздільною здатністю. На 3D це не впливає, тоді як у 2D більше немає відповідності 1:1 між пікселями спрайтів і пікселями екрана, що може призвести до артефактів масштабування.

    ../../_images/stretch_2d_expand.gif
  • Режим розтягування = Viewport: масштабування Viewport означає, що розмір кореня Viewport встановлюється точно до базового розміру, зазначеного в розділі Display параметрів проекту. Сцена спочатку відображається в цьому вікні перегляду. Нарешті, це вікно перегляду масштабується відповідно до розміру екрана (з урахуванням параметра Stretch Aspect).

    ../../_images/stretch_viewport_expand.gif

Щоб налаштувати режим розтягування під час виконання зі сценарію, використовуйте властивість get_tree().root.content_scale_mode (див. Window.content_scale_mode та ContentScaleMode enum ).

Розтягнутий аспект

Другий параметр – це аспект розтягування. Зауважте, що це діє, лише якщо для Режиму розтягування встановлено значення, відмінне від Вимкнено.

На анімації нижче ви помітите сірі та чорні області. Чорні області додаються двигуном і не можуть бути втягнені в них. Сірі зони є частиною вашої сцени, і до них можна звернути увагу. Сірі області відповідають області за межами синьої рамки, яку ви бачите в 2D-редакторі.

  • Stretch Aspect = Ignore: ігнорувати співвідношення сторін під час розтягування екрана. Це означає, що початкова роздільна здатність буде розтягнута, щоб точно заповнити екран, навіть якщо він ширший або вужчий. Це може призвести до нерівномірного розтягування: предмети виглядатимуть ширше або вище, ніж задумано.

    ../../_images/stretch_viewport_ignore.gif
  • Stretch Aspect = Keep: Зберігайте співвідношення сторін під час розтягування екрана. Це означає, що вікно перегляду зберігає свій вихідний розмір незалежно від роздільної здатності екрана, а чорні смуги будуть додані вгорі/внизу екрана ("літербокс") або з боків ("пілларбокс").

    Це хороший варіант, якщо ви заздалегідь знаєте співвідношення сторін цільових пристроїв або якщо ви не хочете обробляти різні співвідношення сторін.

    ../../_images/stretch_viewport_keep.gif
  • Stretch Aspect = Keep Width: зберігайте співвідношення сторін під час розтягування екрана. Якщо ширина екрана ширша за базовий розмір, ліворуч і праворуч додаються чорні смуги (розміщення на стовпах). Але якщо екран вищий за базову роздільну здатність, вікно перегляду буде збільшено у вертикальному напрямку (і більше вмісту буде видно внизу). Ви також можете подумати про це як про «розгорнути по вертикалі».

    Зазвичай це найкращий варіант для створення GUI або HUD, які масштабуються, тому деякі елементи керування можна прив’язати внизу (Розмір і анкери).

    ../../_images/stretch_viewport_keep_width.gif
  • Розтягнути формат = зберегти висоту: зберегти співвідношення сторін під час розтягування екрана. Якщо екран вищий за базовий розмір, угорі та внизу додаються чорні смуги (розміщення полів). Але якщо екран ширший за базову роздільну здатність, вікно перегляду буде збільшено в горизонтальному напрямку (і більше вмісту буде видно праворуч). Ви також можете розглядати це як «Розгорнути горизонтально».

    Зазвичай це найкращий варіант для 2D-ігор, які прокручуються горизонтально (наприклад, ранери чи платформери).

    ../../_images/stretch_viewport_keep_height.gif
  • Stretch Aspect = Expand: зберігайте співвідношення сторін під час розтягування екрана, але не зберігайте ні ширину, ні висоту. Залежно від співвідношення сторін екрана вікно перегляду буде більшим у горизонтальному напрямку (якщо екран ширший за базовий розмір) або у вертикальному напрямку (якщо екран вищий за вихідний розмір).

    ../../_images/stretch_viewport_expand.gif

Порада

Щоб підтримувати як портретний, так і альбомний режими з однаковим автоматично визначеним коефіцієнтом масштабування, установіть базову роздільну здатність вашого проекту як квадрат (співвідношення сторін 1:1) замість прямокутника. Наприклад, якщо ви хочете розробити 1280×720 як базову роздільну здатність, але бажаєте підтримувати як портретний, так і альбомний режими, використовуйте 720×720 як базовий розмір вікна проекту в налаштуваннях проекту.

Щоб дозволити користувачеві вибрати бажану орієнтацію екрана під час виконання, не забудьте встановити Дисплей > Вікно > Ручний > Орієнтація на датчик.

Щоб налаштувати розтягнутий аспект під час виконання зі сценарію, використовуйте властивість get_tree().root.content_scale_aspect (див. Window.content_scale_aspect та ContentScaleAspect enum ).

Розтягнути шкалу

Налаштування Масштаб дозволяє додати додатковий коефіцієнт масштабування на додаток до того, що вже надано параметрами Розтягнути вище. Значення за замовчуванням 1.0 означає, що додаткове масштабування не відбувається.

Наприклад, якщо ви встановите Масштаб на 2.0 і залишите Режим розтягування на Вимкнено, кожна одиниця у вашій сцені відповідатиме 2×2 пікселям на екрані. Це хороший спосіб надати параметри масштабування для неігрових програм.

Якщо для Режиму розтягування встановлено значення canvas_items, 2D-елементи буде масштабовано відносно розміру базового вікна, а потім помножено на параметр Масштаб. Це може бути відкрито для гравців, щоб дозволити їм налаштувати автоматично визначений масштаб на свій смак, для кращої доступності.

Якщо Режим розтягування встановлено на вікно перегляду, роздільна здатність вікна перегляду ділиться на Масштаб. Це робить пікселі більшими та зменшує роздільну здатність візуалізації (із заданим розміром вікна), що може покращити продуктивність.

Щоб налаштувати розтягнутий масштаб під час виконання зі сценарію, скористайтеся властивістю get_tree().root.content_scale_factor (див. Window.content_scale_factor).

Ви також можете налаштувати масштаб, в якому генерується тема проекту за замовчуванням, за допомогою налаштування проекту GUI > Theme > Default Theme Scale. Це можна використовувати для створення більш логічних розмірів інтерфейсів користувача при базових роздільних здатностях, які значно вищі або нижчі за стандартні. Однак це налаштування проекту не можна змінити під час виконання, оскільки його значення зчитується лише один раз під час запуску проекту.

Режим розтягування масштабу

Починаючи з Godot 4.2, параметр Режим розтягування масштабу дозволяє вам обмежити автоматично визначений масштабний коефіцієнт (а також заданий вручну параметр Розтягнення масштабу) до цілих значень. За замовчуванням для цього параметра встановлено значення fractional, що дозволяє застосовувати будь-який коефіцієнт масштабування (включно з дробовими значеннями, наприклад 2,5). Якщо встановлено значення integer, значення округлюється до найближчого цілого числа. Наприклад, замість використання коефіцієнта масштабування 2,5 його буде округлено до 2,0. Це корисно, щоб запобігти спотворенню під час відображення піксельного зображення.

Порівняйте це піксельне зображення, яке відображається в режимі розтягування viewport, з режимом масштабування розтягування, встановленим на fractional:

Приклад дробового масштабування (неправильний вигляд піксельного зображення)

Шашка виглядає не «рівно». Ширина ліній у логотипі та тексті дуже різна.

Це піксельне зображення також відображається в режимі розтягування viewport, але цього разу режим розтягування масштабу встановлено на integer:

Приклад цілочисельного масштабування (правильний вигляд піксельного зображення)

Шашка виглядає ідеально рівно. Ширина ліній однакова.

Наприклад, якщо базовий розмір вікна перегляду становить 640×360, а розмір вікна – 1366×768:

  • Якщо використовується fractional, вікно перегляду відображається з роздільною здатністю 1366×768 (масштабний коефіцієнт становить приблизно 2,133×). Використовується весь віконний простір. Кожен піксель у вікні перегляду відповідає 2,133 × 2,133 пікселям у відображеній області. Однак, оскільки дисплеї можуть відображати лише «цілі» пікселі, це призведе до нерівномірного масштабування пікселів, що призведе до неправильного вигляду піксельного зображення.

  • При використанні integer вікно перегляду відображається з роздільною здатністю 1280×720 (масштабний коефіцієнт 2×). Простір, що залишився, заповнюється чорними смугами з усіх чотирьох сторін, так що кожен піксель у вікні перегляду відповідає 2×2 пікселям у відображеній області.

Цей параметр ефективний для будь-якого режиму розтягування. Однак, якщо використовувати режим розтягування disabled, він вплине лише на параметр Масштаб розтягування, округливши його вниз до найближчого цілого значення. Це можна використовувати для 3D-ігор з інтерфейсом піксельної графіки, щоб видима область у 3D-вікні перегляду не зменшувалась у розмірі (що відбувається під час використання режиму розтягування canvas_items або viewport з режимом масштабування цілочисельним).

Порада

Ігри мають використовувати віконний режим Ексклюзивний повноекранний режим, на відміну від Повноекранного режиму, який призначений для того, щоб запобігти автоматичній обробці вікна Windows так, ніби воно було ексклюзивним повноекранним.

Повноекранний режим призначений для використання програмами з графічним інтерфейсом користувача, які хочуть використовувати попіксельну прозорість без ризику, що її вимкне ОС. Він досягає цього, залишаючи лінію в 1 піксель внизу екрана. Навпаки, Ексклюзивний повний екран використовує фактичний розмір екрана та дозволяє Windows зменшити тремтіння та затримку введення для повноекранних ігор.

У разі використання цілочисельного масштабування це особливо важливо, оскільки зменшення висоти на 1 піксель у повноекранному режимі може призвести до того, що цілочисельне масштабування використовує менший масштабний коефіцієнт, ніж очікувалося.

Загальні сценарії використання

Наступні налаштування рекомендуються для гарної підтримки декількох роздільних здатностей і пропорцій.

Настільна гра

Не піксельне мистецтво:

  • Встановіть базову ширину вікна на 1920 і висоту вікна на 1080. якщо у вас дисплей менший за 1920 × 1080, встановіть Заміна ширини вікна та Заміна висоти вікна на нижчі значення, щоб зробити вікно меншим під час запуску проекту.

  • Або, якщо ви орієнтуєтеся переважно на висококласні пристрої, встановіть базову ширину вікна на 3840, а висоту вікна на 2160. Це дозволить вам надати 2D-ресурси з вищою роздільною здатністю, що забезпечить чіткіше зображення за рахунок більшого використання пам'яті та розміру файлів. Також рекомендується збільшити GUI > Тема > Масштаб теми за замовчуванням до значення між 2,0 і 3,0, щоб елементи інтерфейсу залишалися читабельними.

  • Встановіть режим розтягування на canvas_items.

  • Встановіть розтягнутий аспект на expand. Це дозволяє підтримувати кілька форматів і краще використовувати високі дисплеї смартфонів (наприклад, 18:9 або 19:9).

  • Налаштуйте прив’язки контрольних вузлів до правильних кутів за допомогою меню Макет.

  • Для 3D-ігор розгляньте можливість відображення Масштабування роздільної здатності у меню налаштувань гри, щоб гравці могли налаштовувати роздільну здатність 3D-рендерингу окремо від елементів інтерфейсу користувача. Це корисно для налаштування продуктивності, особливо на слабкому обладнанні.

Піксельне мистецтво:

  • Встановіть розмір базового вікна відповідно до розміру вікна перегляду, який ви збираєтеся використовувати. Більшість піксельних ігор використовують вікно перегляду розміром від 256×224 до 640×480. 640 × 360 є хорошою базовою лінією, оскільки вона масштабується до 1280 × 720, 1920 × 1080, 2560 × 1440 і 3840 × 2160 без будь-яких чорних смуг при використанні цілочисельного масштабування. Більший розмір вікна перегляду вимагатиме використання ілюстрації з вищою роздільною здатністю, якщо ви не маєте намір показати більше ігрового світу в певний момент часу.

  • Встановіть режим розтягування на viewport.

  • Встановіть розтягнутий аспект на keep, щоб забезпечити єдине співвідношення сторін (з чорними смугами). Як альтернативу ви можете встановити розтягнутий аспект на розгорнути, щоб підтримувати кілька пропорцій.

  • Якщо використовується розтягнутий аспект розгортання, налаштуйте прив’язки контрольних вузлів до правильних кутів за допомогою меню Макет.

  • Встановіть режим розтягування масштабу на ціле число. Це запобігає нерівномірному масштабуванню пікселів, через що піксельне зображення не відображається належним чином.

Примітка

Режим розтягування viewport забезпечує візуалізацію з низькою роздільною здатністю, яка потім розтягується до остаточного розміру вікна. Якщо ви погоджуєтесь із можливістю переміщення чи обертання спрайтів у «субпіксельних» позиціях або бажаєте мати 3D вікно перегляду з високою роздільною здатністю, вам слід використовувати режим розтягування canvas_items замість режиму розтягування viewport.

Мобільна гра в ландшафтному режимі

Godot налаштовано на використання альбомного режиму за замовчуванням. Це означає, що вам не потрібно змінювати налаштування проекту орієнтації дисплея.

  • Встановіть базову ширину вікна на 1280 і висоту вікна на 720.

  • Або, якщо ви орієнтуєтеся в першу чергу на пристрої високого класу, встановіть базову ширину вікна на 1920, а висоту вікна на 1080. Це дозволить вам надати 2D-ресурси з більш високою роздільною здатністю, що забезпечить більш чітке зображення за рахунок більшого використання пам'яті та розміру файлів. Багато пристроїв мають дисплеї з ще вищою роздільною здатністю (1440p), але різниця з 1080p майже непомітна, враховуючи невеликий розмір дисплеїв смартфонів. Також рекомендується збільшити GUI > Тема > Масштаб теми за замовчуванням до значення між 1,5 і 2,0, щоб елементи інтерфейсу залишалися читабельними.

  • Встановіть режим розтягування на canvas_items.

  • Встановіть розтягнутий аспект на expand. Це дозволяє підтримувати кілька форматів і краще використовувати високі дисплеї смартфонів (наприклад, 18:9 або 19:9).

  • Налаштуйте прив’язки контрольних вузлів до правильних кутів за допомогою меню Макет.

Порада

Щоб краще підтримувати планшети та телефони, що складаються (які часто мають дисплеї зі співвідношенням сторін, близьким до 4:3), розгляньте можливість використання базової роздільної здатності зі співвідношенням сторін 4:3, дотримуючись решти інструкцій, наведених тут. Наприклад, ви можете встановити ширину базового вікна на 1280, а висоту базового вікна на 960.

Мобільна гра в портретному режимі

  • Встановіть базову ширину вікна на 720 і висоту вікна на 1280.

  • Або, якщо ви орієнтуєтеся в першу чергу на пристрої високого класу, встановіть базову ширину вікна на 1080 і висоту вікна на 1920. Це дозволить вам надати 2D-ресурси з більш високою роздільною здатністю, що забезпечить більш чітке зображення за рахунок більшого використання пам'яті та розміру файлів. Багато пристроїв мають дисплеї з ще вищою роздільною здатністю (1440p), але різниця з 1080p майже непомітна, враховуючи невеликий розмір дисплеїв смартфонів. Також рекомендується збільшити GUI > Тема > Масштаб теми за замовчуванням до значення між 1,5 і 2,0, щоб елементи інтерфейсу залишалися читабельними.

  • Установіть Дисплей > Вікно > Ручний > Орієнтація на портрет.

  • Встановіть режим розтягування на canvas_items.

  • Встановіть розтягнутий аспект на expand. Це дозволяє підтримувати кілька форматів і краще використовувати високі дисплеї смартфонів (наприклад, 18:9 або 19:9).

  • Налаштуйте прив’язки контрольних вузлів до правильних кутів за допомогою меню Макет.

Порада

Щоб краще підтримувати планшети та складні телефони (які часто мають дисплеї зі співвідношенням сторін, близьким до 4:3), розгляньте можливість використання базової роздільної здатності зі співвідношенням сторін 3:4, дотримуючись решти наведених тут інструкцій. Наприклад, ви можете встановити ширину базового вікна на 960, а висоту базового вікна на 1280.

Неігровий додаток

  • Встановіть ширину та висоту базового вікна на найменший розмір вікна, на який ви маєте намір націлитися. Це не обов’язково, але це гарантує, що ви розробите свій інтерфейс користувача з урахуванням невеликих розмірів вікон.

  • Зберігайте значення режиму розтягування за замовчуванням, вимкнено.

  • Збережіть значення аспекту розтягування за замовчуванням, keep (його значення не використовуватиметься, оскільки режим розтягування вимкнено).

  • Ви можете визначити мінімальний розмір вікна, встановивши get_window().min_size у функції _ready() скрипта. Це запобігає зміні користувачем розміру програми нижче певного значення, що може порушити макет інтерфейсу користувача.

  • Додайте налаштування в параметрах програми, щоб змінити stretch scale кореневого вікна перегляду, щоб інтерфейс користувача можна було збільшити з урахуванням дисплеїв hiDPI. Див. також розділ про підтримку hiDPI нижче.

підтримка hiDPI

За замовчуванням, проекти Godot вважаються операційною системою такими, що підтримують DPI. Це контролюється налаштуванням проекту Display > Window > DPI > Allow hiDPI, яке слід залишати увімкненим, коли це можливо. Вимкнення підтримки DPI може порушити роботу повноекранного режиму в Windows.

Оскільки проекти Godot підтримують DPI, вони можуть відображатися в дуже маленькому розмірі вікна під час запуску на дисплеї hiDPI (пропорційно роздільній здатності екрана). для a найпоширенішим способом вирішення цієї проблеми є зробити їх повноекранними за замовчуванням. Крім того, ви можете встановити розмір вікна в autoload's _ready() функції відповідно до розміру екрана.

Щоб 2D-елементи не виглядали надто маленькими на дисплеях HiDPI:

  • Для ігор використовуйте режими розтягування canvas_items або viewport, щоб розмір 2D-елементів автоматично змінювався відповідно до розміру поточного вікна.

  • Для неігрових додатків використовуйте режим розтягування disabled і встановіть масштаб розтягування на значення, що відповідає коефіцієнту масштабування дисплея у функції _ready() autoload. Коефіцієнт масштабування дисплея встановлюється в налаштуваннях операційної системи і може бути запитаний за допомогою screen_get_scale. Цей метод наразі реалізований на Android, iOS, Linux (тільки Wayland), macOS і Web. На інших платформах вам доведеться реалізувати метод для визначення коефіцієнта масштабування дисплея на основі роздільної здатності екрана (з налаштуванням, що дозволяє користувачеві змінити це значення за потреби). Цей підхід наразі використовується в редакторі Godot.

Параметр Дозволити високу роздільну здатність діє лише у Windows та macOS. Він ігнорується на всіх інших платформах.

Примітка

Сам редактор Godot завжди позначено як такий, що враховує DPI. Запуск проєкту з редактора враховуватиме DPI, лише якщо в налаштуваннях проєкту ввімкнено опцію Дозволити високу роздільну здатність.

Зменшення псевдонімів при зниженні дискретизації

Якщо гра має дуже високу базову роздільну здатність (наприклад, 3840 × 2160), псевдонім може з’явитися під час зменшення роздільної здатності до чогось значно нижчого, наприклад 1280 × 720.

Щоб вирішити цю проблему, ви можете ввімкнути mipmaps для всіх ваших 2D текстур. Однак увімкнення mipmaps збільшить використання пам’яті, що може бути проблемою на мобільних пристроях низького класу.

Обробка пропорцій

Після врахування масштабування для різних роздільних здатностей переконайтеся, що ваш інтерфейс також масштабується для різних пропорцій. Це можна зробити за допомогою anchors та/або containers.

Масштабування поля зору

Властивість Зберігати аспект вузла 3D-камери за замовчуванням використовує режим масштабування Зберігати висоту (також називається Hor+). Зазвичай це найкраще значення для настільних і мобільних ігор у альбомному режимі, оскільки широкоформатні дисплеї автоматично використовуватимуть ширше поле огляду.

Проте, якщо у вашу 3D-гру планується грати в портретному режимі, можливо, доцільніше використовувати натомість Keep Width (також називається Vert-). Таким чином, смартфони зі співвідношенням сторін вище 16:9 (наприклад, 19:9) використовуватимуть вище поле зору, що тут логічніше.

Різне масштабування 2D та 3D елементів

Щоб візуалізувати 3D з іншою роздільною здатністю, ніж 2D-елементи (наприклад, інтерфейс користувача), використовуйте функцію Godot resolution scaling. Це дозволяє контролювати коефіцієнт масштабування роздільної здатності, що використовується для 3D, без необхідності використання окремого вузла Viewport. Це можна використовувати для підвищення продуктивності шляхом візуалізації 3D з нижчою роздільною здатністю або для підвищення якості за допомогою суперсемплінгу.