JSR
下面是一些提升J2ME 3D游戲性能的技術技巧。記住,游戲玩家關心的是游戲的最終效果,而不是如何實現效果。
M
在M
技術技巧
限制多邊形總量
對于Motorola E680/E680i/A780,強烈建議一個3D場景(包括人物、物體和環境)中的多邊形總量必須不能超過1500。
混合2D和3D對象
在J2ME 3D游戲中,2D對象消耗的資源遠比3D對象少得多,然而有時效果看起來卻很相似。那么在游戲中使用2D片段代替一些3D對象就是一個很好的主意了。例如,烏云、雪花或者廣告牌可以很容易地轉化為2d圖像。有時,在背景圖上直接繪圖也同樣能夠減少資源消耗。
使用紋理模擬動畫
在3D游戲中,有一些小對象需要相對復雜的動畫以使它們顯示更具現實性。例如,為了描繪汽車在小屏幕游戲中奔跑,你需要一些動畫效果來使玩家知道汽車是在實際的奔跑。但是全部使用真實的3D模型來模擬這個動作是不必要的,也是不切實際的。一個可用的方式就是改變對象的紋理,使其看起來像在奔跑。
把大網面分成幾部分
在E680/E680i/A780種使用的swerve引擎支持幾何剔除(或者網面剔除)。例如,在視口中的立方體有些不可見的面可以被忽略。但是一個網面只有全部不可見時才能被忽略。
更確切地說,如果你有一個網面覆蓋了無限的區域(例如,道路)并且作為一個網面對象導出,如果把這個網面劃分為一些子網面將會得到更好的性能,因為在視口中只需要計算和渲染子網面。
但是在把對象劃分為多個部分中要找到一個平衡點。越多的部分,就需要越多的處理,因為場景樹更大了。劃分的部分越少,大對象就只有部分可見,就不能被剔除。找到平衡點需要不斷的試驗。
使用哈希表替換數學函數
E680/E680I/A780使用XScale 300MHz作為它們的處理器。事實上,像大多數移動電話中的CPU一樣,E680/E680I/A780中的CPU沒有浮點處理器,也就是說這個CPU不得不使用整數來模擬浮點,這會花費大量的時間。
函數如除、sin、cos和求平方根將會占據大量的計算資源。在移動3D游戲中,函數的精度要求是很低的 。使用哈希表(函數變量作為鍵(key),函數結果作為值(value))代替真正的函數將會提升浮點運算的性能。
鍵(Key)
值(Value)
Sin(0)
0
Sin(5π/180)
0.087155743
Sin(10π/180)
0.173648178
Sin(15π/180)
0.258819045
…
…
表1:哈希表模擬sin
使用自發光的紋理代替光源
圖1 材料和頂點色彩管道——JSR 184文檔中的圖片
如圖所示,發光計算是在材料之上的。光——甚至方向光——要使用很多資源。如果對象是被照亮的,可以考慮代替創建你的紋理。
注意
在移動電話中,內存和計算資源都是有限的,因此一個好的J2ME 3D游戲的關鍵就是得到場景、效果和性能之間的平衡點。要得到這個平衡點,在實際的手機上進行不斷地進行試驗一直都是很有必要的。(出處:http://www.companysz.com)
新聞熱點
疑難解答