construindo um jogo para diferentes telefones de resolução

7

Estou iniciando alguns testes para criar um jogo no programa Android. Até agora, tudo está funcionando e parece bom.

No entanto, eu não entendo como garantir que meu jogo pareça correto em todos os telefones, pois todos terão proporções de tela ligeiramente diferentes (e até muito diferentes em alguns telefones estranhos)

O que estou fazendo agora é criar um frustum de exibição (também pode ser orto) que defino para ir da razão -ratio para + (como já vi em muitos exemplos), no entanto, isso faz com que o formato do meu teste seja esticado e às vezes cortado pela borda da tela.

Estou inclinando meu telefone para a horizontal para fazer meus testes (um pouco extremo), mas ele ainda será renderizado corretamente se eu tiver feito as coisas corretamente.

Devo estar escalando em alguma proporção antes de desenhar ou algo assim?

Um exemplo seria muito apreciado.

PS. Eu estou fazendo um jogo 2D.

Jason
fonte

Respostas:

4

De uma perspectiva de alto nível, existem apenas algumas opções, dependendo da que é mais importante, mantendo uma proporção consistente ou garantindo que ninguém veja mais do que alguém apenas porque possui uma tela mais larga ou mais alta.

Suas opções são:

  1. Cortar as peças que não se encaixam.
  2. Esticar a tela para caber, o que você vê nas imagens esticadas.
  3. " Letterboxing ", que mantém a proporção e garante que nenhum jogador veja mais do que qualquer outro jogador devido ao tamanho da tela,
Davy8
fonte
Obrigado. Eu não me importo de cortar. você poderia me dar um ponto de partida para saber como fazer isso? (Em termos de projectar para o ecrã)
Jason
@ Jason Eu ainda sou bastante novo no desenvolvimento de jogos e os poucos jogos que fiz não tiveram que lidar com isso, então não posso dar conselhos úteis sobre a renderização, no entanto, a idéia geral é que você tenha um mecanismo de renderização que não se importa com o tamanho da tela (por exemplo, algo em que você está sempre em uma espécie de visualização "ampliada", onde vê apenas parte de algum mapa) ou possui um tamanho de tela "nativo" que deseja " re baseado em, então você reduzir ou ampliar isso para que você não tem qualquer espaço na tela por preencher, mantendo relação de aspecto e mantê-lo centrado (make informações certeza de que nenhum importante é cortada)
Davy8
3

As 3 opções da resposta de Davy8 são:

  • Cortar as peças que não se encaixam.
  • Esticar a tela para caber, o que você vê nas imagens esticadas.
  • "Letterboxing", que mantém a proporção e garante que nenhum jogador veja mais do que qualquer outro jogador devido ao tamanho da tela

Eu acrescentaria uma quarta opção, que é minha abordagem preferida. É realmente uma variação no letterboxing; o letterbox tradicional preenche o espaço extra com preto, enquanto essa abordagem preenche o espaço extra com gráficos extras. Você pode simplesmente estender a cor / imagem do plano de fundo e, possivelmente, mostrar um logotipo extra.

Outra maneira de pensar sobre isso é que eu sempre recuo a tela para todas as telas, e a tela inteira foi projetada propositadamente para ser maior do que todas as telas / proporções móveis. Portanto, sempre há gráficos extras para preencher a área da caixa de correio.

Além disso, dependendo da natureza do seu jogo (ou seja, essa alteração daria a certos jogadores uma vantagem injusta?) E de como sua interface do usuário foi projetada, você pode até mudar alguns elementos da interface do usuário para preencher o espaço extra. Pense nisso como um design de site fluido, onde o menu à direita fica à direita, independentemente da largura da janela.

jhocking
fonte
A quarta opção que você menciona é o método exato que eu uso nos meus jogos. É necessário um pouco de cálculo para acertar quando você está criando gráficos "pixel-ups" perfeitos (como zoom na área de jogo em resoluções mais altas), mas quando feito corretamente, parece realmente bom, independentemente da resolução e / ou proporção .
precisa saber é
Eu prefiro o seu quarto método também. Para telefones Android, eu uso as seguintes diretrizes: bigosaur.com/blog/31-android-resolutions-definite-answer
Milan Babuškov 2/14
0

A proporção a que você está se referindo é chamada de 'proporção'. Geralmente é calculado como a 'largura / altura' (embora, se você organizou sua janela de maneira diferente, poderia ser 'altura / largura')

Lembre-se de converter o divisor em um flutuador!

float aspect_ratio = width / (float) height;

HTH

Lutero
fonte
11
Obrigado, mas essa não foi minha pergunta. Estou ciente de que posso obter a proporção diferente executando essa divisão. minha pergunta é como usá-lo para renderizar corretamente?
Jason