手機遊戲趨勢和相關J2ME APIs (ZT)

概要

手機遊戲成績斐然,成爲IT產業中增長最快的部分之一。在本文中,作者 Michael Yuan 爲Java開發者着力分析了這個令人激動的新市場的特徵和當前形勢。Java 2 平臺,微型版(J2ME)是用於新一代多玩家手機遊戲的主要技術平臺。在本文的後半部分,作者Michael 還概觀了J2ME 世界裏與遊戲相關的最新的技術創新和最新的APIs。

縱觀IT產業的歷史,計算機遊戲已經成爲技術創新背後的動力之一。計算機遊戲者渴望更加強大的硬件計算能力;渴望不受不同的軟件的限制——無論是將圖形強制在人工智能(AI)上 還是網絡安全性。遊戲開發者和玩家常常是前沿計算機技術的最早的採用者。由於他們的創新天性,遊戲不再是由大型採購公司控制的技術產品——遊戲領域總是有充足的空間給那些在這方面有天分的單個創新者。

隨着技術對遊戲經驗的促進,遊戲市場持續增長。商業IT革命爲我們節省了時間和金錢,從而提高了我們的工作水平,我們因此花費更多的時間和金錢在遊戲上,來改善生活的整體質量。甚至在當今困難的經濟時代,遊戲仍保持快速增長,他仍然是盈利行業的組成部分。Java開發者應該注意到這裏蘊藏着的巨大的商機。

作爲IT產業的剩餘部分,遊戲行業中最新的熱點就是可移動性。手機遊戲將來自傳統商業公司(如Sun Microsystems 的新遊戲區)、設備生產廠(如:Nokia的 N-Gage 和Qualcomm的 Brew 設備)、和網絡經營者(如Vodafone 的內容服務)的那些原本不可能在一起的商家拉到了一起。

作爲Java開發者,我們很適合進入這個可盈利的新行業部分因爲Java 2 平臺,微型版(J2ME)是最廣泛支持手機遊戲的平臺之一。在本文中,我將站在Java 開發者的角度來討論手機遊戲的商機和麪臨的挑戰。我也將概觀重要的J2ME 規範中的藝術級的移動Java 技術。

手機遊戲特徵

手機遊戲的盈利主要是由於它們的涉及面很廣。手機已經與現代生活方式緊緊地結合在一起。他們是最普遍攜帶的個人用品中僅次於鑰匙和錢包的東西。傳統的臺式機遊戲將目標鎖定在低級趣味的人和青少年身上,而手機遊戲則每個人都可以訪問的到——隨時,隨地。儘管每個手機遊戲都不貴,但是巨大的使用量(如:每人每星期一個新遊戲)將使得這個市場商機無限並且有利可圖。但是,對於開發者來說,將控制檯遊戲遷移到手機遊戲工程很大因爲他們所面向的對象、生活方式和分佈式模型都有着極大的區別。讓我們從手機遊戲的需求談起吧。

需求

一個成功的手機遊戲大多具有以下特徵:

·易於學習: 既然手機遊戲面向的是普通消費者而不是計算機高手,那麼他們不可能深入的學習遊戲技巧。消費者不會花幾個小時去研究一個3美元的手動操作的遊戲。所以遊戲必須是一下載就可以玩的。保持遊戲的簡單是最基本的要求。

·可中斷性: 多任務處理是手機生活方式的基本特徵。手機用戶常常在任務(如等一個電子郵件或者等車)之間有一小段時間。而遊戲、日曆管理、通訊和工作數據訪問使用的是同一個設備。所以一個好的手機遊戲應該提供短時間的娛樂功能,並且允許用戶在遊戲和工作模式之間順利切換。

·基於訂閱:手機遊戲的盈利成功取決於他們巨大的使用量。一開始開發和設計每個遊戲都是昂貴的。如果一個手機遊戲開發者要賺錢的話,重要的是:同一個遊戲引擎,多個標題,基本的故事情節類似。基於訂閱的遊戲是不斷產生收入的最好方法。

·豐富的社會交互: 不管一個遊戲設計得多好,只要玩家找到了它的根本模式或者玩完了所有的遊戲路徑很快就會厭煩這個遊戲。對於一個基於訂閱的遊戲,重要的是與別的玩家合作以增強所玩遊戲的智力和隨機性。在今天紛繁複雜的多玩家遊戲中具有豐富社會交互的遊戲證明是成功的。

·利用手機技術的優點: 鉅額的手機技術研發費用都花在提高設備和網絡的可用性和可靠性上面。因此,手機設備硬件和網絡協議與桌面/控制檯世界(如全球定位系統(GPS)擴展、條形碼掃描儀、和短消息服務(SMS)/多媒體信息服務(MMS)通訊)有着非常大的差別。好的手機遊戲應該利用那些更新的設備特徵和網絡基礎設備的優點。

·無違法內容:既然所有年齡/性別的人羣都玩手機遊戲並且常常在公共/工作場合,你應該避免明顯的暴力或者色情內容。

手機遊戲的類型

基於以上標準,最有可能成功的手機遊戲就是那些臨時小遊戲,它可爲廣泛的玩家在所有的社交場合提供娛樂。特別是,下列類型的遊戲將是明天最具有殺傷力的遊戲:

·多玩家遊戲: 這些遊戲可以提供手機訪問以便建立在線遊戲團體。或者,他們利用手機專有特徵如多媒體通訊和基於位置的服務,從而創建完全不同的社會結構。好的遊戲設計和管理是這種類型遊戲成功的關鍵。

·基於內容的遊戲:這些遊戲傳送版權的多媒體內容,如名人的圖片、視頻片斷、音頻立體聲、和私人的體育節目,給那些音樂/電影/體育迷們。它成功的關鍵就是提供值得訂閱的高品質的內容流。

·高衝擊的視頻遊戲:PC 和臺式遊戲已經從2D 進化到3D。手機遊戲也會遵循這種趨勢。現在已經出現手機3D工具箱和聽筒。但是,3D是非常資源集中型的。他們要求開發者和圖形設計者都是專家級的。專業的商店最有可能開發這些遊戲。

在手機遊戲的早期,大多數開發者都是想要玩轉設備、學習技巧和快速攻關的狂熱分子。但是,隨着更多的開發者加入這個行業,手機遊戲已經進化成涉及到專業設計師、構造師、開發者、產品經銷商、律師、和藝術家在內的主導產品。這是行業走向成熟的必然趨勢。儘管在某人的業餘時間內要開發和推銷簡單的遊戲更加困難,但是更多的專業商店將爲許多人提供更多的就業機會。

手機的價值鏈

要完全理解手機遊戲的前景,你必須理解資金是如何流動的。這種商業的價值鏈與傳統遊戲或者企業應用有着相當大的區別:

·開發者: 軟件開發者通過創建偉大的應用驅動價值鏈。但是,大多數的開發者沒有能力來處理巨大的營銷問題。他們也缺乏到達消費者的分佈式渠道。

·發行商: 遊戲發行商收集來自開發者的論題。他們建立商標名,確保遊戲的技術正確性,將遊戲升級,並且建立與無線通信公司的商業關係。他們還站在開發者的立場上處理賬目問題。並且它們一般都是與開發者共享收益。

·無線通信公司: 無線通信公司是手機遊戲分佈渠道的中心。通信公司不僅僅控制網絡而且擁有客戶信息。等於是他們決定支持哪種設備和服務。通信公司在全部收益中拿大頭。他們也通過現有的服務協議向客戶收款。

·無線設備製造商:設備生產商驅動技術更新。他們製造新的硬件並且支持開發平臺。實際上,J2ME的成功主要歸功於主要設備製造商對它的採用。設備製造商是通信公司和消費者之間的一股獨立的勢力。

·消費者: 消費者最終爲成本和鏈中所有提供者的利潤付款。消費者可從發行商的網站上購買遊戲或者通過通信公司提供的內容供應系統購買遊戲。

J2ME智能客戶端

J2ME平臺被認爲是最傑出的手機遊戲平臺,它爲開發者、設備製造商、網絡通信公司和消費者廣泛接受。它有一些非常重要的特徵對所有組織都有益。

智能客戶端的特徵

J2ME 設備是智能的。他們可在自身上處理信息。區別J2ME智能手機與前幾代手機最重要的特徵有:

·對於用戶來說,智能手機最吸引人的特徵就是不總是處於網絡連接狀態也能玩遊戲。在線模式在今天的2-2.5G 網絡中是必要的。但是在該網絡中,覆蓋很少,而且數據通信昂貴。將數據和請求網絡操作緩存到事務處理中也可顯著的減少無線網絡的使用並且提供應用的可靠性。

·智能客戶端可以使用不同的協議將後臺的遊戲服務器及其同位體(包括無線同位體和因特網同位體)集成。

·智能客戶端支持對視覺高衝擊遊戲至關重要的豐富的用戶界面(UI)。

·智能客戶端可以訪問手機專用網絡(如SMS和MMS)或者設備擴展(如GPS)特徵。這使得開發完全利用手機生活方式的優點的遊戲成爲可能。

·智能客戶端通過高級加密和數字簽名算法提供更強大、更靈活的安全性。有了智能客戶端,我們有可能在因特網上傳遞感性的私人數據以及建立有效的在線社會。

便攜式平臺

相對其他智能客戶端平臺而言,J2ME有一個獨特的優點:它是專爲手機設計的。J2ME應用可運行在不同投資商的不同設備上。這在高度競爭性的手機設備行業中是特別重要的,因爲存在大量的不同設備。所有主要的智能手機制造商都承認支持J2ME平臺。代碼的可攜帶性對於那些想要維持單一代碼庫的消費者的數目不斷擴大的開發者來說是至關重要的。

J2ME解決了“最低公共統治者”的問題,這個問題以前一直困擾着桌面Java。J2ME通過定義一個包括配置、配置文件和可選軟件包在內的多層結構解決了這個問題。迄今爲止,在手機遊戲行業中,最流行的J2ME平臺是手機平臺設備配置文件(MIDP)和在MIDP之上建立的可選軟件包。在本文中,我重點討論MIDP V2平臺。


因爲J2ME應用在不同設備上都是便攜式的,他們常常可在網絡上下載和執行。如果沒有正確的防範,它則爲用戶和無線通信公司冒着無數個安全的風險。幸運的是,Java被設計成一種安全的語言。所有字節碼應用在執行之前都要校驗;JVM在執行過程中監督應用的安全性和存儲違反問題。MIDP v2 運行時間包括一個完全特徵化的、基於域的安全管理員,它在應用的數字簽名者鑑別的基礎上賦予應用API級許可。

由於J2ME的廣泛使用,手機Java開發者已經成長爲一個相當大的市場。幾乎所有流行的Java開發工具都已經改造得適合於J2ME開發者的需要。來自第三組織提供者的J2ME庫和組件容易得到。那些庫中的許多庫提供針對於它們的Java2平臺標準版(J2SE)對應物的類似的特徵。例如:IBM服務管理框架(SMF)支持PDAs 上的Java servlets; PointBase 微型版提供的用於手機相關數據庫的方法類似於Java數據庫連接(JDBC)的方法; IAIK JCE-ME支持Java密碼技術擴展(JCE)的輕型版。這些工具和庫使得J2SE 開發者移植技術到手機行業中比較容易。相應的,他也爲J2ME投資商提供了大量的開發者來源。這種良性循環將有助於J2ME的成長。

APIs和工具的概觀

接下來的部分,我將概觀J2ME與遊戲相關的API並且測試他們提供給開發者的功能。

用戶界面

MIDP 運行時間提供了對手機設備的屏幕和硬件鍵的細粒度控制。所有的MIDP UI類都是從 javax.microedition.Displayable接口上繼承而來:

·Screen類是用於高級小器件如Alert, List, Form, 和 TextBox的基礎。MIDP 運行時間控制如何顯示那些高級UI類以及如何在特殊設備的UI慣例的基礎之上安排功能鍵。MIDP 高級UI小器件最適合用於文本控制。在高級UI 類中,Form 類是最靈活的。你可以指定 Form屏幕的佈局並且可以給它添加一些東西如:StringItem, TextField, DateField, ChoiceGroup, 和 Gauge。

MIDP v2 規範將兩個重要的創新帶進了高級UI中:首先,它引入Spacer 和ImageItem 項,從而允許同一個Form 上的混合文本和圖像顯示;其次,他引入CustomItem 類,從而爲開發者提供了設計和實現自己的項級別的窗口小器件的機制。開發者對CustomItem 對象,包括像素級別的繪畫和內部事件處理在內,擁有最終控制權。

·Canvas類是低級別MIDP UI的基礎。它提供對在整個屏幕之上的像素級繪畫的訪問以及對用於所有硬件鍵的自定義映射的訪問。你可以只創建Canvas的子類並且跳過用於顯示邏輯的paint()方法;用於鍵事件的 keyPressed(), keyRepeated(), 和keyReleased()方法;以及用於每個事件中指示器和觸摸屏的pointerPressed(), pointerDragged()和 pointerReleased()方法。

·GameCanvas 類繼承於Canvas類。他是MIDP v2 遊戲API的一部分並且爲遊戲開發提供了便利機制。例如:在GameCanvas子類中,每次你修改時不需要跳過paint() 方法就可以描繪整個屏幕。你可直接從getGraphics()方法中得到Graphics 對象並且在該對象上繪圖。當你需要更新顯示時,你可以調用flushGraphics()方法。但是 你使用flushGraphics()方法只可以更新屏幕的一部分。相比Canvas 類的單一方法而言,GameCanvas類使得我們易於保持圖形狀態,易於迅速更新屏幕的動畫部分。類似的, GameCanvas 類使用和Canvas 類中回叫方法相反的getKeyStates()方法,爲獲得鍵狀態提供了一個便利的途徑。這使得複雜遊戲屏幕類中的執行流動性要靈活的多。
MIDP v2規範爲 javax.microedition.lcdui.game 軟件包中的遊戲應用程序定義了一個完整的API。除了GameCanvas類之外,他還提供了支持平鋪或者動畫遊戲背景圖片的Layer 類。遊戲API也提供了處理動畫圖片和衝突的Sprite類。他們是2D圖形遊戲中的基本組件。在3D前沿,Java規範請求(JSR) 184 試圖標準化手機上的Java 3D API 。它做出了極好的改進。開發者和藝術家需要的J2ME 3D工具現在在SuperScape (見 Resources)中可以得到。大型設備製造商在他們的高端智能手機設備上迅速的轉變,以支持這種新API。



Figure 4. Java 3D games available from SuperScape

除了標準的MIDP UI 和遊戲APIs之外,也存在幾種其它的MIDP UI工具箱。他們要麼提供設備的專有功能,要麼旨在支持更好的可促進遊戲開發的高級UI:

·Nokia UI 軟件包提供對Nokia 手機上的聲音、亮度和振動組件的控制。它也支持用於更加專業級的遊戲的全屏模式。

·Motorola 輕型小器件工具箱(LWT) 是一個獨立的用於Motorola 手機的窗口工具箱。

·Nextel Open Windowing Toolkit (OWT)是Motorola和Nextel聯合開發的開源工具箱。 它運轉一個容器模型來控制佈局和其他UI組件,這是桌面UI開發者所熟悉的。OWT基於Canvas類並且運行在所有的MIDP手機上。但是,如果你使用OWT庫,你必須將它包括在你的分佈式MIDlet組中。

·Synclast UI 項目開發了一個支持容器模型的開源UI軟件包。在MIDP v1 Canvas 類的基礎上,他支持許多MIDP v2小器件。因此,它允許MIDP v2應用做一點小小的修改之後運行在今天的MIDP v1設備上。有了OWT,你必須將Synclast庫捆綁在分佈式應用中。

總的來說,MIDP平臺爲豐富的UI遊戲提供了多種選擇。

網絡和後臺集成

正如我前面提到的一樣,手機遊戲的未來就是聯網的多玩家遊戲。J2ME中的聯網可通過一般連接框架(GCF)來獲得支持。GCF的核心就是工廠類 javax.microedition.io.Connector。你可以傳遞一個協議和地址字符串到靜態方法Connector.open()上,以便獲得到遠程主機上的連接對象:

·HTTP協議支持在MIDP中是強制性的。如果你傳遞http://hostname:port 連接字符串給Connector.open()方法,則返回 HttpConnection對象。你可以直接打開連接上的輸入/輸出數據流並且編寫/接收到遠程主機/來自遠程主機的數據。

·Unix插座,用戶自尋址協議(UDP) 連接、或者直接TCP/IP連接在某些實現中也得到支持。但是,你應該注意到手機網絡與有線因特網有着根本區別。有些網絡在HTTP層的開頭模擬插座連接。所以,直接插座沒必要出現在性能增加上。對於多數場合我推薦使用HTTP。

·J2ME無線通訊API (WMA)支持GCF中手提設備之間的SMS通訊。你可以通過sms://phone_number:port獲得的MessageConnection對象發送SMS信息 給另一個手機。你也可以打開一個“服務器” 連接,該連接可使用sms://port 字符串聽取到來的SMS信息。到來的SMS信息可以同步處理也可以異步護理。

·在 MIDP v2中,“服務器”SMS 連接可使用J2ME運行時間管理的推動註冊進行註冊。它允許開發者調用某個信息到達者之上的信息處理MIDlet。

在協議級別之上,J2ME支持傳遞結構化應用數據的幾種方法:

·MIDP DataInputStream和 DataOutputStream 類支持 Java的便利 I/O 方法 (如 writeInt(), writeUTF(), writeFully()等等以及相應的readXXX()方法)(非)串行化普通的數據值和對象。在通訊通道的兩邊都使用成對的writeXXX() 和readXXX()方法可大大的簡化開發者的工作並且增加終端對終端應用的強度。

·如果你需要更多結構化的數據交換的話,MIDP平臺也支持幾種XML解析器。XML 解析器支持用於XML(SAX)、XmlPull 、和解析範例的輕型文檔對象模型(DOM)的簡單API(SI)。JSR 172 (J2ME Web 服務規範)正在開發一種用於J2ME的標準XML解析器API。

·基於簡單對象訪問協議(SOAP)的Web服務是未來終端對終端的集成模式。J2ME 平臺設置得很好,可通過第三組織工具箱如kSOAP (見Resources)以及標準API如JSR 172來支持SOAP信息交換。

數據管理

在設備上的數據管理是智能客戶端遊戲中的核心特徵。J2ME強烈支持該領域:

·MIDP 上的標準數據持久性設備就是記錄存儲管理系統(RMS)。RMS 存儲線性記錄中的二進制數據(字節排列)。它不允許隨機存儲也不支持任何分層的數據結構。但是它提供搜索存儲和對搜索結果排序的限制性功能。RMS在所有MIDP設備中是強制性的。它對於大多數用途來說已經足夠了。但是,MIDP自身並不提供使用後臺應用程序同步RMS數據的API。JSR 230 (數據同步API)剛剛起步開發這種同步的API。

·JSR 75 (用於J2ME的PDA可選軟件包)提供對設備本地的協議獨立多點傳送(PIM)應用(如:日曆、地址薄、電子信函和任務列表)和文件系統的訪問。 PIM 數據和文件可通過設備的本地同步設備組同步到臺式計算機上。

·至於更加複雜的數據,你可以使用手機數據庫。幾種商用MIDP數據庫(包括相關數據庫和麪向對象的數據庫)和同步引擎在MIDP平臺上都可以得到(見 "High-Availability Mobile Applications" (JavaWorld, June 2003))。

多媒體

多媒體重放功能在內容驅動的手機娛樂應用中至關重要。J2ME 多媒體 API (JSR 135) 是J2ME中用於播放多媒體內容的標準框架。通過Player接口,它可播放來自多種數據源的多種音頻和視頻格式。在運行時間內傳遞給玩家的多用途的網際郵件擴充協議(MIME)類型 可指定內容格式。多媒體API的每種設備實現都支持依賴於硬件和本地玩家功能的一組不同的MIME類型。目前,幾乎所有的與多媒體API兼容的設備都支持簡單的立體聲回放。 對更加成熟的格式如MP3音頻和3GPP視頻甚至是MPEG4視頻的支持也快要出來了。

安全性

手機遊戲涉及到可下載的代碼、版權內容和財務往來。安全性對於維護用戶、開發者、發行商和通訊公司的利益都至關重要。在多玩家遊戲中有些用戶試圖通過炸開安全性的突破口攻進系統,這時安全性顯得尤爲重要。J2ME 對應用程序和通訊兩者的安全性都提供了極好的支持:

·MIDP v2 規範支持使用開發者或者發行人的數字證明書的應用程序標記。基於簽名者的鑑定(安全性領域),運行時間安全性管理者可賦予應用程序API級的訪問權。例如,來源信任度較小的應用不允許實現網絡連接或者發送SMS信息。

·MIDP v2 規範也要求支持所有手機上的HTTP。這爲因特網上的安全信息交換提供了基礎。

· 如果基於連接的HTTP對於某些應用來說仍然不夠靈活,許多第三組織的密碼技術軟件包在MIDP平臺上也有 (見"Data Security in Mobile Java Applications" (JavaWorld, December 2002))。它們允許信息二進制片斷的加密或者簽名。

·JSR 177 (用於J2ME的安全性和信任 API) 是標準化到被嵌入設備中的硬件安全單元(如訂戶識別模塊(SIM)卡)的訪問。例如:它允許J2ME開發者檢索存儲在SIM卡上的數字證明書或者使用加速硬件的加密算法。

供應和營銷

手機遊戲傳送到消費者手中是一個涉及許多組織的複雜過程。MIDP 規範包括有關over-the-air (OTA) 供應的部分。它描繪瞭如何在無線應用協議(WAP)網絡之上下載MIDP遊戲,以及Java應用管理軟件(AMS)應該如何安裝應用程序並且使他爲用戶所用。 OTA過程爲客戶端設備報告安裝狀態給服務器提供了一個反饋機制。它爲更加複雜的商業配置過程提供了技術基礎。在商業領域內,你應該考慮以下幾個重要的附加過程:

·應用必須被鑑定爲防病毒狀態並且放進通信公司支持的目錄內。

·不同客戶端設備應同時提供不同的JAR文件,該文件可最大化使用設備的功能(圖形和安裝的可選軟件包)。

·客戶的付款和給開發者的付款必須無縫處理。直接點擊的手機內的付款系統是特別重要的。

幾個商業供應方案對於通信公司和發行商來說已經可行。JSR 124 (Java 2 平臺企業版 (J2EE)客戶端供應規範)試圖通過爲客戶端配置定義一個通用的J2EE框架來標準化那些方案。用於不同OTA規範、客戶跟蹤模式和付款服務的插入程序已經得到開發和設計,並可在框架內同時工作。這種成就對於J2ME遊戲的商業成功也是非常關鍵的。

運行遊戲

在本文中,我闡釋了爲什麼帶有隨機內容的多玩家手機遊戲是遊戲行業的未來。手機設備製造商也看到了這個巨大的商機並且已經推動設備專爲手機遊戲而設計(如 Nokia N-Gage). J2ME/MIDP 是用於那些手機遊戲設備和智能手機的最重要的技術平臺之一。在讀完全文後,你應該理解手機遊戲中J2ME的優勢和弱點。另外,我還介紹了MIDP V2中與遊戲相關的關鍵性的技術革新以及它的可選軟件包。

關於作者

Michael Yuan 著有Enterprise J2ME一書。他頻繁的在J2ME、J2EE和手機企業應用方面寫稿和演講。目前,他領導一羣人爲Nokia開發平臺建立應用藍圖系列。

本文譯自:http://www.javaworld.com/javaworld/jw-11-2003/jw-1107-wireless.html?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章