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.
Checking the stable version of the documentation...
Risoluzioni multiple
Il problema delle risoluzioni multiple
Gli sviluppatori hanno spesso difficoltà a capire come supportare al meglio più risoluzioni nei loro giochi. Per i giochi su desktop e console, questo è più o meno semplice, poiché la maggioranza dei rapporti d'aspetto dello schermo è 16:9 e le risoluzioni sono standard (720p, 1080p, 1440p, 4K, ...).
Per i giochi sui dispositivi mobili, all'inizio è stato facile. Per molti anni, iPhone e iPad hanno utilizzato la stessa risoluzione. Quando è stato implementato Retina, hanno solo raddoppiato la densità dei pixel; la maggioranza degli sviluppatori ha dovuto fornire risorse con risoluzioni predefinite e doppie.
Oggigiorno, questo non è più il caso, poiché esistono numerose dimensioni di schermi, densità e rapporti d'aspetto. Anche le dimensioni non convenzionali stanno diventando sempre più popolari, come i display ultrawide.
Per il rendering 3D, non c'è molto bisogno di supportare più risoluzioni. Grazie alla sua natura vettoriale, la geometria 3D riempirà lo schermo in base alle dimensioni della viewport. Per le interfacce utente 2D e di gioco, la questione è diversa, poiché l'arte deve essere creata utilizzando dimensioni di pixel specifiche in software come Photoshop, GIMP o Krita.
Poiché i layout, i rapporti d'aspetto, le risoluzioni e le densità dei pixel possono variare notevolmente, non è più possibile progettare interfacce utente specifiche per ogni schermo. È necessario utilizzare un altro metodo.
Una taglia unica per tutti
L'approccio più comune è quello di utilizzare una singola risoluzione base e poi adattarla a tutto il resto. Questa risoluzione è quella che la maggior parte dei giocatori dovrebbe adottare per giocare (secondo il proprio hardware). Per i dispositivi mobili, Google offre utili statistiche online, e per i computer desktop, Steam fa lo stesso.
Ad esempio, Steam mostra che la risoluzione del display primario più comune è 1920×1080, quindi un approccio sensato è quello di sviluppare un gioco per questa risoluzione, quindi gestire la scala per diverse dimensioni e rapporti d'aspetto.
Godot fornisce diversi strumenti utili per farlo facilmente.
Vedi anche
È possibile vedere in azione come funziona il supporto per più risoluzioni in Godot attraverso il progetto dimostrativo Risoluzioni multiple e rapporti d'aspetto.
Dimensioni base
È possibile specificare le dimensioni base per la finestra nelle Impostazioni del progetto in Display → Window.
Tuttavia, quello che fa non è del tutto ovvio: il motore non tenterà di impostare il monitor su questa risoluzione. Piuttosto, bisogna considerare queste impostazioni come le "dimensioni di progettazione", ovvero le dimensioni dell'area su cui lavorare nell'editor. Queste impostazioni corrispondono direttamente alle dimensioni del rettangolo blu nell'editor 2D.
Spesso c'è bisogno di supportare dispositivi con dimensioni dello schermo e della finestra diverse da queste dimensioni base. Godot offre molti modi per controllare come la finestra sarà ridimensionata e adattata alle diverse dimensioni dello schermo.
Nota
In questa pagina, finestra (window) si riferisce all'area dello schermo assegnata al gioco dal sistema, mentre viewport si riferisce all'oggetto radice (accessibile da get_tree().root) che il gioco controlla per riempire quest'area dello schermo. Questa viewport è un'istanza di Window. Ricorda dall' introduzione che tutti gli oggetti Window sono viewport.
Per configurare le dimensioni base per lo stiramento da uno script in fase di esecuzione, usa la proprietà get_tree().root.content_scale_size (vedi Window.content_scale_size). Cambiare questo valore può alterare indirettamente le dimensioni degli elementi 2D. Tuttavia, per fornire un'opzione di ridimensionamento accessibile all'utente, si consiglia di usare Scala di stiramento, poiché è più facile da regolare.
Nota
Godot segue un approccio moderno alle risoluzioni multiple. Il motore non cambierà mai la risoluzione del monitor da solo. Sebbene cambiarla sia l'approccio più efficiente, è anche il meno affidabile, in quanto può lasciare il monitor a una risoluzione bassa se il gioco si blocca. Questo è particolarmente comune su macOS o Linux, che non gestiscono i cambi di risoluzione così bene come Windows.
Cambiando la risoluzione del monitor si rimuove anche qualsiasi controllo dallo sviluppatore del gioco sul filtraggio e sullo stiramento del rapporto d'aspetto, che possono essere importanti per garantire una visualizzazione corretta nei giochi in pixel art.
Oltretutto, cambiare la risoluzione del monitor rende molto lento premere Alt+Tab per entrare e uscire da un gioco, poiché il monitor deve cambiare risoluzione ogni volta che lo si fa.
Ridimensionamento
Esistono diversi tipi di dispositivi, con diversi tipi di schermi, che a loro volta hanno densità di pixel e risoluzioni diverse. Gestirli tutti può essere molto lavoro, quindi Godot cerca di semplificare un po' la vita dello sviluppatore. Il nodo Viewport ha diverse funzioni per gestire il ridimensionamento, e il nodo radice dell'albero di scene è sempre una viewport (le scene caricate sono istanziate come suo figlio, ed è sempre possibile accedervi chiamando get_tree().root o get_node("/root")).
In ogni caso, sebbene modificare i parametri della Viewport radice sia probabilmente il modo più flessibile per gestire il problema, può richiedere molto lavoro, codice e supposizioni, quindi Godot fornisce un insieme di parametri nelle impostazioni del progetto per gestire più risoluzioni.
Suggerimento
Per renderizzare in 3D a una risoluzione inferiore rispetto a quella degli elementi 2D (senza bisogno di viewport separate), è possibile avvalersi del supporto per lo scaling della risoluzione in Godot. Questo è un buon modo per migliorare notevolmente le prestazioni in scenari limitati dalla GPU. Funziona con qualsiasi combinazione di modalità di stiramento e aspetto di stiramento.
Impostazioni di stiramento
Nota
Quando stai testano diverse modalità di stiramento e impostazioni di rapporti d'aspetto, assicurati che l'incorporamento del gioco sia configurato per usare l'opzione di ridimensionamento Stretch to Fit:
Ciò garantisce che le dimensioni della viewport corrispondano sempre alle dimensioni della finestra, come quando l'incorporamento del gioco è disabilitato.
Le impostazioni di stiramento si trovano nelle impostazioni del progetto e offrono diverse opzioni:
Modalità di stiramento
L'impostazione Modalità di stiramento definisce il modo in cui le dimensioni base sono stirate per adattarsi alla risoluzione della finestra o schermo. Le animazioni seguenti utilizzano "dimensioni base" di soli 16×9 pixel per dimostrare l'effetto delle diverse modalità di stiramento. Un singolo sprite, anch'esso di 16×9 pixel, copre l'intera viewport, e sopra di esso viene aggiunta una Line2D diagonale:
Modalità di stiramento = Disabled (predefinita): non avviene alcun stiramento. Un'unità nella scena corrisponde a un pixel sullo schermo. In questa modalità, l'impostazione Aspetto di stiramento non ha alcun effetto.
Modalità di stiramento = Canvas Items: in questa modalità, le dimensioni base, specificate in larghezza e altezza nelle impostazioni del progetto, sono stirate per coprire l'intero schermo (tenendo conto dell'impostazione Aspetto di stiramento). Ciò significa che tutto è renderizzato direttamente alla risoluzione di destinazione. Il 3D non è influenzato, mentre in 2D non esiste più una corrispondenza 1:1 trai pixel degli sprite e i pixel dello schermo, il che potrebbe causare artefatti di ridimensionamento.
Modalità di stiramento = Viewport: il ridimensionamento della viewport significa che le dimensioni della Viewport radice sono impostate esattamente sulle dimensioni base specificate nella sezione Display delle Impostazioni del progetto. La scena viene prima renderizzata in questa viewport. Infine, questa viewport viene ridimensionata per adattarla allo schermo (tenendo conto dell'impostazione Aspetto di stiramento).
Per configurare la modalità di stiramento da uno script in fase di esecuzione, usa la proprietà get_tree().root.content_scale_mode (vedi Window.content_scale_mode e l'enumerazione ContentScaleMode).
Aspetto di stiramento
La seconda impostazione è l'aspetto di stiramento. Nota che questa impostazione ha effetto solo se Modalità di stiramento è impostata su un valore diverso da Disabled.
Nelle animazioni di seguito, noterai aree grigie e nere. Le aree nere sono aggiunte dal motore e non vi si può disegnare. Le aree grigie fanno parte della scena e vi si può disegnare. Le aree grigie corrispondono alla regione fuori dal riquadro blu visualizzato nell'editor 2D.
Aspetto di stiramento = Ignore: ignora il rapporto d'aspetto quando viene stirato lo schermo. Ciò significa che la risoluzione originale verrà stirata per riempire esattamente lo schermo, anche se è più largo o più stretto. Ciò potrebbe causare uno stiramento non uniforme: gli oggetti potrebbero apparire più larghi o più alti del previsto.
Aspetto di stiramento = Keep: mantiene il rapporto d'aspetto quando viene stirato lo schermo. Ciò significa che la viewport mantiene le sue dimensioni originali indipendentemente dalla risoluzione dello schermo, e verranno aggiunte delle barre nere in alto/basso allo schermo ("letterboxing") o ai lati ("pillarboxing").
Questa è una buona opzione se conosci in anticipo il rapporto d'aspetto dei tuoi dispositivi di destinazione o se non vuoi gestire rapporti d'aspetto diversi.
Aspetto di stiramento = Keep Width: mantiene il rapporto d'aspetto quando viene stirato lo schermo. Se lo schermo è più largo della dimensione base, vengono aggiunte delle barre nere a sinistra e a destra (pillarboxing). Se invece lo schermo è più alto della risoluzione base, la viewport verrà ingrandita in verticale (e saranno visibili più contenuti in basso). Puoi anche pensare a questa opzione come "Espandi verticalmente".
Questa è solitamente l'opzione migliore per creare interfacce grafiche utente (GUI) o HUD che si adattano alle dimensioni, così che alcuni controlli si possano ancorare in fondo (Dimensioni e ancore).
Aspetto di stiramento = Keep Height: mantiene il rapporto d'aspetto quando viene stirato lo schermo. Se lo schermo è più alto della dimensione base, vengono aggiunte delle barre nere in alto e in basso (letterboxing). Se invece lo schermo è più largo della risoluzione base, la viewport verrà ingrandita in senso orizzontale (e saranno visibili più contenuti a destra). Puoi anche pensare a questa opzione come "Espandi orizzontalmente".
Questa è solitamente l'opzione migliore per i giochi 2D che scorrono orizzontalmente (come i giochi di corsa o piattaforme).
Aspetto di stiramento = Expand: mantiene il rapporto d'aspetto quando viene stirato lo schermo, ma non mantenere né la larghezza né l'altezza base. A seconda del rapporto d'aspetto dello schermo, la viewport sarà più grande nella direzione orizzontale (se lo schermo è più largo della dimensione base) o nella direzione verticale (se lo schermo è più alto della dimensione originale).
Suggerimento
Per supportare la modalità sia verticale sia orizzontale con un fattore di scala simile determinato automaticamente, imposta la risoluzione base del progetto per essere un quadrato (rapporto d'aspetto 1:1) anziché un rettangolo. Ad esempio, se desideri progettare con una risoluzione base di 1280×720 ma desideri supportare sia la modalità verticale sia quella orizzontale, utilizza 720×720 come dimensioni base della finestra del progetto nelle Impostazioni del progetto.
Per consentire all'utente di scegliere l'orientamento preferito dello schermo in fase di esecuzione, ricordarti di impostare Display > Finestra > Portatile > Orientamento su sensor.
Per configurare l'aspetto di stiramento da uno script in fase di esecuzione, usa la proprietà get_tree().root.content_scale_aspect (vedi Window.content_scale_aspect e l'enumerazione ContentScaleAspect).
Scala di stiramento
L'impostazione Scala consente di aggiungere un fattore di scala in più a quello già fornito dalle opzioni di Stiramento sopra. Il valore predefinito 1.0 significa che non avviene alcun ridimensionamento aggiuntivo.
Ad esempio, se imposti Scala su 2.0 e lasci Modalità di stiramento su Disabled, ogni unità nella scena corrisponderà a 2×2 pixel sullo schermo. Questo è un buon modo per fornire opzioni di ridimensionamento per le applicazioni non di gioco.
Se Modalità di stiramento è impostato su canvas_items, gli elementi 2D saranno ridimensionati in base alle dimensioni base della finestra, poi moltiplicati per l'impostazione Scala. Questa impostazione si può esporre ai giocatori per consentire loro di adattare la scala determinata automaticamente a piacimento, per una migliore accessibilità.
Se Modalità di stiramento è impostata su viewport, la risoluzione della viewport viene divisa per Scala. Questo fa apparire i pixel più grandi e riduce la risoluzione di rendering (con determinate dimensioni della finestra), il che può migliorare le prestazioni.
Per configurare la scala di stiramento da uno script in fase di esecuzione, usa la proprietà get_tree().root.content_scale_factor (vedi Window.content_scale_factor).
È inoltre possibile regolare la scala con cui è generato il tema predefinito del progetto tramite l'impostazione GUI > Tema > Scala di tema predefinita. Può servire per creare interfacce utente con dimensioni più sensate a risoluzioni base notevolmente più alte o basse di quella predefinita. Tuttavia, non è possibile cambiare questa impostazione del progetto in fase di esecuzione, poiché il suo valore viene letto una sola volta all'avvio del progetto.
Modalità di scala di stiramento
A partire da Godot 4.2, l'impostazione Modalità di scala di stiramento consente di limitare il fattore di scala determinato automaticamente (così come l'impostazione Scala di stiramento specificata manualmente) a valori interi. Normalmente, questa è impostata su fractional, il che consente di applicare qualsiasi fattore di scala (inclusi valori frazionari come 2.5). Quando è impostata su integer, il valore è arrotondato per difetto all'intero più vicino. Ad esempio, invece di utilizzare un fattore di scala di 2.5, sarebbe arrotondato per difetto a 2.0. Questo è utile per mostrare pixel art evitando distorsioni.
Confronta questa pixel art visualizzata con la modalità di stiramento viewport, con la modalità di scala di stiramento impostata su fractional:
La scacchiera non ha un aspetto "uniforme". Lo spessore delle linee nel logo e nel testo varia notevolmente.
Anche questa pixel art è visualizzata con la modalità di stiramento viewport, ma questa volta la modalità di scala di stiramento è impostata su integer:
La scacchiera appare perfettamente uniforme. Gli spessori delle linee sono costanti.
Ad esempio, se le dimensioni base della viewport sono 640×360 e le dimensioni della finestra sono 1366×768:
Utilizzando
fractional, la viewport è visualizzata a una risoluzione di 1366×768 (il fattore di scala è di circa 2,133×). È utilizzato tutto lo spazio della finestra. Ogni pixel nella finestra corrisponde a 2,133×2,133 pixel nell'area visualizzata. Tuttavia, poiché i display possono visualizzare solo pixel "interi", ciò non ridimensionerà i pixel uniformemente, il che fa apparire incorrettamente la pixel art.Utilizzando
integer, la finestra è visualizzata a una risoluzione di 1280×720 (il fattore di scala è 2×). Lo spazio rimanente è riempito con barre nere su tutti e quattro i lati, in modo che ogni pixel nella viewport corrisponda a 2×2 pixel nell'area visualizzata.
Questa impostazione funziona con qualsiasi modalità di stiramento. Tuttavia, quando si usa la modalità di stiramento disabled, influirà solo sull'impostazione Scala di stiramento, arrotondandola per difetto al valore intero più vicino. Questa impostazione si può utilizzare per i giochi 3D con un'interfaccia utente in stile pixel art, così che l'area visibile nella viewport 3D non si rimpicciolisca (cosa che accade usando la modalità di stiramento canvas_items o viewport con la modalità di scala integer).
Suggerimento
I giochi dovrebbero utilizzare la modalità di finestra Exclusive Fullscreen (schermo intero esclusivo), anziché Fullscreen (schermo intero), che è progettata per impedire a Windows di trattare automaticamente la finestra come se fosse a schermo intero esclusivo.
Exclusive Fullscreen è concepito all'uso di applicazioni con GUI che desiderano utilizzare la trasparenza per pixel senza il rischio che sia disattivata dal sistema operativo. Lo fa lasciando una linea di 1 pixel in fondo allo schermo. Al contrario, Fullscreen utilizza le dimensioni effettive dello schermo e consente a Windows di ridurre il tremolio e il ritardo degli input per i giochi a schermo intero.
Quando si utilizza il ridimensionamento intero, questo è particolarmente importante poiché la riduzione dell'altezza di 1 pixel dalla modalità Fullscreen può far sì che il ridimensionamento intero utilizzi un fattore di scala più basso del previsto.
Scenari d'uso comuni
Le seguenti impostazioni sono consigliate per supportare bene multiple risoluzioni e rapporti d'aspetto.
Gioco per desktop
Non-pixel art:
Imposta la larghezza base della finestra su
1920e la sua altezza su1080. Se hai uno schermo più piccolo di 1920×1080, imposta Sovrascrivi larghezza della finestra e Sovrascrivi altezza della finestra su valori più bassi per rimpicciolire la finestra all'avvio del progetto.Alternativamente, se l'obiettivo principale sono i dispositivi di fascia alta, imposta la larghezza base della finestra su
3840e la sua altezza su2160. Questo consente di fornire risorse 2D a risoluzioni più alte, risultando in immagini più nitide a scapito di un maggiore utilizzo di memoria e file più grandi. Consigliamo inoltre di aumentare GUI > Tema > Scala di tema predefinita a un valore compreso tra2.0e3.0per garantire che gli elementi dell'interfaccia utente rimangano leggibili.Tieni presente che questo renderà le texture non mipmap granulose sui dispositivi a bassa risoluzione, quindi assicurati di seguire le istruzioni descritte in Ridurre l'aliasing per il sottocampionamento.
Imposta la modalità di stiramento su
canvas_items.Imposta l'aspetto di stiramento su
expand. Questo consente di supportare più rapporti d'aspetto e sfrutta al meglio i display alti degli smartphone (ad esempio, rapporti d'aspetto 18:9 o 19:9).Configura le ancore dei nodi di controllo affinché si aggancino agli angoli corretti attraverso il menu Layout.
Per i giochi 3D, considera di esporre Scaling della risoluzione nel menu delle opzioni del gioco per consentire ai giocatori di regolare la risoluzione del rendering 3D separatamente dagli elementi dell'interfaccia utente. Questo è utile per ottimizzare le prestazioni, soprattutto su hardware di fascia bassa.
Pixel art:
Imposta le dimensioni base della finestra sulle dimensioni della viewport che intendi usare. La maggior parte dei giochi in pixel art usa dimensioni della viewport comprese tra 256×224 e 640×480. 640×360 è un buon riferimento, poiché scala a 1280×720, 1920×1080, 2560×1440 e 3840×2160 senza barre nere se si utilizza il ridimensionamento intero. Dimensioni più elevate della viewport richiederanno l'uso di illustrazioni a risoluzione più elevata, a meno che non si intenda mostrare di più alla volta per il mondo di gioco.
Imposta la modalità di stiramento su
viewport.Imposta l'aspetto di stiramento su
keepper applicare un unico rapporto d'aspetto (con barre nere). Alternativamente, è possibile impostare l'aspetto di stiramento suexpandper supportare più rapporti d'aspetto.Se stai utilizzando l'aspetto di stiramento
expand, configura le ancore dei nodi di controllo affinché si aggancino agli angoli corretti attraverso il menu Layout.Imposta la modalità di scala di stiramento su
integer. Questo evita di ridimensionare non uniformemente i pixel, il che non farebbe apparire la pixel art come previsto.
Nota
La modalità di stiramento viewport fornisce un rendering a bassa risoluzione che viene poi stirato fino alle dimensioni finali della finestra. Se va bene che gli sprite si muovano o ruotino in posizioni "sub-pixel" oppure serve una viewport 3D ad alta risoluzione, è consigliabile utilizzare la modalità di stiramento canvas_items anziché quella viewport.
Gioco mobile in modalità orizzontale
Godot è configurato per utilizzare la modalità orizzontale come predefinita. Ciò significa che non è necessario modificare l'impostazione di orientamento dello schermo del progetto.
Imposta la larghezza base della finestra su
1280e la sua altezza su720.Alternativamente, se l'obiettivo principale sono i dispositivi di fascia alta, imposta la larghezza base della finestra su
1920e la sua altezza su1080. Questo consente di fornire risorse 2D a risoluzioni più alte, risultando in immagini più nitide a scapito di un maggiore utilizzo di memoria e file più grandi. Molti dispositivi hanno display a risoluzione ancora più elevata (1440p), ma la differenza con 1080p è a malapena visibile, date le dimensioni ridotte dei display degli smartphone. Consigliamo inoltre di aumentare GUI > Tema > Scala di tema predefinita a un valore compreso tra1.5e2.0per garantire che gli elementi dell'interfaccia utente rimangano leggibili.Tieni presente che questo renderà le texture non mipmap granulose sui dispositivi a bassa risoluzione, quindi assicurati di seguire le istruzioni descritte in Ridurre l'aliasing per il sottocampionamento.
Imposta la modalità di stiramento su
canvas_items.Imposta l'aspetto di stiramento su
expand. Questo consente di supportare più rapporti d'aspetto e sfrutta al meglio i display alti degli smartphone (ad esempio, rapporti d'aspetto 18:9 o 19:9).Configura le ancore dei nodi di controllo affinché si aggancino agli angoli corretti attraverso il menu Layout.
Suggerimento
Per supportare al meglio tablet e telefoni pieghevoli (che spesso presentano display con rapporti d'aspetto vicini a 4:3), si consiglia di utilizzare una risoluzione base con un rapporto d'aspetto di 4:3, seguendo le istruzioni restanti riportate qui. Ad esempio, è possibile impostare la larghezza base della finestra su 1280 e l'altezza base della finestra su 960.
Gioco mobile in modalità ritratto
Imposta la larghezza base della finestra su
720e l'altezza della finestra su1280.Alternativamente, se l'obiettivo principale sono i dispositivi di fascia alta, imposta la larghezza base della finestra su
1080e la sua altezza su1920. Questo consente di fornire risorse 2D a risoluzioni più alte, risultando in immagini più nitide a scapito di un maggiore utilizzo di memoria e file più grandi. Molti dispositivi hanno display a risoluzione ancora più elevata (1440p), ma la differenza con 1080p è a malapena visibile, date le dimensioni ridotte dei display degli smartphone. Consigliamo inoltre di aumentare GUI > Tema > Scala di tema predefinita a un valore compreso tra1.5e2.0per garantire che gli elementi dell'interfaccia utente rimangano leggibili.Tieni presente che questo renderà le texture non mipmap granulose sui dispositivi a bassa risoluzione, quindi assicurati di seguire le istruzioni descritte in Ridurre l'aliasing per il sottocampionamento.
Imposta Display > Finestra > Portatile > Orientamento su
portrait.Imposta la modalità di stiramento su
canvas_items.Imposta l'aspetto di stiramento su
expand. Questo consente di supportare più rapporti d'aspetto e sfrutta al meglio i display alti degli smartphone (ad esempio, rapporti d'aspetto 18:9 o 19:9).Configura le ancore dei nodi di controllo affinché si aggancino agli angoli corretti attraverso il menu Layout.
Suggerimento
Per supportare al meglio tablet e telefoni pieghevoli (che spesso presentano display con rapporti d'aspetto vicini a 4:3), si consiglia di utilizzare una risoluzione base con un rapporto d'aspetto di 4:3, seguendo le istruzioni restanti riportate qui. Ad esempio, è possibile impostare la larghezza base della finestra su 960 e l'altezza base della finestra su 1280.
Applicazione non di gioco
Imposta la larghezza e l'altezza base della finestra sulle dimensioni minime che intendi raggiungere. Non è obbligatorio, ma ti assicura di progettare l'interfaccia utente tenendo conto delle dimensioni ridotte della finestra.
Mantieni la modalità di stiramento al suo valore predefinito,
disabled.Mantieni l'aspetto di stiramento al suo valore predefinito,
keep(il suo valore non sarà utilizzato poiché la modalità di stiramento èdisabled).È possibile definire dimensioni minime per una finestra chiamando
get_window().set_min_size()nella funzione_ready()di uno script. Ciò impedisce all'utente di ridimensionare l'applicazione al di sotto di certe dimensioni, il che potrebbe rovinare il layout dell'interfaccia utente.Aggiungi un'impostazione nelle impostazioni dell'applicazione per cambiare la scala di stiramento della viewport radice, in modo che l'interfaccia utente si possa ingrandire per supportare i display hiDPI. Vedi anche la sezione sul supporto hiDPI qui sotto.
Supporto per hiDPI (alta risoluzione)
Come predefinito, i progetti Godot sono considerati sensibili ai DPI dal sistema operativo. Questo è controllato dall'impostazione del progetto Display > Window > DPI > Permetti hiDPI, che si dovrebbe lasciare abilitata quando possibile. Disabilitare la sensibilità ai DPI può compromettere il funzionamento a schermo intero su Windows.
Poiché i progetti Godot sono sensibili ai DPI, potrebbero apparire con una finestra di dimensioni molto ridotte quando vengono avviati su un display hiDPI (proporzionalmente alla risoluzione dello schermo). Per un gioco, il modo più comune per ovviare a questo problema è impostarlo a schermo intero per impostazione predefinita. Alternativamente, è possibile impostare le dimensioni della finestra nella funzione _ready() di un autoload in base alle dimensioni dello schermo.
Per garantire che gli elementi 2D non appaiano troppo piccoli sui display hiDPI:
Per i giochi, utilizza la modalità di stiramento
canvas_itemsoviewportaffinché gli elementi 2D siano ridimensionati automaticamente secondo le dimensioni attuali della finestra.Per le applicazioni non di gioco, utilizza le modalità di stiramento
disablede imposta la scala di stiramento su un valore corrispondente al fattore di scala del display nella funzione_ready()di un autoload. Il fattore di scala del display è impostato nelle impostazioni del sistema operativo e si può ricavare tramite screen_get_scale. Questo metodo è attualmente implementato su Android, iOS, Linux (solo Wayland), macOS e Web. Su altre piattaforme, sarà necessario implementare un metodo per dedurre il fattore di scala del display in base alla risoluzione dello schermo (con un'impostazione che consenta all'utente di sovrascriverlo se necessario). Questo è l'approccio attualmente utilizzato dall'editor Godot.
L'impostazione Permetti hiDPI funziona solo su Windows e macOS. È ignorata su tutte le altre piattaforme.
Nota
L'editor Godot è sempre considerato compatibile con DPI. L'esecuzione del progetto dall'editor sarà compatibile con DPI solo se l'opzione Permetti hiDPI è abilitata nelle impostazioni del progetto.
Font and image oversampling
Godot supports a process called oversampling, which refers to automatically re-rendering textures from their original vector source when the viewport scale factor changes. This ensures font and image textures remain crisp at any resolution.
Font oversampling is enabled by default, but it can be disabled by unchecking GUI > Fonts > Dynamic Fonts > Use Oversampling in the Project Settings.
Image oversampling is disabled by default, and can be enabled for specific images in SVG format by changing their import type to DPITexture in the Import dock. Other image formats do not support oversampling, as they store bitmap data instead of vectors.
The editor automatically performs oversampling when zooming in the 2D editor, which allows you to preview how oversampling will look at specific scale factors. This can be disabled by unchecking View > Auto Resample CanvasItems at the top of the 2D editor viewport.
Oversampling can also be applied according to the Node2D or Control's Scale property. This scale-based oversampling behavior is disabled by default, but it can be enabled by setting Oversampling with Scale in the inspector to Enabled on the desired node. This is useful for nodes that may have their scale changed at runtime, such as custom scale factors for certain UI elements like crosshairs. However, keep in mind this can be demanding on the CPU if the scale changes frequently, as the texture has to be re-rendered each time.
For best results, the node should use uniform scaling. Non-uniform scaling will work, but may result in aliasing on the shorter axis as oversampling is always applied uniformly.
Nota
Control's offset_transform_enabled property is taken into account by scale-based oversampling, but only if offset_transform_visual_only is disabled. When offset_transform_visual_only is enabled, it does not affect the node's actual scale (as used for input coordinates), but only its visual representation. Therefore, it is ignored by oversampling.
Ridurre l'aliasing per il sottocampionamento
Se il gioco ha una risoluzione base molto alta (ad esempio 3840×2160), potrebbe comparire dell'aliasing quando si effettua un sottocampionamento a una risoluzione considerevolmente più bassa, come 1280×720.
Per risolvere questo problema, puoi abilitare i mipmap su tutte le tue texture 2D. Tuttavia, abilitare i mipmap aumenterà l'utilizzo della memoria, il che potrebbe essere un problema sui dispositivi mobili di fascia bassa.
For SVG images, you can also change their import type to DPITexture in the Import dock to benefit from automatic oversampling as described above. This avoids aliasing by re-rasterizing the texture when the scale factor changes.
Gestione dei rapporti d'aspetto
Una volta tenuto conto del ridimensionamento per le diverse risoluzioni, assicurati che anche la tua interfaccia utente si adatti ai diversi rapporti d'aspetto. Lo si può fare attraverso le ancore e/o i contenitori.
Ridimensionamento del campo visivo
La proprietà Mantieni aspetto del nodo 3D Camera è impostata normalmente sulla modalità di ridimensionamento Keep Height (detto anche Hor+). Questa è solitamente la scelta migliore per i giochi sui desktop e sui dispositivi mobili in modalità orizzontale, poiché gli schermi widescreen utilizzeranno automaticamente un campo visivo più ampio.
Tuttavia, se il tuo gioco 3D è concepito per essere giocato in modalità ritratto, potrebbe essere più opportuno utilizzare Keep Width (anche detto Vert-). Così, gli smartphone con un rapporto d'aspetto più alto di 16:9 (ad esempio 19:9) utilizzeranno un campo visivo più alto, il che ha più senso in questo caso.
Ridimensionare elementi 2D e 3D diversamente
Per renderizzare elementi 3D a una risoluzione diversa rispetto agli elementi 2D (come l'interfaccia utente), usa la funzionalità di scaling della risoluzione in Godot. Questa funzionalità permette di controllare il fattore di scala della risoluzione utilizzato per il 3D, senza bisogno di un nodo Viewport separato. Può servire per migliorare le prestazioni, renderizzando il 3D a una risoluzione più bassa, oppure per migliorare la qualità tramite un sovracampionamento.