手機(jī)游戲開發(fā)綜述

2006-08-05 4817 0

一、背景介紹

  現(xiàn)在的移動電話是小型的計(jì)算機(jī),它的處理能力與臺式機(jī)的標(biāo)準(zhǔn)處理能力相比很有限,但是足夠運(yùn)行一個小型的游戲。

  現(xiàn)在的手機(jī)的一個特性就是它們還是網(wǎng)絡(luò)計(jì)算機(jī),能夠高速發(fā)送和接收數(shù)字?jǐn)?shù)據(jù)。 除了語音數(shù)據(jù)以外,它們還可以發(fā)送和接收其它類型的數(shù)據(jù)。所以類似《傳奇》、《千年》這樣的網(wǎng)絡(luò)游戲也可以在手機(jī)上實(shí)現(xiàn)。
當(dāng)然就處理能力和性能而言,當(dāng)前階段的支持Java的手機(jī)很接近第二代控制臺游戲機(jī)、80年代中期的家用電腦和早期的手持游戲機(jī)。內(nèi)存通常很有限--一般128KB到500KB--雖然有些智能手機(jī)比如Nokia 3650有4 MB內(nèi)存。與PC相比,它們的輸入和顯示功能也很有限;小屏幕(許多仍然是黑白屏幕),為電話撥號優(yōu)化的小鍵盤并不針對文本輸入,以及有限的聲音處理能力。

二、移動游戲是如何實(shí)現(xiàn)的

  目前在移動電話實(shí)現(xiàn)游戲的技術(shù)主要有以下幾種:

  1、嵌入式游戲

  一些游戲在出廠前就固化在芯片中了,象Nokia的貪吃蛇就是一個最著名的例子。但由于用戶不能自己安裝新的游戲,所以它們逐漸變得不太流行了。

  2、短消息服務(wù)游戲

  短信息服務(wù)(SMS)被用來從一個手機(jī)向另一個手機(jī)發(fā)送簡短的文字信息。用戶一般為每條信息支付1毛錢的信息費(fèi)。短消息服務(wù)游戲的玩法通常是發(fā)送一條信息到某個號碼,這個號碼對應(yīng)游戲供應(yīng)商的服務(wù)器,服務(wù)器接收這條消息,執(zhí)行一些操作然后返回一條帶有結(jié)果的消息到游戲者的手機(jī)中。短消息服務(wù)不是一個特別好的用于實(shí)現(xiàn)移動游戲的技術(shù),因?yàn)樗揽坑脩糨斎胛淖?,因此本質(zhì)上它是一個命令行環(huán)境。而且它還很昂貴,即使和服務(wù)器只交換10次信息也要花費(fèi)1塊錢或者更多的錢。雖然多媒體消息服務(wù)( MMS)技術(shù)的推出使得基于消息的游戲更加具有吸引力,但是仍然不是一種重要的游戲環(huán)境,所以在此我們不會深入探討它。

  3、瀏覽器游戲

  差不多1999年以后出廠的每臺手機(jī)都有一個無線應(yīng)用協(xié)議(WAP)瀏覽器。WAP本質(zhì)上是一個靜態(tài)瀏覽載體,非常像一個簡化的Web,是為移動電話小型特征和低帶寬而專門優(yōu)化的。要玩WAP游戲的話,可以進(jìn)入游戲供應(yīng)商的URL(通常通過移動運(yùn)營商門戶網(wǎng)站的一個鏈接),下載并瀏覽一個或多個頁面,選擇一個菜單或者輸入文字,提交數(shù)據(jù)到服務(wù)器,然后瀏覽更多的頁面。WAP (1.x)版本使用獨(dú)特的標(biāo)記語言WML,允許用戶下載多個頁面,即卡片組。新版本的WAP(2.x)使用XHTML的一個子集,一次傳遞一個頁面并且允許更好的控制顯示格式。兩種版本的WAP都提供一個比SMS更友好的界面,而且更加便宜,只要根據(jù)使用時間付費(fèi)而不是根據(jù)信息數(shù)。但是它是一個靜態(tài)的瀏覽載體;手機(jī)本身幾乎不需要做任何處理過程,并且所有游戲必須通過網(wǎng)絡(luò),所有的操作都是在遠(yuǎn)程服務(wù)器上執(zhí)行的。手機(jī)將繼續(xù)帶有WAP瀏覽器,而且開發(fā)者可能發(fā)現(xiàn)WAP有利于傳送比游戲應(yīng)用程序提供的更詳細(xì)的幫助信息或者規(guī)則,因?yàn)榇蟛糠值挠螒蛉匀皇苡邢薜膬?nèi)存制約。然而,WAP沒能達(dá)到高使用率的目標(biāo)(在歐洲和北美洲,只有6%的手機(jī)使用WAP),而且移動運(yùn)營商和游戲開發(fā)者正在遠(yuǎn)離WAP技術(shù)。 我們也不會在這里探究任何WAP的細(xì)節(jié)。

  4、J2ME和其它的解釋語言

  Java 2 Micro Edition (J2ME)是一種針對移動電話和PDA這樣的小型設(shè)備的Java語言。大部分的手機(jī)廠商都迫切希望Java手機(jī)推廣應(yīng)用。上千萬的Java手機(jī)已經(jīng)到了消費(fèi)者的手中。J2ME與臺式機(jī)中的Java相比還是有很大的限制,但是它已經(jīng)極大的提高了移動電話支持游戲的能力。它有比SMS或WAP更好控制的界面,允許使用子圖形動畫,并且可以通過無線網(wǎng)絡(luò)連接到遠(yuǎn)程服務(wù)器。支持Java的手機(jī)的普及,所以它成為目前最好的移動游戲開發(fā)環(huán)境,我們在這里將詳細(xì)研究J2ME游戲的開發(fā)。J2ME不是手機(jī)上配置的唯一的解釋語言,但是它是一個許多廠商支持的行業(yè)標(biāo)準(zhǔn)。一些專用的解釋語言也在某些區(qū)域有上佳的表現(xiàn),如北美的Qualcomm的BREW ( Binary Runtime Environment for Wireless,用于無線應(yīng)用程序的二進(jìn)制運(yùn)行環(huán)境)和一些韓國移動運(yùn)營商支持的名為GVM的標(biāo)準(zhǔn)。在這個系列文章中,我們將要重點(diǎn)討論使用J2ME開發(fā)移動游戲,并且將介紹在Nokia平臺上開發(fā)移動游戲的方法。

  5、C++應(yīng)用程序或其它編譯語言

  另外一種開發(fā)方式是使用C++開發(fā)移動游戲,把程序編譯為本機(jī)機(jī)器代碼。編譯語言程序一般說來提供更好的控制用戶界面,以及與解釋語言相比更快的速度。C++開發(fā)者可以定位于Series 60平臺設(shè)備。此外,Microsoft的.Net CF也可以以編譯的形式開發(fā)移動設(shè)備上的游戲,在以后的文章中我將介紹Pocket PC平臺上游戲開發(fā)的方法。

三、移動游戲開發(fā)與傳統(tǒng)游戲開發(fā)的區(qū)別

  移動游戲開發(fā)與傳統(tǒng)游戲開發(fā)區(qū)別在許多方面:

  1、開發(fā)團(tuán)隊(duì)的大小

  傳統(tǒng)的PC和控制臺游戲一般需要12到30人的開發(fā)團(tuán)隊(duì)。因?yàn)榇蟛糠忠苿佑螒蛞?guī)模比控制臺游戲小,所以一般情況下只需要3到5人的團(tuán)隊(duì)開發(fā),有的時候甚至設(shè)計(jì)者和編程者是同一個人。

  2、預(yù)算

  傳統(tǒng)游戲的預(yù)算在一百萬美元到五百萬美元之間。大部分移動游戲的預(yù)算則通常少于一百萬美元。實(shí)際上,移動電話有限的顯示能力和對應(yīng)用程序大小的限制使得不可能象傳統(tǒng)游戲那樣投入大量的財(cái)力物力。從某種意義上來說,這也算是一個優(yōu)點(diǎn)。

  3、開發(fā)周期

  傳統(tǒng)的游戲一般要開發(fā)兩到三年。而大部分移動游戲幾月之內(nèi)就能開發(fā)完畢。換句話說,只要有一個小型開發(fā)團(tuán)隊(duì)和一個小的預(yù)算,你就可以開發(fā)并推廣一個專業(yè)品質(zhì)的移動游戲。因此,對于許多在傳統(tǒng)游戲領(lǐng)域遇到挫折的開發(fā)者來說,移動游戲開發(fā)有很強(qiáng)的吸引力。

  4、網(wǎng)絡(luò)設(shè)備

  移動游戲可能不同于我們之前看到的任何游戲:它受載體因素的限制,但是支持網(wǎng)絡(luò)并且可多人游戲。用于PC的調(diào)制解調(diào)器也只是8年前才大范圍應(yīng)用;控制臺游戲只不過現(xiàn)在才能上網(wǎng)。移動電話的特性決定它是一種網(wǎng)絡(luò)設(shè)備。即使它們的處理能力使人想起以前的老式計(jì)算機(jī)技術(shù),但是它們的網(wǎng)絡(luò)性能卻更加出眾。

  5、開放標(biāo)準(zhǔn)

  控制臺游戲開發(fā)需要從控制臺游戲廠商取得授權(quán)和支持,需要支付給他們"平臺使用費(fèi)"。在無線應(yīng)用程序世界(如同在PC游戲開發(fā)中一樣),你可以免費(fèi)的開發(fā)任何款式的游戲,而不要支付Nokia、Sun或其他平臺提供商一分錢。此外,這些移動游戲開發(fā)平臺標(biāo)準(zhǔn)可以向開發(fā)者發(fā)布、開放并可免費(fèi)取得。

  6、部署

  傳統(tǒng)的游戲主要是在軟件市場上購買。而移動游戲主要是由用戶從移動門戶網(wǎng)站下載并安裝。在有些情況下,它們是通過無線網(wǎng)絡(luò)下載的。有些手機(jī)允許你下載一個應(yīng)用程序到計(jì)算機(jī)中,然后通過數(shù)據(jù)線傳送到手機(jī)中。

  因此,移動游戲的銷售渠道是非常不同的。用戶一般通過移動運(yùn)營商的游戲菜單、手機(jī)廠商預(yù)裝在手機(jī)中的游戲菜單或者無線應(yīng)用程序門戶網(wǎng)站上找到移動游戲。

四、載體的優(yōu)點(diǎn)

  1、龐大的潛在用戶群

  現(xiàn)在全球超過十億部移動電話正在被使用,并且這個數(shù)目正在逐漸增加。在除美國之外的每個發(fā)達(dá)國家,擁有手機(jī)的人數(shù)比擁有計(jì)算機(jī)的人數(shù)更多。雖然那些手機(jī)只有一小部份是支持Java的手機(jī),但是這個數(shù)目正在快速地提高并且在幾年內(nèi)Java手機(jī)將要成為行業(yè)標(biāo)準(zhǔn)。移動游戲潛在的市場比其它任何平臺,比如Playstation和GameBoy都要大。

  2、便攜性

  GameBoy比任何其他控制臺游戲賣出的多的一個原因就是:便攜性。人們可以隨時隨地玩他們選擇的游戲。與現(xiàn)在的游戲控制臺或者個人電腦相比,手機(jī)可能不是一個好的游戲設(shè)備,但是人們基本上是隨時隨刻都把它們帶在身邊。在他們離開家的時候或者想玩的時候,給開發(fā)者應(yīng)該為他們提供好玩的游戲。

  3、支持網(wǎng)絡(luò)

  因?yàn)橐苿与娫捠蔷W(wǎng)絡(luò)設(shè)備,所以可以實(shí)現(xiàn)多人游戲,雖然有某些限制因素。

五、載體的缺點(diǎn)

  1、屏幕小

  你面對的是小型的屏幕。雖然屏幕分辯率持續(xù)提高,并且彩屏即將成為標(biāo)準(zhǔn),但是屏幕尺寸還是一直很小,因?yàn)闆]有人樂意拿著磚塊一樣大的手機(jī)。

  還有一個相關(guān)的問題:不同的手機(jī)的屏幕大小是不同的。比如說Nokia Series 60平臺設(shè)備就提供了和Nokia 5100這樣的Series 40設(shè)備不同的屏幕尺寸。雖然各個廠商已經(jīng)標(biāo)準(zhǔn)化它們產(chǎn)品的屏幕尺寸以避免分割市場,但是開發(fā)者仍然需要為不同的電話優(yōu)化他們的游戲--你肯定想使用特定的手機(jī)上所有可用的屏幕空間。

  2、有限的顏色和聲音支持

  大部分使用者手中的手機(jī)仍然是黑白的,雖然現(xiàn)在出售的支持Java的手機(jī)大部分都是彩屏手機(jī)。在這些手機(jī)中12bit彩色非常流行。

  即使手機(jī)本來就有聲音設(shè)備,但是應(yīng)用程序播放聲音的能力卻非常有限。J2ME規(guī)范根本不需要硬件廠商支持聲音,雖然基本的Java手機(jī)允許使用一些聲音并且MIDI支持正在成為標(biāo)準(zhǔn)。通常,手機(jī)中只有一個語音或者一個聲道可用。

  3、應(yīng)用程序大小限制

  大部分的Java手機(jī)只有很少的內(nèi)存空間用于運(yùn)行MIDlet。此外,對MIDlet的大小始終有一個限制。實(shí)際的限制取決于手機(jī)設(shè)備和移動運(yùn)營商的規(guī)定。

  在這樣的限制條件下設(shè)計(jì)開發(fā)移動游戲固然是非常困難的,但是我們要知道,第一臺家用電腦只有64 KB內(nèi)存,但是仍然有人熱衷于在其上開發(fā)游戲軟件。在一些智能手機(jī)上內(nèi)存的限制就少一些,比如Nokia 3650甚至可以運(yùn)行幾兆字節(jié)的應(yīng)用程序。

  4、高等待時間

  等待時間----機(jī)器發(fā)出請求和接到響應(yīng)之間所花費(fèi)的時間----在計(jì)算機(jī)上是以微秒計(jì)算;在有線因特網(wǎng)上是以毫秒計(jì)算;而在無線網(wǎng)絡(luò)則要以秒計(jì)算。

  等待時間是網(wǎng)絡(luò)游戲中一直存在的一個問題,開發(fā)者們總是在努力消除它帶來的問題。無線網(wǎng)絡(luò)等待時間非常長,這就不可能有效的開發(fā)多人快速動作移動游戲。然而基于回合制的多人游戲是相當(dāng)可行的,我們在后面的文章中將討論如何使用各種方法來處理這個問題。

  雖然移動運(yùn)營商總是在努力增加移動電話可用的帶寬,但是他們卻沒有把降低等待時間當(dāng)成首要解決的問題,因?yàn)樗鼘τ趧e的應(yīng)用程序并不重要。

  還有一種特殊情況:使用藍(lán)牙技術(shù)或其他無線局域網(wǎng)技術(shù)的手機(jī)可以和附近的藍(lán)牙設(shè)備使用因特網(wǎng)等待時間(一般200-400毫秒)通訊。這樣,使用像Nokia 3650這樣的智能手機(jī),你就可以和附近的移動用戶一起玩多人快速動作游戲了。

  5、可中斷性是關(guān)鍵

  當(dāng)用戶接聽電話的時候,手機(jī)都會中斷進(jìn)行中的游戲。游戲程序必須能夠暫停并且繼續(xù),而且不會造成游戲問題(例如,游戲者在打電話的時候老怪仍然在移動,打死玩家扮演的角色,導(dǎo)致輸?shù)粲螒颍┎⑶也粫斐蓛?nèi)存溢出。這需要在編程的時候多注意,Nokia提供了技術(shù)文檔幫助J2ME和Symbian C++開發(fā)者了解并解決這個問題。

  6、正在發(fā)展的技術(shù)

  用于開發(fā)移動游戲的技術(shù)并不是針對游戲設(shè)計(jì)的,因此常常有特定的限制條件。例如,J2ME規(guī)范不需要支持透明度,這就使得子圖形除了在空白的背景上以外,在任何背景上都會很難看。

  幸運(yùn)的是,大部分設(shè)備廠商的Java手機(jī)都補(bǔ)充了J2ME,支持了透明度。為了充分利用J2ME的性能,你需要支持手機(jī)特定的API;為了得到最好的效果,就需要為一個游戲編寫好幾個版本。最近發(fā)行的MIDP 2.0規(guī)范解決了一些此類問題,但是對不兼容MIDP 2.0的手機(jī)是無效的。

六、避其短處 取其長處

  游戲有驚人的可塑性;它們可以使用從石器時代到現(xiàn)代高科技的每一種技術(shù)來實(shí)現(xiàn)。每當(dāng)你使用你以前從來沒有使用過的技術(shù)進(jìn)行開發(fā)的時候,你需要了解它的性能和局限,努力把它的性能發(fā)揮到極限,同時回避或者解決它的局限性。

  我們可以從我們的移動游戲的性能和局限性的討論中得出什么結(jié)論呢?

  1、短的游戲時間

  人們遲早要打電話或者接電話,并且他們不想把所有的電量都用來玩游戲。理想的情況是每一回合游戲應(yīng)該保持在五個分鐘或更短時間之內(nèi)。這不意味著一個完整的游戲必須在五分鐘之內(nèi)結(jié)束--而是你應(yīng)該允許游戲者中斷、保存和繼續(xù)游戲。

  2、玩家有自己的時間表,而不是必須遵循你的時間表

  讓人們在想要玩游戲的時候玩,不要強(qiáng)迫他們等待(如果你可以避免),也不要要求他們在任何時間都在游戲中。

  3、避免等待時間

  這對單人游戲來說很容易實(shí)現(xiàn)。在多人游戲中,你就需要解決等待時間的問題了。(我們將在后面討論這個問題。)

  4、使用網(wǎng)絡(luò)

  網(wǎng)絡(luò)不一定對于每個移動游戲都是必需的,但是那種與人競爭的感覺,即使只有一個排行榜,也能吸引更多的游戲者。要記住,手機(jī)實(shí)際上是一種社會性設(shè)備,添加某種社會性因素到你的游戲中會使它更加受歡迎。

  5、盡可能地讓游戲保持小型

  記住一點(diǎn),人們?nèi)匀粺嶂杏?0年代的優(yōu)秀的游戲。在某些方面,技術(shù)的限制強(qiáng)迫你把更多的注意力放到基本的游戲中去。

  當(dāng)我們在后續(xù)文章中探討開發(fā)的時候,我們將討論一些技術(shù)問題。

  6、做好支持多種手機(jī)的準(zhǔn)備

  至少,需要支持不同的屏幕尺寸,這對Nokia系列手機(jī)很容易做到。為Series 40開發(fā)一種版本,為Series 60開發(fā)另一種版本。多數(shù)情況下,你還要利用特定手機(jī)的性能和API,比如Nokia的用戶界面和SMS API,你要為不具備相同特性的手機(jī)開發(fā)不同的版本。

  7、為國際化做好準(zhǔn)備

  全世界都在使用移動電話,每一種語言都有自己的市場。在你開發(fā)的時候你就要做好計(jì)劃,以便更利于本地化。

七、處理等待時間

  移動游戲如何解決無線網(wǎng)絡(luò)的高等待時間呢?

  1、單人游戲

  游戲者的游戲不需要用到網(wǎng)絡(luò),除非是把高分傳送到排行榜中,或允許游戲者瀏覽排行榜。這種網(wǎng)絡(luò)通訊對于游戲影響不大,幾秒鐘的延遲不會引起用戶的反感。

  實(shí)質(zhì)上,在大多數(shù)的單人游戲中并沒有這個問題。

  2、"多玩家"單人游戲

  在一個"多玩家"單人游戲中,游戲者感覺他們是在玩一個多人游戲,但是事實(shí)上,每個人只是面對相同的游戲,在游戲或者回合結(jié)束時比較分?jǐn)?shù)。

  當(dāng)一個游戲者加入游戲時,他告訴其他游戲者他的ID號,然后開始玩單人游戲。服務(wù)器要么給每個游戲者發(fā)送一個包含相同消息的游戲狀態(tài)文件,要么發(fā)送一個來自構(gòu)造啟動游戲狀態(tài)的客戶軟件的代碼。每個游戲者玩游戲,設(shè)法取得最高的得分。當(dāng)一個游戲者結(jié)束游戲后,他的客戶端程序把他的得分提交到服務(wù)器。當(dāng)所有的游戲者都完成游戲后(或者超過某個時間以后),服務(wù)器告訴每個游戲者誰取得了最高分,以及每個游戲者取得的分?jǐn)?shù)。

  這種風(fēng)格的游戲在因特網(wǎng)上相當(dāng)成功;AOL最受歡迎的游戲Slingo就是一個很好的例子。

  因?yàn)橹挥性诜?wù)器開始或者結(jié)束游戲的時候才需要交換消息,所以等待時間只有在這些時候才成為一個問題。

  3、基于回合的游戲

  在一個基于回合的游戲中,游戲者進(jìn)入他們的回合,并在接收結(jié)果之前需要等待一段時間。幾秒鐘的延遲是可以容忍的。

  有兩種基于回合的游戲:

  3.1、輪流游戲

  在一個輪流游戲中,每個游戲者按次序進(jìn)入回合。像象棋、紅心大戰(zhàn)這樣的經(jīng)典游戲就是很好的例子。
這種游戲的缺點(diǎn)就是游戲者在重新進(jìn)入回合之前無事可做。雖然經(jīng)典游戲在因特網(wǎng)上有很多玩家,但這多多少少有點(diǎn)無趣,。

  因此,限制輪流游戲的游戲者數(shù)是個非常好的主意,這樣延遲就不會變得非常長。兩到四個游戲者是比較理想的情況。

  3.2、同時動作游戲

  在一個同時動作游戲中,每個游戲者獨(dú)立于其它游戲者計(jì)劃他自己的行動。當(dāng)一個游戲者就緒時,他發(fā)送指令到服務(wù)器。服務(wù)器等到從所有的游戲者那里都接到指令,然后分解回合,再把結(jié)果發(fā)送到所有的游戲者那里。

  4、"即時動作"游戲

  在一個"即時動作"游戲中,游戲可能會持續(xù)很長時間(幾天、幾個星期、幾個月甚至到永遠(yuǎn))。游戲者可以在任何時候進(jìn)入游戲,執(zhí)行游戲中的動作。在一些游戲中,他們可能只能與其他的同時進(jìn)入游戲的用戶交互;在其它的游戲中,他們也許能與任何其他游戲者交互,即使這些游戲者已經(jīng)下線。

  6、把等待時間分布到游戲中

  讓游戲者接受高等待時間的另一種簡單方法就是把等待時間分布到游戲本身中。例如,大部分星際飛船戰(zhàn)斗游戲讓人都感覺到象是二次大戰(zhàn)時的空戰(zhàn),戰(zhàn)船在你身邊呼嘯而過,向你開炮。然而,在手機(jī)上要實(shí)現(xiàn)這種火爆的場面好像困難很大。我們可以換一種思路,我們可以把星際戰(zhàn)艦類游戲做成一個類似第一次世界大戰(zhàn)海戰(zhàn)的游戲,星際飛船慢慢地移動,彼此之間一發(fā)一發(fā)的發(fā)射炮彈,導(dǎo)彈緩慢的移動奔向它們的目標(biāo)。你可以使用這種方法來隱藏幾秒鐘的等待時間??隙ㄟ€有更多的解決長等待時間的方法。這是一個值得花時間去思考解決的問題。


50
評論區(qū)(0)
正在加載評論...