ChromeOS 裝置最明顯的優點之一,就是美麗的大螢幕,以及輕鬆使用外接螢幕。大螢幕提供充足的空間,讓遊戲有許多發揮潛力,但要善用這些空間,可能需要額外的思考和設計工作。
螢幕方向和設定變更
部分行動應用程式專為小型手機設計,且方向鎖定為直向。這項做法可減少遊戲可能收到的設定變更次數,並減少所需的不同版面配置數量,因此看似能快速獲得成效。不過,這個選擇可能會帶來一些隱藏的驚喜 - 如果選擇不處理螢幕方向變更,許多應用程式將無法因應其他設定變更,例如視窗大小調整、鍵盤連接、外接螢幕等。這些情況可能會導致應用程式意外當機和重新啟動,詳情請參閱執行階段變更。雖然這些變更也會發生在手機裝置上,但折疊式裝置和 ChromeOS 裝置上更常發生,因此應妥善處理。
此外,如果遊戲採用固定直向模式,在大螢幕裝置上以橫向螢幕或長寬比較接近正方形的折疊式裝置上,遊戲畫面兩側會出現大黑邊。
其他以手機為主的遊戲可能會選擇將應用程式鎖定為橫向模式。平板電腦或可轉換式裝置的使用者必須將裝置橫向放置,這可能比手機更具侵入性,並降低遊戲體驗。對於大螢幕平板電腦和可轉換式裝置,遊戲在直向模式下可能會有足夠的空間。某些使用者可能會覺得這樣拿著裝置比較舒適,因此能長時間與遊戲互動。
視遊戲的範圍和成熟度而定,有不同的解決方法。理想情況下,遊戲可以動態調整不同螢幕大小,為大螢幕使用者提供更優質的沉浸式體驗。另一種做法是發揮創意,在空白黑框中填入實用資訊,例如數據、地圖或聊天視窗,或是以遊戲相關圖片做為背景,取代黑框,為主要遊戲畫面提供更美觀的框架。
盡可能讓使用者在螢幕尺寸允許的情況下,以兩種方向使用應用程式。
範例 1

益智遊戲是專為直向手機設計的成熟 Android 遊戲,在大螢幕上以橫向模式執行時,兩側會顯示黑邊。由於這款遊戲擁有龐大的活躍使用者群,且開發人員正專注於下一個遊戲,因此他們選擇在每個關卡和選單的背景中加入柔焦圖片,為遊戲畫面加上邊框,而不必重寫 UI。由於開發人員正在積極開發下一款遊戲,因此在新遊戲中加入橫向模式支援。
範例 2

專為行動裝置設計的賽車遊戲會鎖定為橫向模式,以充分利用手機螢幕空間。近來,平板電腦和 ChromeOS 使用者紛紛抱怨難以玩遊戲,並要求支援直向模式。開發人員會在程式碼中加入螢幕大小檢查,如果螢幕夠大,系統就會允許直向模式。為確保遊戲仍能提供廣角視野,內容會顯示在畫面中央,畫面底部則會顯示額外的車用音響 UI 列,方便使用者變更電台。地圖和賽事統計資料會移至畫面頂端,讓擋風玻璃視野不受阻礙,提升遊戲體驗。
另請參閱「Android 大螢幕指南」和「Android 螢幕大小說明文件」。
多視窗功能
遊戲通常會提供沉浸式的全螢幕體驗。不過,部分桌機或摺疊裝置使用者喜歡在獨立視窗中開啟並顯示即時通訊、音樂或影視串流服務。如果他們要錄製或分享自己的螢幕畫面,開啟並顯示額外視窗也很有幫助。
Android 應用程式和遊戲預設支援多視窗功能,這項功能適用於 ChromeOS 桌機,以及處於分割畫面模式的手機和平板電腦。如要避免遊戲調整大小,請在 AndroidManifest.xml 中宣告遊戲不可調整大小。
android:resizeableActivity="false"
如果遊戲可調整大小,請注意以下重要事項:
- 視窗大小調整時,Android 預設會「終止」並重新「建立」遊戲 (請參閱 Android 生命週期)。遊戲應妥善追蹤這些重建作業期間的狀態 (請參閱 Jetpack ViewModel 文件),或手動處理這些設定變更並防止重建作業,讓遊戲引擎處理新的螢幕大小。詳情請參閱 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) }