Thursday September 08, 2005 即
使目前手機內建的處理器運算能力已經高於幾年前的個人電腦,連線速度也比過去還要快,但是手機永遠是手機,在目前的手機設計無法突破之前,手機永遠只能有
一個無法滿足人類視覺需求的小螢幕,鍵盤上的按鈕永遠比需求少一個,更無法使用滑鼠來操控。這一點大大地限制了手機上所能開發的應用程式類型,因此,即使
理論上可以開發各式各樣的應用程式,礙於手機先天的特性,導致Java遊戲幾乎就是Java手機應用程式的代名詞。
Martin J. Wells所撰寫的《J2ME Game Programming》,正是一本可以滿足Java手機開發人員需求,又沒有上述書籍缺點的好書。這本書以MIDP內建的LCDUI為基礎,說明如何應用標準LCDUI API之中的低階模式來設計遊戲,本書也提到如何擅用Game API,減輕遊戲開發的負擔。
本書最有特色的部分,在於說明『如何讓您的Java手機程式賺大錢』,不像典型技術書籍只教導我們如何發揮某種技術的最大功能(當然,技術好與賣的好,本身還是有某種程度的關聯)。因此這本書有特別的章節介紹移植(porting)相關議題,因為程式能夠在越多手機上執行,目標市場才會越大,才會有越多人購買。本書亦有章節特別介紹本地化(Localization),我們所開發的程式如果能用越多國家的語言呈現,您的客戶就不會僅侷限於中文使用者,使用日文、俄文等其他國家的人,一樣會讓您賺進更多鈔票。
在諸多遊戲類型中,可以讓人隨時開始享受樂趣,又可以充分娛樂的遊戲類型,莫過於動作遊戲,動作遊戲中,最吸引人的,大概就是射擊類遊戲了,筆者想起學生時代,總會被射擊遊戲的華麗聲光效果吸引,無論是家裡的遊戲卡帶,或是貢獻給外面遊樂場的硬幣,都以射擊遊戲最多。
要如何設計好的射擊遊戲,如何完成裡頭超炫的武器及特殊技,都可以在松浦健一郎所撰寫的《射擊遊戲演算法與程式原理(Shooting Game Algorithm Maniax)》書中,得到很好的答案。絕大多數的人都可以同意,日本人對於射擊遊戲的設計,已經到了爐火純青的地步,這本書原文以日文撰寫成,本來就是一本開發射擊遊戲的必備寶典,加上林世榮、黃政凱先生優質的翻譯,讓中文讀者可以享受到和原文一樣的品質。
本書雖然以C/C++為開法語言來實做演算法,但是幾乎沒有用到C/C++的特性(例如:函式庫、指標),這些程式碼大部分可以在不經修改的情況下,全數通過Java編譯器的編譯,這對Java語言的使用者是一個福利。
最後,我們講到手機平臺的不一致性。許多人會問,Java不是號稱跨平臺嗎? 為什麼還會有不一致的情形發生呢? 這是因為手機先天上的多樣性,比方說螢幕的大小,按鈕的配置,解析度,色深等,處於百家爭鳴的情形,這是一個很難改變的現實(如果所有的手機都跑Windows,外觀都大同小異,這個世界肯定無趣許多)。因此,即使Java有再好的架構,也無法讓程式完全的跨平臺(可以執行,但是會怪怪的),這也是為什麼《J2ME Game Programming》這本書需要花許多篇幅討論移植問題的原因。
再者,每家手機廠商都會為自己的Java執行環境增添特殊的功能,一來綁住開發人員和使用者,一來可以讓Java程式更能夠發揮手機的特性(例如:照相機、藍芽、多媒體等),貼近手機的特色。因此,如果只想開發一般的Java手機程式,上述的書籍就已經足夠,但是要發揮各廠牌手機的特色,就必須多閱讀官方釋出的技術文件,Nokia的手機就到Forum Nokia尋找技術文件、SonyEricsson的手機就到SonyEricsson官方開發網站、Motorola的手機就到MotoCoder網站。
但是,藉由技術文件取得的資訊畢竟是離散的,要學習完整的知識,還是需要一本專門介紹的書才可以。市面上唯一一本專注特定廠商的Java開發專書《Developing Scalable
Series 40 Applications : A Guide for Java Developers》,以Nokia Series 40手機的特性為基礎,說明如何開發Java應用程式。