飛行遊戲程式設計要點
1、 地圖 1.1 層次問題
如果這個遊戲完全是在一層上面進行,會讓人索然無味。因此,有必要對遊戲分層次。地面上有坦克和一些炮塔,雲層中有時不時衝出來的敵機,而最上面的這一層就是遊戲畫面的主體,大量的敵機!
因此,遊戲要分為3層!地面 雲(雲層為可選) 主畫面層 1.2 如何拼接
用一張整圖不現實,這樣會影響程式的執行效率,而且很占空間。只有通過圖塊的拼接。因此,要設計合理的圖塊(Tile),對地圖索引的排列也需要重點的設計。還有地圖工具的尋找和使用,指令碼化地圖的編輯,使地圖編輯更方便,不僅是程式人員可使用,其他人員如策劃和美術通過此工具編輯後匯出拼接檔案給程式人員。 1.3 裝載地圖
將地圖索引寫進檔案,在程式裝載的時候,通過輸入輸出資料流來讀取地圖內容。與地圖工具的相結合使用,抽取獨立的工具類和函數。
2、 子彈
在飛行射擊遊戲中,最重要的,給人印象最深刻的就是那滿螢幕的,鋪天蓋地的子彈,因此,對子彈類的設計是遊戲成功的關鍵。 2.1 玩家發射的子彈
預設的子彈為最低殺傷力,最基本的子彈形態
通過獲得敵人掉落的子彈夾,可以改變子彈形態 2.2 普通敵人的子彈
大致分為:
迅速下落的子彈
以敵機自身為中心的向四周擴散的環狀子彈群
設定可以發跟蹤玩家的子彈 2.3 Boss的子彈
具體屬性,分為3個生命階段,
在Boss的每一個生命階段發射不同的子彈
Boss的子彈的特性:密集,發射頻率快 2.4 對通用子彈模組的抽取
子彈有其共同特徵,單獨抽取出來,便於以後重複利用
3、 碰撞檢測 3.1 如何檢測碰撞
在飛行射擊遊戲中,碰撞是最關鍵的技術,如果不能很好的解決,會影響玩遊戲者的興趣。因為飛行射擊遊戲說白了就是碰撞的遊戲——躲避敵人的子彈或飛機,同時用自己的子彈去碰撞敵人。
採用矩形檢測,首先設定檢測矩形地區,通過迴圈判斷飛機、子彈之間的距離值來判斷。 3.2 對碰撞做出的反應
一旦確定兩個物體發生了碰撞,就要對這種情況做出反應。最簡單的反應就是將其中的一個對象(或者兩個)從遊戲中刪除。這在這種類型的遊戲中是很常見的。
A:敵機子彈與玩家控制的戰艦發生碰撞
玩家戰艦減血,直到沒有生命。戰艦發生劇烈的爆炸(播放動畫,一組連續的圖片),子彈消失
B:玩家子彈與敵人普通戰艦發生碰撞
敵機爆炸。播放動畫,子彈消失
C:玩家子彈與BOSS碰撞
Boss減血,直到生命終結。然後發生爆炸 3.3 玩家效果顯示的控制
爆炸效果:爆炸圖片與玩家飛機圖片分開存放
若隱若現效果:通過控制玩家的顯示狀態和時間綜合控制
4、 敵人 4.1 普通敵人智能
至少有3種類型的敵人:
比如:空中懸浮的炮塔
大型戰艦
地上的坦克,炮口緩慢的指向玩家 4.2 Boss智能
應該設計不同的關卡不同的BOSS,
能夠隨機的改變位置
有一定的機率向玩家急速衝過來
有一定的機率尾隨玩家
主要是跟隨與躲避演算法 4.3 自身屬性
A:普通敵人的各項屬性
能夠經受多久的打擊。
子彈發射的頻率
會追擊玩家嗎?
B:BOSS的各項屬性
是否具有大招的功能
設計多種不同的大招
每一個關卡的BOSS的技能
5、 遊戲按鍵
考慮到有些玩家的手機鍵盤上的方向鍵不是特別規則或者說不好操作,應該設計數字鍵與方向鍵相對應。
在這種激烈的飛行遊戲當中,按鍵的響應速度要重點考慮,比如:當按右鍵,飛機向右移動,鬆開右鍵的時候,飛機應該馬上停止右移。
這樣,左右按鍵分別控制飛機的左右移動,預設情況下飛機會隨螢幕緩慢的向上移動,設定上鍵可以實現飛機的加速功能,這在躲避敵人尾隨追擊的時候會起到很大的作用。
6、遊戲存檔
對於每一次啟動都要從頭開始的遊戲,玩家是不會感興趣的,因此我們必須提供遊戲存檔功能,以儲存當前遊戲所在的關卡和其他的一些狀態資訊,所有的這些資訊都通過記錄管理系統(RMS)儲存到儲存空間中,當玩家返回遊戲的時候,他可以選擇恢複以前的狀態。 7、效率 7.1 忽略微小的細節問題
在遊戲中大量的時間,資源耗費在碰撞檢測中,為了遊戲的效能、效率在不影響遊戲的可玩性的情況下需要忽略一些細節問題。如在碰撞的時候,不必糾纏於幾個像素之間的距離
7.2 不要頻繁的建立對象
用對象池來減少對象建立的總數量和頻率,這樣可以大大提高遊戲的效能。要認真考慮每一個對象建立的意義。 7.3 繪製螢幕的問題
遊戲的大部分耗在了繪製映像上,減少螢幕的重繪次數對效能提高有好處。我們可以迴圈檢測螢幕映像是否在某個部分發生了改變,如果沒有就不用對那部分的螢幕進行更新。另外一個方法就是增加繪製映像的尺寸來減少單獨得繪製調用次數 7.4 提前繪製複雜映像
可以使用螢幕緩衝 7.5 節省運算
對數值進行預計算,就可以避免再調用大開銷的計算方法。
8、相容性 8.1 採用低版本midp和cldc
為了適應各種機型(包括低效能機型),建議採用midp1.0和cldc1.0實現。 8.2 不同螢幕大小問題
為了適應各種機型螢幕,建議採用相對座標或ant配置。
9、飛機模組 9.1 飛機模組的抽取
對于飛機無論是玩家還是非玩家的飛機可抽去其共性。在以後的實現中,玩家和敵人的飛機都可以由一個基類來派生。
10、關卡
關卡地圖的設定:
不同的關卡需要不同樣子的地圖。應該在外面定義LEVEL檔案來定義各個關卡的具體屬性。這是目前一種很流行的方法。 11、遊戲特效
飛行射擊類遊戲最主要的就是其爆炸的特效,首先就需要給玩家以視覺上面的震撼。
A:玩家發大招,特效的設計問題
B:敵人BOSS的大招