手機遊戲

 手機遊戲開發綜述

一、背景介紹

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

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

 

  當然就處理能力和性能而言,當前階段的支持Java的手機很接近第二代控制檯遊戲機、80年代中期的家用電腦和早期的手持遊戲機。內存通常很有限--一般128KB500KB--雖然有些智能手機比如Nokia 36504 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的細節。

  4J2ME和其它的解釋語言

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

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

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

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

  1、開發團隊的大小

  傳統的PC和控制檯遊戲一般需要1230人的開發團隊。因爲大部分移動遊戲規模比控制檯遊戲小,所以一般情況下只需要35人的團隊開發,有的時候甚至設計者和編程者是同一個人。

  2、預算

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

  3、開發週期

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

  4、網絡設備

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

  5、開放標準

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

  6、部署

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

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

  四、載體的優點

  1、龐大的潛在用戶羣

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

  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提供了技術文檔幫助J2MESymbian 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、把等待時間分佈到遊戲中

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

發佈了19 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章