編寫:dupengwei - 原文:http://developer.android.com/training/tv/games/index.html
TV屏幕為手機(jī)游戲開發(fā)者提供了大量的新思考。這些領(lǐng)域包括它的大尺寸,它的控制方案和所有玩家可以同時(shí)觀看的事實(shí)。
開發(fā)TV游戲時(shí)有兩點(diǎn)要記住,就是TV屏幕具有共享顯示器的特性,和橫向設(shè)計(jì)游戲的需求。
客廳TV帶來了多人游戲的設(shè)計(jì)挑戰(zhàn),客廳TV游戲時(shí)所有玩家都可以看到。這個(gè)問題與游戲,特別是依靠每個(gè)玩家用于隱藏信息的游戲(如紙牌游戲、戰(zhàn)略游戲)息息相關(guān)。 我們可以通過實(shí)現(xiàn)一些機(jī)制來解決一個(gè)玩家竊取另一玩家信息的問題。這些機(jī)制是:
TV總是單向顯示的:我們不能翻轉(zhuǎn)它的屏幕,且沒有縱向顯示。要總是以橫向顯示模式設(shè)計(jì)我們的TV游戲。
TV沒有觸摸屏接口,所以更重要的是獲取控制要正確,并確保玩家使用起來要直觀和有趣。處理控制器還介紹了其他一些問題需要注意,如跟蹤多個(gè)控制器,,處理斷開要適當(dāng)。
圍繞方向鍵(D-pad)控制來計(jì)劃我們的控制方案,因?yàn)檫@種控制是Android TV設(shè)備的默認(rèn)設(shè)置。玩家需要在游戲的所有方面使用方向鍵(D-pad)——不僅僅是控制核心游戲設(shè)置,而且能導(dǎo)航菜單和廣告。因此,我們還應(yīng)該確保我們的Android TV游戲不能涉及觸摸屏。例如,一個(gè)Android TV游戲不應(yīng)該告訴玩家> 點(diǎn)擊這里繼續(xù)。 如何塑造玩家使用控制器與游戲進(jìn)行互動(dòng)的方式將是實(shí)現(xiàn)良好用戶體驗(yàn)的關(guān)鍵:
返回按鈕不應(yīng)該作為切換。例如,不能使用它打開和關(guān)閉一個(gè)菜單。它應(yīng)該只能導(dǎo)航后退,breadcrumb-style,玩家之前訪問過屏幕頁面,例如:游戲界面>游戲暫停界面>游戲主界面>Android主界面。 由于返回按鈕應(yīng)該只能進(jìn)行線性導(dǎo)航(后退),我們可以使用返回按鈕離開一個(gè)游戲內(nèi)菜單(由不同的按鈕打開),回到游戲界面。更多關(guān)于導(dǎo)航設(shè)計(jì)的信息,參見Navigation with Back and Up。學(xué)習(xí)更多關(guān)于實(shí)現(xiàn)的信息,參見Providing Proper Back Navigation。
并不是所有的游戲控制器提供開始,搜索,或菜單按鈕。確保我們的UI不取決于這些按鈕的使用。
當(dāng)多個(gè)玩家玩游戲,每個(gè)都有他或她自己的控制器,做好每對(duì)“玩家-控制器”的映射是很重要的。關(guān)于如何實(shí)現(xiàn)“控制器-數(shù)量”識(shí)別的信息,參見Input Devices。
當(dāng)控制器從游戲中斷開時(shí),游戲應(yīng)該暫停,并彈出一個(gè)對(duì)話框促使斷開的玩家重新連接他或她的控制器。 對(duì)話框還應(yīng)提供排除故障的提示(如,一個(gè)彈出的對(duì)話框告訴玩家“檢查我們的藍(lán)牙連接”)關(guān)于實(shí)現(xiàn)輸入設(shè)備支持的更多信息,參見Handling Controller Actions。具體關(guān)于藍(lán)牙連接的信息,參見Bluetooth。
如果我們的游戲提供了可視化的游戲控制說明,控制器圖片應(yīng)該是免費(fèi)的、品牌化的,并且只能包含與Android兼容的按鈕。 Android兼容的控制器樣圖,點(diǎn)擊Android TV Gamepad Template (ZIP)下載。它包含一個(gè)黑底的白色控制器和一個(gè)白底的黑色控制器,是一個(gè)PNG類型的Adobe?Illustrator?文件。 http://wiki.jikexueyuan.com/project/android-training-geek/images/game-controller-buttons_2x.png" alt="game-controller-buttons_2x" /> Figure 1. 控制器說明的示例請(qǐng)使用Android TV Gamepad Template (ZIP)
有一些特殊的東西應(yīng)該包含在游戲的Android Manifest里。
Android TV主界面采用單獨(dú)一行來顯示游戲,與常規(guī)應(yīng)用分開顯示。為了讓游戲出現(xiàn)在游戲列表,設(shè)置游戲的manifest清單的android:isGame
屬性為"true"
。例如:
<application
...
android:isGame="true"
...
>
游戲控制器對(duì)于TV設(shè)備的用戶來說可能不是有效的。為了適當(dāng)?shù)耐ㄖ脩?,游戲需要(或只支持)一個(gè)控制器,我們必須在app的manifest里包含這些條目。如果我們需要一個(gè)游戲控制器,我們必須在app的manifest中包含以下條目:
<uses-feature android:name="android.hardware.gamepad"/>
如果我們的游戲使用了一個(gè)游戲控制器,但是不需要,在app的manifest里包含以下的功能條目:
<uses-feature android:name="android.hardware.gamepad" android:required="false"/>
更多關(guān)于manifest條目的信息,參見App Manifest。
如果我們的游戲集成了Google Play Game 服務(wù),我們應(yīng)該記住一些關(guān)于成果的注意事項(xiàng),登錄,保存游戲,和多人游戲。
我們的游戲應(yīng)包含至少5個(gè)(可獲取的)成果。只有一個(gè)用戶從一個(gè)受支持的輸入設(shè)備控制游戲應(yīng)該能夠獲得成就。關(guān)于成就的更多信息以及如何實(shí)現(xiàn),參見Achievements in Android。
我們的游戲應(yīng)該試圖在啟動(dòng)的時(shí)候讓用戶登錄。如果玩家連續(xù)幾次拒絕登錄后,游戲應(yīng)該停止詢問。學(xué)習(xí)更多關(guān)于登錄的信息在Implementing Sign-in on Android。
使用Google Play Services保存游戲來存儲(chǔ)保存的游戲。我們應(yīng)該講保存的游戲綁定到一個(gè)特定的谷歌賬號(hào),作為唯一標(biāo)識(shí),甚至在跨設(shè)備時(shí)也不受影響。無論玩家使用手機(jī)或TV,游戲應(yīng)該可以從同一個(gè)用戶賬號(hào)獲取到保存的游戲信息。
我們也應(yīng)該在我們的游戲的UI提供一個(gè)選項(xiàng),讓玩家刪除本地和云存儲(chǔ)端的數(shù)據(jù)。我們可能把選項(xiàng)放在游戲的設(shè)置界面。使用Play Services保存游戲的實(shí)現(xiàn)細(xì)節(jié),參見Saved Games in Android
一個(gè)游戲要提供多人游戲體驗(yàn),必須允許至少2個(gè)玩家進(jìn)入一個(gè)房間。進(jìn)一步了解Android的多人游戲信息,參見Android developer網(wǎng)站的Real-time Multiplayer和[Turn-based Multiplayer]()文檔。
提供一個(gè)一致和明顯的UI元素,讓用戶適當(dāng)?shù)耐顺鲇螒颉_@個(gè)元素應(yīng)該用方向鍵導(dǎo)航按鈕訪問,這樣做而不是依賴Home鍵提供退出功能,是因?yàn)樵谑褂貌煌目刂破鲿r(shí),若依賴Home鍵提供退出功能,這既不一致也不可靠。
不要讓android TV的游戲?yàn)g覽網(wǎng)頁。Android TV不支持web瀏覽器。
Note:我們可以使用WebView類實(shí)現(xiàn)登錄像Google+ 和 Facebook這樣的服務(wù)。
游戲經(jīng)常需要更大的帶寬提供最佳的性能,許多用戶寧愿選擇有線網(wǎng)而不愿選擇WiFi來提供性能。我們的app應(yīng)該對(duì)有線網(wǎng)和WiFi連接都進(jìn)行檢查。如果我們的app只針對(duì)TV,我們不需要檢查3G/LTE服務(wù),而移動(dòng)app則需要檢查3G/LTE服務(wù)。