本文是基于Nokia Series 60和Symbian OS技術,指導開發者在現在的Series 60移動電話終端上開發高級的移動游戲。
操作系統。這適用于Series 6.1作為Series 注重:本文檔中討論的技術路線都是以Symbian>
Symbian操作系統簡介
Symbian操作系統是所有Symbian OS電話共享的應用編程接口( API)技術的公共核心。 這個核心被命名為"通用技術"(generic technology,簡稱為GT),它被分成不同的版本。 GT包括一個多任務核心、通訊、數據治理和圖表中間件,低級圖形用戶界面框架和應用程序引擎。
象智能電話這樣的小型手持設備,通常是資源非常緊張的設備。 這種設備的尺寸和制造費用限制了可用的存儲器,處理速度和電池壽命。 盡管以上這些資源缺乏,但是這些設備還是需要能夠穩定運行相當長的一段時間,甚至數個月。 一旦出現資源溢出的錯誤,對于系統來說重要的事情就是返回到前一個穩定的狀態,而不失去任何重要的數據。 這使得完全地捕捉和處理每個運行錯誤對于系統和應用程序來說是非常重要的。
由于資源溢出而出現的錯誤,和所有的運行期錯誤一樣被稱為異常。 在標準的C++中,這些異常是使用try-catch-throw機制處理的,但是因為它造成了代碼長度的負面影響,所以Symbian OS提供了它自己的稱為trap harness的機制。
Symbian開發他們自己的異常處理程序的另一個原因是開發Symbian OS的時候,try - catch - throw機制還不是C++標準的一部分。trap- harness的概念是使用一個TRAP宏把可能引發異常的函數封裝起來。這個宏可用于捕捉多個函數,并且這些函數可以嵌套。萬一出現一個異常,導致異常的函數的執行就會通過User::Leave函數終止,相當于標準的C++異常處理中的throw。這被稱為一個leave(離開),它將返回程序執行到結束的TRAP宏,在那里相應的恢復動作可以被執行。
Symbian OS還提供一個工具,以便清除異常。一個cleanupstack被用于引用只被一個自動變量引用,并且假如出現一個leave的時候需要被釋放的對象。TRAP宏將銷毀cleanupstack中自動變量分配的內存。
Symbian OS提供一個用于在單一線程之內非搶先式多任務處理技術的系統。這個包括活動對象和活動調度程序的系統的設計目標是降低運行時間成本和解決與優先計劃線程沖突的同步問題。Symbian OS中的每個應用程序由一個活動調度程序和一個或多個活動對象組成。這個調度程序封裝一個需要異步的服務和依照它們的優先權安排活動對象的等待循環。活動對象封裝實際的異步服務。
需求
與許多其它用于游戲的設備不同,智能電話需要在游戲中或者任何其他的應用程序運行的時候能夠通知用戶各種系統事件。 應用程序需要考慮到可能的中斷,例如因為打進來的電話或者消息,并且它們需要根據情況進行處理。 應用程序還應該不消耗設備資源,例如過度的使用內存或者電量。
通知用戶的大多數系統消息使用系統自己的對話框,稱為全局通知。 這個對話框具有比任何應用程序都要高的窗口優先權,因此它們出現在應用程序的前端。 在系統事件中,一個異常是打進來的電話造成電話通信應用程序變成最前端的應用程序而把被中斷的應用程序留作背景。 然而,所有的系統端事件具有一個公共特征,可以被一個應用程序捕捉。 當一個系統事件發生時,最前端的應用程序失去焦點。 這造成應用程序用戶接口類(CAknAppUI)的HandleForegroundEventL方法被調用。 通過覆蓋這個方法,應用程序可以執行需要的動作,例如暫停正在進行的游戲。
應用程序需要注重電池使用量。 當一個電話在預定的時間內沒有使用的情況下,它會進入睡眠方式以便消耗最少的電量。 假如一個應用程序持續做后臺處理,例如在一個循環中查詢一個變量,電話可能不會進入休眠狀態。 所有的查詢應該在程序塊循環中執行,并且所有的計時器應該在游戲暫停的時候停止。 一旦一個計時器需要來維護和另一個終端的連接,這個計時器的頻率應該降到最小水平。 當在預先設定的時間間隔里一直沒有用戶活動的時候,應用程序還可以從一個系統端計時器中取得事件。 要做到這些可以使用e32std.h頭文件中可以找到的RTimer::Inactivity方法。 在電池供電的設備中,軟件需要對忽然斷電有所預備。 電池可能會沒電,或者用戶可能把它從設備中拿出來。 假如重要的用戶數據被編輯的時候,就更應該注重這些情況了。 每隔一段時間這些數據就應該被保存,并且能夠在重新啟動之后恢復。 此外,應用程序應該對被損壞的數據有所預備,并且能夠安全地從這種情況下恢復。
限制
除了有限的存儲量之外,智能電話和PC相比有其他幾個限制。 首先,智能電話沒有像PC一樣高效的處理器。 智能電話基本都沒有數學處理器,因此時間單位計算應該使用整數實現。 Symbian OS作為一種游戲平臺還有一些約束。 例如,這個平臺不支持可寫的靜態數據,而靜態數據經常被用于在游戲中來最優化訪問廣泛使用的數據。
智能電話還有相對限制的硬件。 顯示屏幕有有限的分辨度、尺寸和彩色深度。 小鍵盤只有有限數目的按鍵,并且按鍵的布局可能不便于玩游戲。 在不同硬件解決方案之間,鍵盤的布局可能會有很大的不同,因此游戲應該提供用戶重新定義按鍵的功能。 智能電話還沒有足夠的端口來支持各種游戲控制器,像方向盤和游戲桿,這些都是在PC環境中很常見的。 所有這些限制決定了哪些游戲可以被實現并且安裝到一部智能電話上,而不會降低它們的可玩性。 然而從長遠的觀點來看,智能電話中使用的技術將越來越精巧,新的特性和解決方案將被引入。
新聞熱點
疑難解答