Uma das vantagens mais óbvias dos dispositivos ChromeOS são as telas grandes e bonitas e a facilidade com que você pode usar monitores externos. Tanto espaço na tela oferece muito potencial para jogos, mas usá-lo bem pode exigir um pouco mais de reflexão e trabalho de design.
Mudanças de orientação e configuração
Alguns apps para dispositivos móveis são projetados especificamente para smartphones pequenos e têm a orientação bloqueada no modo retrato. Isso oferece algumas vantagens aparentemente rápidas, reduzindo o número de mudanças de configuração que o jogo provavelmente vai receber e o número de layouts diferentes necessários. No entanto, essa escolha pode trazer algumas surpresas ocultas. Ao optar por não processar mudanças de orientação, muitos apps não estarão preparados para outras mudanças de configuração, como redimensionamento de janelas, conexão de teclado, telas externas etc. Isso pode causar falhas e reinicializações inesperadas. Consulte mudanças de tempo de execução para mais informações. Embora essas mudanças também aconteçam em smartphones, elas são frequentes em dispositivos dobráveis e ChromeOS e precisam ser bem processadas.
Além disso, em dispositivos de tela grande com telas de paisagem ou dobráveis com proporções mais quadradas, os jogos com orientações retrato fixas vão aparecer com grandes barras pretas na lateral.
Alguns outros jogos para smartphone podem bloquear os apps no modo paisagem. Os usuários de tablets ou dispositivos conversíveis serão obrigados a segurar o aparelho na orientação paisagem, o que pode ser mais agressivo do que em um smartphone e prejudicar a experiência do jogo. Em tablets e dispositivos conversíveis de tela grande, é possível que o jogo tenha espaço suficiente no modo retrato. Para algumas pessoas, pode ser mais confortável segurar o dispositivo nessa orientação, permitindo que elas interajam com o jogo por mais tempo.
Dependendo do escopo e da maturidade dos seus jogos, há diferentes maneiras de resolver isso. O ideal é que o jogo se ajuste dinamicamente a diferentes tamanhos de tela, oferecendo uma experiência imersiva e aprimorada para usuários com telas maiores. Outra abordagem é encontrar maneiras criativas de preencher o espaço preto vazio com informações úteis, como estatísticas, mapas ou janelas de chat, ou incluir imagens relevantes para o jogo como plano de fundo em vez do preto, o que proporciona um enquadramento melhor para a jogabilidade principal.
Sempre que possível, permita que os usuários usem o app nas duas orientações, quando o tamanho da tela permitir.
Exemplo 1

Um jogo de quebra-cabeça é um jogo Android avançado projetado para smartphones na orientação retrato. Em telas grandes na orientação paisagem, ele é executado com barras pretas na lateral. Como o jogo tinha uma base de usuários grande e ativa e o desenvolvedor estava se concentrando no próximo título, ele optou por adicionar uma imagem com foco suave ao plano de fundo de cada nível e menu para enquadrar o jogo, sem exigir uma reescrita da interface. Como o próximo jogo está em desenvolvimento ativo, o desenvolvedor está incluindo suporte para paisagem no novo título.
Exemplo 2

Um jogo de corrida de carros projetado para dispositivos móveis é bloqueado no modo paisagem para otimizar o espaço da tela para smartphones. Recentemente, usuários de tablets e do ChromeOS têm reclamado da dificuldade de jogar e pedido suporte para o modo retrato. O desenvolvedor inclui uma verificação de tamanho da tela no código e, se a tela for grande o suficiente, o modo retrato será permitido. Para ainda permitir a visão grande angular necessária para o jogo, o conteúdo é colocado no meio da tela, enquanto uma barra de interface do usuário adicional do som do carro aparece na parte de baixo da tela, permitindo que os usuários mudem facilmente a estação de rádio. Além disso, as estatísticas de mapa e corrida são movidas para a parte de cima da tela, liberando a visão do para-brisa e melhorando a jogabilidade.
Consulte também as diretrizes para telas grandes do Android e a documentação sobre tamanhos de tela do Android.
Capacidade de várias janelas
Os jogos geralmente oferecem aos usuários uma experiência imersiva em tela cheia. No entanto, alguns usuários em computadores ou dispositivos dobráveis gostam de ter serviços de chat, música ou streaming de vídeo abertos e visíveis ao mesmo tempo em uma janela separada. Se eles estiverem gravando ou compartilhando a própria tela, também pode ser útil ter outras janelas abertas e visíveis.
A capacidade de várias janelas é o comportamento padrão para apps e jogos Android, o que se aplica a desktops ChromeOS, bem como smartphones e tablets no modo de tela dividida. Se você não quiser que o jogo seja redimensionado, declare que ele não pode ser redimensionado em AndroidManifest.xml.
android:resizeableActivity="false"
Há algumas considerações importantes se o jogo puder ser redimensionado:
- Quando a janela é redimensionada, por padrão, o Android "destrói" e "recria" o jogo. Consulte ciclo de vida do Android. O jogo precisa acompanhar o estado durante essas recriações (consulte a documentação do ViewModel do Jetpack) ou processar manualmente essas mudanças de configuração e evitar a recriação, fazendo com que o mecanismo de jogo processe o novo tamanho da tela. Para mais informações, assista este vídeo da Game Developer Conference 2019.
- Processamento correto de
onPausecaso o app esteja visível eSTARTED, mas nãoRESUMED. Consulte Ciclo de vida do modo de várias janelas. - Considere diferentes proporções para janelas redimensionadas (corte x escalonamento de recursos)
Leia mais sobre o gerenciamento de janelas.
Modo de tela inteira
Quando o jogo está sendo executado em uma janela de tela cheia, talvez você queira colocá-lo no modo imersivo para remover as bordas da janela e outros elementos da tela que causam distração. Consulte a documentação de tela cheia do Android para mais informações.
private fun hideSystemUI() { // Enables regular immersive mode. window.decorView.systemUiVisibility = ( View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN) }