Bem, como um conselho básico, no PC eu diria "não assuma que seu usuário quer rodar em tela cheia". E no modo janela, escolha sua proporção ideal e use-a diretamente.
Os usuários que eu acho que geralmente aceitam barras pretas quando apresentados com conteúdo em tela cheia. Portanto, as estratégias 3 e 4 são aceitáveis, se não ideais. Eles têm a vantagem de que você sempre sabe a quantidade de conteúdo que está renderizando: ou seja, não há bugs sorrateiros que só ocorrem quando executados em tela ampla.
Se você está tentando ser adaptável e detectando a proporção de usuários por meio da resolução da tela e mostrando o máximo de conteúdo possível, é necessário considerar o conteúdo de alta e baixa prioridade de maneira diferente. Conteúdo de alta prioridade é algo que o usuário absolutamente precisa ver na tela, se estiver fora da tela, o jogo está falhando. São elementos como HUD e UI, e o avatar do jogador e qualquer coisa com a qual eles estejam interagindo. Conteúdo de baixa prioridade é algo que, se estiver na tela, é bom, mas se estiver fora da tela, não é grande coisa. Por exemplo: gráficos de fundo e coisas razoavelmente distantes do avatar.
Supondo que você tenha uma UI / HUD que está sendo sobreposta ao topo de algum mundo 2D 'físico', isso é bastante direto. Itens de baixa prioridade são fáceis, basta garantir que a janela de exibição 4: 3 esteja centralizada nas coisas interessantes e, em seguida, desenhe o máximo possível de coisas de baixa prioridade à esquerda ou à direita. Coisas de alta prioridade no mundo 2D (por exemplo, seu personagem, inimigos que ele está enfrentando diretamente) devem sempre ser mantidas na janela de exibição 4: 3. Ou seja, o código do seu jogo não amplia a câmera para tirar proveito do espaço extra da tela, porque você terá o código do jogo agindo de maneira diferente na tela widescreen. Faça com que o código do jogo assuma que o mundo está sendo renderizado em 4: 3 e deixe apenas o código de renderização ciente de que na verdade há mais do que isso visível.
O layout dos elementos da interface do usuário / HUD pode ser abordado de duas maneiras:
- Posicionamento dinâmico: especifique todos os seus elementos em relação às bordas da tela (ou seja, nem todos em relação a 0,0). Dependendo da sua proporção, os elementos estarão mais próximos ou mais distantes do centro da tela. Prós: permite que você prenda as coisas nos cantos e faça com que elas 'funcionem'. Contras: difícil de obter o layout funcionando bem no centro e o risco de sobreposição de elementos
- Posicionamento estático conservador: coloque todos os seus elementos em 4: 3 e simplesmente desloque-os ao executar em widescreen. Prós: lógica / coordenadas de layout simples e inequívocas. Contras: deixa espaço visual morto à esquerda e à direita dos controles da interface do usuário, onde você verá o mundo 2D em segundo plano, mas não a interface do usuário.