程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 手機游戲開發綜述

手機游戲開發綜述

編輯:關於JAVA

一、背景介紹

現在的移動電話是小型的計算機,它的處理能力與台式機的標准處理能力相比很有限,但是足夠運行一個小型的游戲。

現在的手機的一個特性就是它們還是網絡計算機,能夠高速發送和接收數字數據。 除了語音數據以外,它們還可以發送和接收其它類型的數據。所以類似《傳奇》、《千年》這樣的網絡游戲也可以在手機上實現。

當然就處理能力和性能而言,當前階段的支持Java的手機很接近第二代控制台游戲機、80年代中期的家用電腦和早期的手持游戲機。內存通常很有限--一般128KB到500KB--雖然有些智能手機比如Nokia 3650有4 MB內存。與PC相比,它們的輸入和顯示功能也很有限;小屏幕(許多仍然是黑白屏幕),為電話撥號優化的小鍵盤並不針對文本輸入,以及有限的聲音處理能力。

二、移動游戲是如何實現的

目前在移動電話實現游戲的技術主要有以下幾種:

1、嵌入式游戲

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

2、短消息服務游戲

短信息服務(SMS)被用來從一個手機向另一個手機發送簡短的文字信息。用戶一般為每條信息支付1毛錢的信息費。短消息服務游戲的玩法通常是發送一條信息到某個號碼,這個號碼對應游戲供應商的服務器,服務器接收這條消息,執行一些操作然後返回一條帶有結果的消息到游戲者的手機中。短消息服務不是一個特別好的用於實現移動游戲的技術,因為它依靠用戶輸入文字,因此本質上它是一個命令行環境。而且它還很昂貴,即使和服務器只交換10次信息也要花費1塊錢或者更多的錢。雖然多媒體消息服務( MMS)技術的推出使得基於消息的游戲更加具有吸引力,但是仍然不是一種重要的游戲環境,所以在此我們不會深入探討它。

3、浏覽器游戲

差不多1999年以後出廠的每台手機都有一個無線應用協議(WAP)浏覽器。WAP本質上是一個靜態浏覽載體,非常像一個簡化的Web,是為移動電話小型特征和低帶寬而專門優化的。要玩WAP游戲的話,可以進入游戲供應商的URL(通常通過移動運營商門戶網站的一個鏈接),下載並浏覽一個或多個頁面,選擇一個菜單或者輸入文字,提交數據到服務器,然後浏覽更多的頁面。WAP (1.x)版本使用獨特的標記語言WML,允許用戶下載多個頁面,即卡片組。新版本的WAP(2.x)使用XHTML的一個子集,一次傳遞一個頁面並且允許更好的控制顯示格式。兩種版本的WAP都提供一個比SMS更友好的界面,而且更加便宜,只要根據使用時間付費而不是根據信息數。但是它是一個靜態的浏覽載體;手機本身幾乎不需要做任何處理過程,並且所有游戲必須通過網絡,所有的操作都是在遠程服務器上執行的。手機將繼續帶有WAP浏覽器,而且開發者可能發現WAP有利於傳送比游戲應用程序提供的更詳細的幫助信息或者規則,因為大部分的游戲仍然受有限的內存制約。然而,WAP沒能達到高使用率的目標(在歐洲和北美洲,只有6%的手機使用WAP),而且移動運營商和游戲開發者正在遠離WAP技術。 我們也不會在這裡探究任何WAP的細節。

4、J2ME和其它的解釋語言

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

5、C++應用程序或其它編譯語言

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

三、移動游戲開發與傳統游戲開發的區別

移動游戲開發與傳統游戲開發區別在許多方面:

1、開發團隊的大小

傳統的PC和控制台游戲一般需要12到30人的開發團隊。因為大部分移動游戲規模比控制台游戲小,所以一般情況下只需要3到5人的團隊開發,有的時候甚至設計者和編程者是同一個人。

2、預算

傳統游戲的預算在一百萬美元到五百萬美元之間。大部分移動游戲的預算則通常少於一百萬美元。實際上,移動電話有限的顯示能力和對應用程序大小的限制使得不可能象傳統游戲那樣投入大量的財力物力。從某種意義上來說,這也算是一個優點。

3、開發周期

傳統的游戲一般要開發兩到三年。而大部分移動游戲幾月之內就能開發完畢。換句話說,只要有一個小型開發團隊和一個小的預算,你就可以開發並推廣一個專業品質的移動游戲。因此,對於許多在傳統游戲領域遇到挫折的開發者來說,移動游戲開發有很強的吸引力。

4、網絡設備

移動游戲可能不同於我們之前看到的任何游戲:它受載體因素的限制,但是支持網絡並且可多人游戲。用於PC的調制解調器也只是8年前才大范圍應用;控制台游戲只不過現在才能上網。移動電話的特性決定它是一種網絡設備。即使它們的處理能力使人想起以前的老式計算機技術,但是它們的網絡性能卻更加出眾。

5、開放標准

控制台游戲開發需要從控制台游戲廠商取得授權和支持,需要支付給他們"平台使用費"。在無線應用程序世界(如同在PC游戲開發中一樣),你可以免費的開發任何款式的游戲,而不要支付Nokia、Sun或其他平台提供商一分錢。此外,這些移動游戲開發平台標准可以向開發者發布、開放並可免費取得。

6、部署

傳統的游戲主要是在軟件市場上購買。而移動游戲主要是由用戶從移動門戶網站下載並安裝。在有些情況下,它們是通過無線網絡下載的。有些手機允許你下載一個應用程序到計算機中,然後通過數據線傳送到手機中。

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

四、載體的優點

1、龐大的潛在用戶群

現在全球超過十億部移動電話正在被使用,並且這個數目正在逐漸增加。在除美國之外的每個發達國家,擁有手機的人數比擁有計算機的人數更多。雖然那些手機只有一小部份是支持Java的手機,但是這個數目正在快速地提高並且在幾年內Java手機將要成為行業標准。移動游戲潛在的市場比其它任何平台,比如Playstation和GameBoy都要大。

2、便攜性

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

3、支持網絡

因為移動電話是網絡設備,所以可以實現多人游戲,雖然有某些限制因素。

五、載體的缺點

1、屏幕小

你面對的是小型的屏幕。雖然屏幕分辯率持續提高,並且彩屏即將成為標准,但是屏幕尺寸還是一直很小,因為沒有人樂意拿著磚塊一樣大的手機。

還有一個相關的問題:不同的手機的屏幕大小是不同的。比如說Nokia Series 60平台設備就提供了和Nokia 5100這樣的Series 40設備不同的屏幕尺寸。雖然各個廠商已經標准化它們產品的屏幕尺寸以避免分割市場,但是開發者仍然需要為不同的電話優化他們的游戲--你肯定想使用特定的手機上所有可用的屏幕空間。

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

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

即使手機本來就有聲音設備,但是應用程序播放聲音的能力卻非常有限。J2ME規范根本不需要硬件廠商支持聲音,雖然基本的Java手機允許使用一些聲音並且MIDI支持正在成為標准。通常,手機中只有一個語音或者一個聲道可用。

3、應用程序大小限制

大部分的Java手機只有很少的內存空間用於運行MIDlet。此外,對MIDlet的大小始終有一個限制。實際的限制取決於手機設備和移動運營商的規定。

在這樣的限制條件下設計開發移動游戲固然是非常困難的,但是我們要知道,第一台家用電腦只有64 KB內存,但是仍然有人熱衷於在其上開發游戲軟件。在一些智能手機上內存的限制就少一些,比如Nokia 3650甚至可以運行幾兆字節的應用程序。

4、高等待時間

等待時間----機器發出請求和接到響應之間所花費的時間----在計算機上是以微秒計算;在有線因特網上是以毫秒計算;而在無線網絡則要以秒計算。

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

雖然移動運營商總是在努力增加移動電話可用的帶寬,但是他們卻沒有把降低等待時間當成首要解決的問題,因為它對於別的應用程序並不重要。

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

5、可中斷性是關鍵

當用戶接聽電話的時候,手機都會中斷進行中的游戲。游戲程序必須能夠暫停並且繼續,而且不會造成游戲問題(例如,游戲者在打電話的時候老怪仍然在移動,打死玩家扮演的角色,導致輸掉游戲)並且不會造成內存溢出。這需要在編程的時候多注意,Nokia提供了技術文檔幫助J2ME和Symbian C++開發者了解並解決這個問題。

6、正在發展的技術

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

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

六、避其短處 取其長處

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

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

1、短的游戲時間

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

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

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

3、避免等待時間

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

4、使用網絡

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

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

記住一點,人們仍然熱中於80年代的優秀的游戲。在某些方面,技術的限制強迫你把更多的注意力放到基本的游戲中去。

當我們在後續文章中探討開發的時候,我們將討論一些技術問題。

6、做好支持多種手機的准備

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

7、為國際化做好准備

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

七、處理等待時間

移動游戲如何解決無線網絡的高等待時間呢?

1、單人游戲

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

實質上,在大多數的單人游戲中並沒有這個問題。

2、"多玩家"單人游戲

在一個"多玩家"單人游戲中,游戲者感覺他們是在玩一個多人游戲,但是事實上,每個人只是面對相同的游戲,在游戲或者回合結束時比較分數。

當一個游戲者加入游戲時,他告訴其他游戲者他的ID號,然後開始玩單人游戲。服務器要麼給每個游戲者發送一個包含相同消息的游戲狀態文件,要麼發送一個來自構造啟動游戲狀態的客戶軟件的代碼。每個游戲者玩游戲,設法取得最高的得分。當一個游戲者結束游戲後,他的客戶端程序把他的得分提交到服務器。當所有的游戲者都完成游戲後(或者超過某個時間以後),服務器告訴每個游戲者誰取得了最高分,以及每個游戲者取得的分數。

這種風格的游戲在因特網上相當成功;AOL最受歡迎的游戲Slingo就是一個很好的例子。

因為只有在服務器開始或者結束游戲的時候才需要交換消息,所以等待時間只有在這些時候才成為一個問題。

3、基於回合的游戲

在一個基於回合的游戲中,游戲者進入他們的回合,並在接收結果之前需要等待一段時間。幾秒鐘的延遲是可以容忍的。

有兩種基於回合的游戲:

3.1、輪流游戲

在一個輪流游戲中,每個游戲者按次序進入回合。像象棋、紅心大戰這樣的經典游戲就是很好的例子。

這種游戲的缺點就是游戲者在重新進入回合之前無事可做。雖然經典游戲在因特網上有很多玩家,但這多多少少有點無趣,。

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

3.2、同時動作游戲

在一個同時動作游戲中,每個游戲者獨立於其它游戲者計劃他自己的行動。當一個游戲者就緒時,他發送指令到服務器。服務器等到從所有的游戲者那裡都接到指令,然後分解回合,再把結果發送到所有的游戲者那裡。

4、"即時動作"游戲

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

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

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved