ChromeOS デバイスの最も明らかな利点の 1 つは、大画面の美しさと、外部モニターを簡単に使用できることです。画面の広さはゲームに大きな可能性をもたらしますが、それをうまく活用するには、追加の検討と設計作業が必要になる場合があります。
画面の向きと構成の変更
一部のモバイルアプリは小型のスマートフォン向けに設計されており、向きが縦向きに固定されています。これにより、ゲームが受け取る可能性のある構成変更の数を減らし、必要なレイアウトの数を減らすことで、一見するとすぐに成果が得られるように見えます。ただし、この選択には隠れた落とし穴があります。向きの変更を処理しないことを選択すると、多くのアプリはウィンドウのサイズ変更、キーボードの接続、外部ディスプレイなどの他の構成の変更に対応できなくなります。これにより、予期しないクラッシュや再起動が発生する可能性があります。詳しくは、実行時の変更をご覧ください。これらの変更はスマートフォンでも発生しますが、折りたたみ式デバイスや ChromeOS デバイスでは頻繁に発生するため、適切に処理する必要があります。
また、横向きの画面を備えた大画面デバイスや、アスペクト比が正方形に近い折りたたみ式デバイスでは、縦向きが固定されたゲームは左右に大きな黒いバーが表示されます。
他のスマートフォン向けゲームでは、アプリを横向きモードにロックすることを選択する場合があります。タブレットやコンバーチブル デバイスのユーザーは、デバイスを横向きに持つことを強制されるため、スマートフォンよりも操作性が悪く、ゲームの体験が損なわれる可能性があります。大画面のタブレットやコンバーチブルでは、縦向きモードで十分なスペースが確保されている可能性があります。デバイスをその向きで持つ方が快適なユーザーもいるため、ゲームを長時間プレイできるようになります。
ゲームの範囲と成熟度に応じて、さまざまな方法で対処できます。理想的には、ゲームがさまざまな画面サイズに動的に対応し、大画面のユーザーに没入感のある優れたエクスペリエンスを提供できることです。別の方法としては、統計情報、地図、チャット ウィンドウなどの有用な情報を黒い空白部分に表示したり、黒い部分の代わりにゲームに関連する画像を背景として使用して、メインのゲームプレイをより見栄えよくフレームに収めたりする方法があります。
可能な場合は、画面サイズが許す限り、ユーザーがアプリを両方の向きで使用できるようにします。
例 1

パズルゲームは、縦向きのスマートフォン向けに設計された大人向けの Android ゲームです。横長の大きな画面では、左右に黒いバーが表示されます。このゲームにはアクティブ ユーザーが多数おり、デベロッパーは次のタイトルに注力しているため、UI の書き換えを必要とせずにゲームをフレームに収めるため、各レベルとメニューの背景にソフトフォーカス画像を挿入することにしました。次のゲームの開発が活発に進められているため、デベロッパーは新しいタイトルに横向きモードのサポートを含めています。
例 2

モバイル向けに設計されたカーレース ゲームは、スマートフォンの画面領域を最適化するために横向きモードに固定されています。最近、タブレットと ChromeOS のユーザーから、プレイが難しいという苦情や、縦向きモードのサポートを求める声が寄せられています。デベロッパーがコードに画面サイズのチェックを含めており、画面が十分に大きい場合はポートレート モードが許可されます。ゲームに必要な広角ビューを維持するため、コンテンツは画面の中央に配置され、画面の下部には追加のカーオーディオ UI バーが表示されます。これにより、ユーザーはラジオ局を簡単に変更できます。また、地図とレースの統計情報は画面の上部に移動され、フロントガラスのビューが確保され、ゲームプレイが改善されます。
Android 大画面のガイドラインと Android の画面サイズのドキュメントもご覧ください。
マルチ ウィンドウ機能
ゲームは、没入感のある全画面エクスペリエンスをユーザーに提供することがよくあります。ただし、パソコンや折りたたみ式デバイスを使用しているユーザーの中には、チャット、音楽、動画ストリーミング サービスを別のウィンドウで同時に開いて表示したいという方もいます。自分の画面を録画または共有している場合は、追加のウィンドウを開いて表示しておくと便利です。
マルチウィンドウ機能は Android アプリとゲームのデフォルトの動作であり、ChromeOS デスクトップだけでなく、分割画面モードのスマートフォンやタブレットにも適用されます。ゲームのサイズ変更を禁止する場合は、AndroidManifest.xml でサイズ変更不可であることを宣言します。
android:resizeableActivity="false"
ゲームのサイズ変更が可能な場合は、以下の点に注意してください。
- ウィンドウのサイズが変更されると、デフォルトで Android はゲームを「破棄」して「再作成」します(Android のライフサイクルを参照)。ゲームは、これらの再作成中に状態を適切に追跡する(Jetpack ViewModel のドキュメントを参照)か、これらの構成変更を手動で処理して再作成を防ぎ、ゲームエンジンに新しい画面サイズを処理させる必要があります。詳しくは、Game Developers Conference 2019 のこちらの動画をご覧ください。
- アプリが表示されていて
STARTEDであるが、RESUMEDではない場合に、onPauseを正しく処理します。マルチウィンドウのライフサイクルをご覧ください。 - サイズ変更されたウィンドウのさまざまなアスペクト比を検討する(アセットの切り抜きとスケーリング)
詳しくは、ウィンドウ管理をご覧ください。
全画面モード
ゲームが全画面ウィンドウで実行されている場合、没入モードにしてウィンドウの境界線やその他の邪魔な画面要素を削除することが望ましい場合があります。詳しくは、Android の全画面表示に関するドキュメントをご覧ください。
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) }