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...
Resoluções múltiplas
O problema das múltiplas resoluções
Os desenvolvedores costumam ter problemas para entender como dar melhor suporte a múltiplas resoluções em seus jogos. Para jogos de desktop e console, isso é mais ou menos simples, já que a maioria das proporções de tela é 16:9 e as resoluções são padrão (720p, 1080p, 1440p, 4K, ...).
Para jogos móveis, no início, era fácil. Por muitos anos, o iPhone e o iPad usaram a mesma resolução. Quando a Retina foi implementada, eles apenas dobraram a densidade de pixels; a maioria dos desenvolvedores tinha que fornecer recursos em resoluções padrão e duplas.
Hoje em dia, esse já não é o caso, pois há uma infinidade de tamanhos de tela, densidades e proporções diferentes. Tamanhos não convencionais também estão se tornando cada vez mais populares, como telas ultrawide.
Para renderização 3D, não há muita necessidade de suportar múltiplas resoluções. Graças à sua natureza baseada em vetores, a geometria 3D apenas preencherá a tela com base no tamanho do viewport. Para 2D e UIs de jogos, o assunto é diferente, pois a arte precisa ser criada usando tamanhos de pixel específicos em softwares como Photoshop, GIMP ou Krita.
Como os layouts, proporções, resoluções e densidades de pixels podem mudar muito, não é mais possível projetar UIs para cada tela específica. Outro método deve ser usado.
Um tamanho serve para todos
A abordagem mais comum é usar uma única resolução base e depois ajustá-la para todo o resto. Essa resolução é como a maioria dos jogadores deve jogar o jogo (dado o seu hardware). Para dispositivos móveis, o Google possui estatísticas úteis online, e para desktop, o Steam também possui.
Como exemplo, o Steam mostra que a resolução de tela primária mais comum é 1920×1080, então uma abordagem sensata é desenvolver um jogo para essa resolução e, em seguida, lidar com o escalonamento para diferentes tamanhos e proporções.
O Godot fornece várias ferramentas úteis para fazer isso facilmente.
Ver também
Você pode ver como o suporte do Godot para múltiplas resoluções funciona em ação usando o projeto de demonstração de Múltiplas Resoluções e Proporções de Tela.
Tamanho base
Um tamanho base para a janela pode ser especificado nas Configurações do Projeto em Display → Window.
No entanto, o que isso faz não é totalmente óbvio; o motor não tentará alternar o monitor para esta resolução. Em vez disso, pense nessa configuração como o "tamanho de design", ou seja, o tamanho da área com a qual você trabalha no editor. Essa configuração corresponde diretamente ao tamanho do retângulo azul no editor 2D.
Frequentemente, há a necessidade de suportar dispositivos com tamanhos de tela e janela diferentes desse tamanho base. O Godot oferece muitas maneiras de controlar como o viewport será redimensionado e esticado para diferentes tamanhos de tela.
Nota
Nesta página, janela se refere à área da tela alocada ao seu jogo pelo sistema, enquanto viewport se refere ao objeto raiz (acessível a partir de get_tree().root) que o jogo controla para preencher essa área da tela. Este viewport é uma instância de Window. Lembre-se da introdução que todos os objetos Window são viewports.
Para configurar o tamanho base do esticamento em tempo de execução a partir de um script, use a propriedade get_tree().root.content_scale_size (consulte Window.content_scale_size). Alterar esse valor pode alterar indiretamente o tamanho dos elementos 2D. No entanto, para fornecer uma opção de dimensionamento acessível ao usuário, recomenda-se usar o Escala de esticamento, pois é mais fácil de ajustar.
Nota
O Godot segue uma abordagem moderna para múltiplas resoluções. O motor nunca mudará a resolução do monitor por conta própria. Embora alterar a resolução do monitor seja a abordagem mais eficiente, é também a abordagem menos confiável, pois pode deixar o monitor travado em uma resolução baixa se o jogo travar. Isso é especialmente comum no macOS ou Linux, que não lidam com mudanças de resolução tão bem quanto o Windows.
Alterar a resolução do monitor também remove qualquer controle do desenvolvedor do jogo sobre a filtragem e o esticamento da proporção, o que pode ser importante para garantir a exibição correta em jogos de pixel art.
Além disso, alterar a resolução do monitor torna o alt-tabbing para dentro e para fora do jogo muito mais lento, já que o monitor precisa mudar de resolução toda vez que isso é feito.
Redimensionando
There are several types of devices, with several types of screens, which
in turn have different pixel density and resolutions. Handling all of
them can be a lot of work, so Godot tries to make the developer's life a
little easier. The Viewport
node has several functions to handle resizing, and the root node of the
scene tree is always a viewport (scenes loaded are instantiated as a child
of it, and it can always be accessed by calling
get_tree().root or get_node("/root")).
De qualquer forma, embora alterar os parâmetros do Viewport raiz seja provavelmente a maneira mais flexível de lidar com o problema, pode dar muito trabalho, código e adivinhação, por isso o Godot fornece um conjunto de parâmetros nas configurações do projeto para lidar com múltiplas resoluções.
Dica
Para renderizar 3D em uma resolução mais baixa que os elementos 2D (sem a necessidade de viewports separados), você pode usar o suporte de escala de resolução do Godot. Esta é uma boa maneira de melhorar significativamente o desempenho em cenários limitados pela GPU. Isso funciona com qualquer combinação de modo de esticamento e proporção de esticamento.
Configurações de alongamento
Nota
Ao testar diferentes modos de esticamento e configurações de proporção de esticamento, certifique-se de que a incorporação de jogo esteja configurada para usar a opção de dimensionamento Stretch to Fit:
Isso garante que o tamanho do viewport sempre corresponda ao tamanho da janela, como quando a incorporação de jogo está desativada.
As configurações de esticamento (Stretch) estão localizadas nas configurações do projeto e oferecem várias opções:
Modo Esticado
A configuração Stretch Mode define como o tamanho base é esticado para se ajustar à resolução da janela ou da tela. As animações abaixo usam um "tamanho base" de apenas 16×9 pixels para demonstrar o efeito de diferentes modos de esticamento. Um único sprite, também de tamanho 16×9 pixels, cobre todo o viewport, e uma linha diagonal Line2D é adicionada sobre ele:
Stretch Mode = Disabled (padrão): Nenhum esticamento acontece. Uma unidade na cena corresponde a um pixel na tela. Neste modo, a configuração Stretch Aspect não tem efeito.
Stretch Mode = Canvas Items: Neste modo, o tamanho base especificado em largura e altura nas configurações do projeto é esticado para cobrir toda a tela (levando em consideração a configuração Stretch Aspect). Isso significa que tudo é renderizado diretamente na resolução de destino. O 3D não é afetado, enquanto no 2D não há mais uma correspondência de 1:1 entre os pixels do sprite e os pixels da tela, o que pode resultar em artefatos de redimensionamento.
Stretch Mode = Viewport: O dimensionamento de Viewport significa que o tamanho do Viewport raiz é definido precisamente para o tamanho base especificado na seção Display das Configurações do Projeto. A cena é renderizada primeiro neste viewport. Finalmente, este viewport é redimensionado para caber na tela (levando em consideração a configuração Stretch Aspect).
Para configurar o modo de esticamento em tempo de execução a partir de um script, use a propriedade get_tree().root.content_scale_mode (consulte Window.content_scale_mode e o enum ContentScaleMode).
Aspecto Esticado
A segunda configuração é a proporção de esticamento (Stretch Aspect). Note que isso só entra em vigor se o Stretch Mode estiver definido para algo diferente de Disabled.
Nas animações abaixo, você notará áreas cinzas e pretas. As áreas pretas são adicionadas pelo motor e não podem ser desenhadas. As áreas cinzas fazem parte da sua cena e podem ser desenhadas. As áreas cinzas correspondem à região fora do quadro azul que você vê no editor 2D.
Stretch Aspect = Ignore: Ignora a proporção de tela ao esticar a tela. Isso significa que a resolução original será esticada para preencher exatamente a tela, mesmo que seja mais larga ou mais estreita. Isso pode resultar em um esticamento não uniforme: as coisas parecendo mais largas ou mais altas do que o planejado.
Stretch Aspect = Keep: Mantém a proporção de tela ao esticar a tela. Isso significa que o viewport retém seu tamanho original independentemente da resolução da tela, e barras pretas serão adicionadas ao topo/inferior da tela ("letterboxing") ou nas laterais ("pillarboxing").
Esta é uma boa opção se você souber a proporção dos seus dispositivos de destino com antecedência ou se não quiser lidar com proporções diferentes.
Stretch Aspect = Keep Width: Mantém a proporção de tela ao esticar a tela. Se a tela for mais larga que o tamanho base, barras pretas são adicionadas à esquerda e à direita (pillarboxing). Mas se a tela for mais alta que a resolução base, o viewport aumentará na direção vertical (e mais conteúdo ficará visível na parte inferior). Você também pode pensar nisso como "Expandir Verticalmente".
Esta costuma ser a melhor opção para criar GUIs ou HUDs que escalam, de modo que alguns controles possam ser ancorados na parte inferior (Tamanho e âncoras).
Stretch Aspect = Keep Height: Mantém a proporção de tela ao esticar a tela. Se a tela for mais alta que o tamanho base, barras pretas são adicionadas no topo e na parte inferior (letterboxing). Mas se a tela for mais larga que a resolução base, o viewport aumentará na direção horizontal (e mais conteúdo ficará visível à direita). Você também pode pensar nisso como "Expandir Horizontalmente".
Esta costuma ser a melhor opção para jogos 2D com rolagem horizontal (como jogos de corrida infinita ou de plataforma).
Stretch Aspect = Expand: Mantém a proporção de tela ao esticar a tela, mas não mantém nem a largura nem a altura base. Dependendo da proporção da tela, o viewport será maior na direção horizontal (se a tela for mais larga que o tamanho base) ou na direção vertical (se a tela for mais alta que o tamanho original).
Dica
Para suportar tanto o modo retrato quanto o paisagem com um fator de escala semelhante determinado automaticamente, defina a resolução base do seu projeto para ser um quadrado (proporção 1:1) em vez de um retângulo. Por exemplo, se você deseja projetar para 1280×720 como a resolução base, mas deseja suportar tanto o modo retrato quanto o paisagem, use 720×720 como o tamanho base da janela do projeto nas Configurações do Projeto.
Para permitir que o usuário escolha sua orientação de tela preferida em tempo de execução, lembre-se de definir Display > Window > Handheld > Orientation como sensor.
Para configurar a proporção de esticamento em tempo de execução a partir de um script, use a propriedade get_tree().root.content_scale_aspect (consulte Window.content_scale_aspect e o enum ContentScaleAspect).
Escala de esticamento
A configuração Scale permite adicionar um fator de escala extra além do que as opções de Stretch acima já fornecem. O valor padrão de 1.0 significa que nenhum dimensionamento adicional ocorre.
Por exemplo, se você definir Scale como 2.0 e deixar o Stretch Mode em Disabled, cada unidade em sua cena corresponderá a 2×2 pixels na tela. Esta é uma boa maneira de fornecer opções de dimensionamento para aplicativos que não são jogos.
Se o Stretch Mode estiver definido como canvas_items, os elementos 2D serão dimensionados em relação ao tamanho base da janela e, em seguida, multiplicados pela configuração Scale. Isso pode ser exposto aos jogadores para permitir que eles ajustem a escala determinada automaticamente ao seu gosto, para melhor acessibilidade.
Se o Stretch Mode estiver definido como viewport, a resolução do viewport é dividida por Scale. Isso faz com que os pixels pareçam maiores e reduz a resolução de renderização (com um determinado tamanho de janela), o que pode melhorar o desempenho.
Para configurar a escala de esticamento em tempo de execução a partir de um script, use a propriedade get_tree().root.content_scale_factor (consulte Window.content_scale_factor).
Você também pode ajustar a escala na qual o tema padrão do projeto é gerado usando a configuração de projeto GUI > Theme > Default Theme Scale. Isso pode ser usado para criar UIs de tamanho mais lógico em resoluções base que são significativamente maiores ou menores que o padrão. No entanto, essa configuração de projeto não pode ser alterada em tempo de execução, pois seu valor é lido apenas uma vez quando o projeto inicia.
Modo de escala de esticamento
Desde o Godot 4.2, a configuração Stretch Scale Mode permite restringir o fator de escala determinado automaticamente (bem como a configuração Stretch Scale especificada manualmente) a valores inteiros. Por padrão, essa configuração é definida como fractional, o que permite a aplicação de qualquer fator de escala (incluindo valores fracionários como 2.5). Quando definida como integer, o valor é arredondado para baixo para o número inteiro mais próximo. Por exemplo, em vez de usar um fator de escala de 2.5, ele seria arredondado para baixo para 2.0. Isso é útil para evitar distorções ao exibir pixel art.
Compare esta pixel art que é exibida com o modo de esticamento viewport, com o modo de escala de esticamento definido como fractional:
O padrão de xadrez não parece "uniforme". As larguras das linhas no logotipo e no texto variam muito.
Esta pixel art também é exibida com o modo de esticamento viewport, mas desta vez o modo de escala de esticamento está definido como integer:
O padrão de xadrez parece perfeitamente uniforme. As larguras das linhas são consistentes.
Por exemplo, se o tamanho base do seu viewport for 640×360 e o tamanho da janela for 1366×768:
Ao usar
fractional, o viewport é exibido em uma resolução de 1366×768 (o fator de escala é de aproximadamente 2.133×). Todo o espaço da janela é usado. Cada pixel no viewport corresponde a 2.133×2.133 pixels na área exibida. No entanto, como as telas só podem exibir pixels "inteiros", isso levará a um dimensionamento de pixels desigual, o que resulta em uma aparência incorreta da pixel art.Ao usar
integer, o viewport é exibido em uma resolução de 1280×720 (o fator de escala é 2×). O espaço restante é preenchido com barras pretas nos quatro lados, de modo que cada pixel no viewport corresponda a 2×2 pixels na área exibida.
Esta configuração é eficaz com qualquer modo de esticamento. No entanto, ao usar o modo de esticamento disabled, ela afetará apenas a configuração Stretch Scale, arredondando-a para baixo para o valor inteiro mais próximo. Isso pode ser usado para jogos 3D que possuem uma UI em pixel art, de modo que a área visível no viewport 3D não diminua de tamanho (o que ocorre ao usar o modo de esticamento canvas_items ou viewport com o modo de escala integer).
Dica
Os jogos devem usar o modo de janela Exclusive Fullscreen, em oposição ao Fullscreen, que foi projetado para evitar que o Windows trate automaticamente a janela como se fosse tela cheia exclusiva.
O Fullscreen deve ser usado por aplicativos GUI que desejam usar transparência por pixel sem o risco de tê-la desativada pelo sistema operacional. Ele consegue isso deixando uma linha de 1 pixel na parte inferior da tela. Em contraste, o Exclusive Fullscreen usa o tamanho real da tela e permite que o Windows reduza o jitter e o atraso de entrada (input lag) para jogos em tela cheia.
Ao usar a escala inteira, isso é particularmente importante, pois a redução de altura de 1 pixel do modo Fullscreen pode fazer com que a escala inteira use um fator de escala menor do que o esperado.
Cenários comuns de casos de uso
As configurações a seguir são recomendadas para suportar diferentes resoluções e aspect ratio's.
Jogo para desktop
Non-pixel art:**
Defina a largura base da janela para
1920e a altura da janela para1080. Se você tiver uma tela menor que 1920×1080, defina Window Width Override e Window Height Override para valores mais baixos para tornar a janela menor quando o projeto iniciar.Como alternativa, se o seu alvo principal forem dispositivos de ponta, defina a largura base da janela para
3840e a altura da janela para2160. Isso permite que você forneça recursos 2D de maior resolução, resultando em visuais mais nítidos ao custo de maior uso de memória e tamanhos de arquivo. Você também desejará aumentar GUI > Theme > Default Theme Scale para un valor entre2.0e3.0para garantir que os elementos da UI permaneçam legíveis.Observe que isso tornará texturas sem mipmaps granuladas em dispositivos de baixa resolução, portanto, certifique-se de seguir as instruções descritas em Reduzindo o serrilhado no subdimensionamento (downsampling).
Defina o modo de esticamento para
canvas_items.Defina a proporção de esticamento para
expand. Isso permite suportar múltiplas proporções e faz melhor uso de telas altas de smartphones (como proporções 18:9 ou 19:9).Configure as âncoras dos nós Control para se ajustarem aos cantos corretos usando o menu Layout.
Para jogos 3D, considere expor a escala de resolução no menu de opções do jogo para permitir que os jogadores ajustem a resolução de renderização 3D separadamente dos elementos da UI. Isso é útil para ajuste de desempenho, especialmente em hardwares mais modestos.
Pixel art:
Defina o tamanho base da janela para o tamanho do viewport que você pretende usar. A maioria dos jogos de pixel art usa tamanhos de viewport entre 256×224 e 640×480. 640×360 é uma boa linha de base, pois escala para 1280×720, 1920×1080, 2560×1440 e 3840×2160 sem nenhuma barra preta ao usar a escala inteira. Tamanhos de viewport maiores exigirão o uso de artes de maior resolução, a menos que você pretenda mostrar mais do mundo do jogo em um determinado momento.
Defina o modo de esticamento para
viewport.Defina a proporção de esticamento para
keeppara forçar uma única proporção de tela (com barras pretas). Como alternativa, você pode definir a proporção de esticamento paraexpandpara suportar múltiplas proporções.Se estiver usando a proporção de esticamento
expand, configure as âncoras dos nós Control para se ajustarem aos cantos corretos usando o menu Layout.Defina o modo de escala de esticamento para
integer. Isso evita que ocorra um dimensionamento irregular dos pixels, o que faz com que a pixel art não seja exibida como pretendido.
Nota
O modo de esticamento viewport fornece renderização em baixa resolução que é então esticada para o tamanho final da janela. Se você não se importa que os sprites possam se mover ou girar em posições de "sub-pixel" ou deseja ter um viewport 3D de alta resolução, você deve usar o modo de esticamento canvas_items em vez do modo viewport.
Jogo móvel no modo paisagem
O Godot está configurado para usar o modo paisagem por padrão. Isso significa que você não precisa alterar a configuração de orientação de tela do projeto.
Defina a largura base da janela para
1280e a altura da janela para720.Como alternativa, se o seu alvo principal forem dispositivos de ponta, defina a largura base da janela para
1920e a altura da janela para1080. Isso permite que você forneça recursos 2D de maior resolução, resultando em visuais mais nítidos ao custo de maior uso de memória e tamanhos de arquivo. Muitos dispositivos têm telas de resolução ainda mais alta (1440p), mas a diferença para 1080p é quase invisível devido ao tamanho pequeno das telas dos smartphones. Você também desejará aumentar GUI > Theme > Default Theme Scale para um valor entre1.5e2.0para garantir que os elementos da UI permaneçam legíveis.Observe que isso tornará texturas sem mipmaps granuladas em dispositivos de baixa resolução, portanto, certifique-se de seguir as instruções descritas em Reduzindo o serrilhado no subdimensionamento (downsampling).
Defina o modo de esticamento para
canvas_items.Defina a proporção de esticamento para
expand. Isso permite suportar múltiplas proporções e faz melhor uso de telas altas de smartphones (como proporções 18:9 ou 19:9).Configure as âncoras dos nós Control para se ajustarem aos cantos corretos usando o menu Layout.
Dica
Para dar melhor suporte a tablets e telefones dobráveis (que frequentemente apresentam telas com proporções próximas a 4:3), considere usar uma resolução base que tenha uma proporção de 4:3, seguindo o restante das instruções aqui. Por exemplo, você pode definir a largura base da janela para 1280 e a altura base da janela para 960.
Jogo móvel no modo retrato
Defina a largura base da janela para
720e a altura da janela para1280.Como alternativa, se o seu alvo principal forem dispositivos de ponta, defina a largura base da janela para
1080e a altura da janela para1920. Isso permite que você forneça recursos 2D de maior resolução, resultando em visuais mais nítidos ao custo de maior uso de memória e tamanhos de arquivo. Muitos dispositivos têm telas de resolução ainda mais alta (1440p), mas a diferença para 1080p é quase invisível devido ao tamanho pequeno das telas dos smartphones. Você também desejará aumentar GUI > Theme > Default Theme Scale para um valor entre1.5e2.0para garantir que os elementos da UI permaneçam legíveis.Observe que isso tornará texturas sem mipmaps granuladas em dispositivos de baixa resolução, portanto, certifique-se de seguir as instruções descritas em Reduzindo o serrilhado no subdimensionamento (downsampling).
Defina Display > Window > Handheld > Orientation como
portrait.Defina o modo de esticamento para
canvas_items.Defina a proporção de esticamento para
expand. Isso permite suportar múltiplas proporções e faz melhor uso de telas altas de smartphones (como proporções 18:9 ou 19:9).Configure as âncoras dos nós Control para se ajustarem aos cantos corretos usando o menu Layout.
Dica
Para dar melhor suporte a tablets e telefones dobráveis (que frequentemente apresentam telas com proporções próximas a 4:3), considere usar uma resolução base que tenha uma proporção de 3:4, seguindo o restante das instruções aqui. Por exemplo, você pode definir a largura base da janela para 960 e a altura base da janela para 1280.
Aplicação não-jogo
Defina a largura e a altura base da janela para o menor tamanho de janela que você pretende atingir. Isso não é obrigatório, mas garante que você projete sua UI pensando em tamanhos de janela pequenos.
Mantenha o modo de esticamento em seu valor padrão,
disabled.Mantenha a proporção de esticamento (Stretch Aspect) em seu valor padrão,
keep(seu valor não será usado já que o modo de esticamento édisabled).Você pode definir um tamanho mínimo de janela definindo
get_window().min_sizena função_ready()de um script. Isso evita que o usuário redimensione o aplicativo abaixo de um certo tamanho, o que poderia quebrar o layout da UI.Adicione uma opção nas configurações do aplicativo para alterar a escala de esticamento do viewport raiz, de modo que a UI possa ser aumentada para se adequar a telas hiDPI. Consulte também a seção sobre suporte a hiDPI abaixo.
Suporte a hiDPI
Por padrão, os projetos do Godot são considerados cientes de DPI (DPI-aware) pelo sistema operacional. Isso é controlado pela configuração de projeto Display > Window > DPI > Allow hiDPI, que deve ser deixada ativada sempre que possível. Desativar a ciência de DPI pode quebrar o comportamento de tela cheia no Windows.
Como os projetos do Godot são cientes de DPI, eles podem aparecer com um tamanho de janela muito pequeno ao serem iniciados em uma tela hiDPI (proporcionalmente à resolução da tela). Para um jogo, a maneira mais comum de contornar esse problema é deixá-los em tela cheia por padrão. Alternativamente, você pode definir o tamanho da janela na função _ready() de um autoload de acordo com o tamanho da tela.
Para garantir que os elementos 2D não apareçam pequenos demais em telas hiDPI:
Para jogos, use os modos de esticamento
canvas_itemsouviewportpara que os elementos 2D sejam redimensionados automaticamente de acordo com o tamanho atual da janela.Para aplicativos que não sejam jogos, use o modo de esticamento
disablede defina a escala de esticamento para um valor correspondente ao fator de escala da tela na função_ready()de um autoload. O fator de escala da tela é definido nas configurações do sistema operacional e pode ser consultado usando screen_get_scale. Este método está atualmente implementado no Android, iOS, Linux (apenas Wayland), macOS e Web. Em outras plataformas, você terá que implementar um método para adivinhar o fator de escala da tela com base na resolução da tela (com uma configuração para permitir que o usuário substitua isso, se necessário). Essa é a abordagem usada atualmente pelo editor do Godot.
A configuração Allow hiDPI só é eficaz no Windows e no macOS. Ela é ignorada em todas as outras plataformas.
Nota
O próprio editor do Godot é sempre marcado como ciente de DPI. Executar o projeto a partir do editor só será ciente de DPI se Allow hiDPI estiver ativado nas Configurações do Projeto.
Sobreamostragem de fontes e imagens
O Godot suporta um processo chamado oversampling (sobreamostragem), que se refere à renderização automática de texturas a partir de sua fonte vetorial original quando o fator de escala do viewport muda. Isso garante que as texturas de fontes e imagens permaneçam nítidas em qualquer resolução.
A sobreamostragem de fontes vem ativada por padrão, mas pode ser desativada desmarcando GUI > Fonts > Dynamic Fonts > Use Oversampling nas Configurações do Projeto.
A sobreamostragem de imagem vem desativada por padrão, e pode ser ativada para imagens específicas em formato SVG alterando seu tipo de importação para DPITexture na aba Import. Outros formatos de imagem não suportam sobreamostragem, pois armazenam dados em bitmap em vez de vetores.
O editor realiza a sobreamostragem automaticamente ao dar zoom no editor 2D, o que permite pré-visualizar como a sobreamostragem ficará em fatores de escala específicos. Isso pode ser desativado desmarcando View > Auto Resample CanvasItems no topo do viewport do editor 2D.
A sobreamostragem também pode ser aplicada de acordo com a propriedade Scale do Node2D ou do Control. Esse comportamento de sobreamostragem baseada em escala vem desativado por padrão, mas pode ser ativado definindo Oversampling with Scale no inspetor para Enabled no nó desejado. Isso é útil para nós que podem ter sua escala alterada em tempo de execução, como fatores de escala personalizados para certos elementos da UI, como miras. No entanto, lembre-se de que isso pode exigir bastante do processador se a escala mudar com frequência, pois a textura precisa ser renderizada novamente a cada vez.
Para melhores resultados, o nó deve usar uma escala uniforme. Escalas não uniformes funcionarão, mas podem resultar em aliasing (serrilhado) no eixo menor, pois a sobreamostragem é sempre aplicada uniformemente.
Nota
A propriedade offset_transform_enabled do Control é levada em consideração pela sobreamostragem baseada em escala, mas apenas se offset_transform_visual_only estiver desativada. Quando offset_transform_visual_only está ativada, ela não afeta a escala real do nó (como a usada para coordenadas de entrada), mas apenas sua representação visual. Portanto, ela é ignorada pela sobreamostragem.
Reduzindo o serrilhado no subdimensionamento (downsampling)
Se o jogo tiver uma resolução base muito alta (por exemplo, 3840×2160), pode surgir serrilhado ao reduzir a resolução para algo consideravelmente menor, como 1280×720.
Para resolver isso, você pode ativar mipmaps em todas as suas texturas 2D. No entanto, ativar mipmaps aumentará o uso de memória, o que pode ser um problema em dispositivos móveis de baixo custo.
Para imagens SVG, você também pode alterar o tipo de importação delas para DPITexture na aba Import para se beneficiar da sobreamostragem automática descrita acima. Isso evita o serrilhado ao rasterizar novamente a textura quando o fator de escala muda.
Trabalhando com proporções de tela
Uma vez resolvido o dimensionamento para diferentes resoluções, certifique-se de que sua interface de usuário também se adapte a diferentes proporções de tela. Isso pode ser feito usando âncoras e/ou containers.
Dimensionamento do campo de visão (Field of view)
A propriedade Keep Aspect do nó Camera 3D tem como padrão o modo de dimensionamento Keep Height (também chamado de Hor+). Esse costuma ser o melhor valor para jogos de desktop e jogos móveis em modo paisagem, pois as telas widescreen usarão automaticamente um campo de visão mais amplo.
No entanto, se o seu jogo 3D for feito para ser jogado em modo retrato, pode fazer mais sentido usar Keep Width (também chamado de Vert-). Dessa forma, smartphones com uma proporção de tela mais alta que 16:9 (por exemplo, 19:9) usarão um campo de visão mais alto, o que é mais lógico aqui.
Dimensionando elementos 2D e 3D de formas diferentes
Para renderizar o 3D em uma resolução diferente dos elementos 2D (como a UI), use a funcionalidade de escala de resolução do Godot. Isso permite que você controle o fator de escala de resolução usado para o 3D sem a necessidade de usar um nó Viewport separado. Isso pode ser usado tanto para melhorar o desempenho, renderizando o 3D em uma resolução mais baixa, quanto para melhorar a qualidade por meio de supersampling.