1. 程式人生 > >android遊戲開發的架構

android遊戲開發的架構

 在編寫遊戲程式碼之前,必須要仔細地理順思路,清晰地構建出整個遊戲的框架。有的開發者經常抱怨說,遊戲開發到最後總是千頭萬緒,一旦出現bug就不知道該如何修改,身心疲憊甚至是痛不欲生。其實不然,只要搭建好了遊戲的架構,就不會再走到騎虎難下的尬境,遊戲開發就會成為一個極其享受的過程,成為一個高技術性的商業藝術創造過程。
  我們將逐步地展示“是男人就堅持20秒”遊戲架構的搭建過程。在掌握策劃案的基礎上,開發者應該迅速作出判斷,細分出遊戲的功能模組。“是男人就堅持20秒”的功能模組可以如表9-3-4所示進行劃分。

  

  ▲表9-3-4功能模組


  成了專案流程圖之後,還不能直接進行Android遊戲程式設計,專案執行流程和遊戲執行流程是存在著較大差別的。因為專案流程圖只是從使用者體驗角度(或者策劃角度)進行的巨集觀描述,它只是起到過渡作用;而用於程式設計的流程圖則是基於程式角度給出的微觀描述,它將涉及到程式設計的實際環境。因此,我們還需要分析一下游戲實際執行的流程,而我們將要分析的這個流程就是傳說中的“狀態轉換”。是男人就堅持20秒”的遊戲狀態相對比較簡單,只有如表9-5所示的4種狀態。

  

  ▲9-3-5遊戲的4種狀態


  當然,這個遊戲總共就只有一關,所以關卡資源載入就只能載入唯一的一關的資源。
  接下來,就需要來做遊戲狀態的轉換圖了。狀態轉換一般通過有限自動機來表示,“是男人就堅持20秒”的狀態轉換比較簡單,下面給出一種狀態轉換的參考圖,如圖9-3-5所示:

  

  ▲9-3-5遊戲執行階段細化流程圖


  完成了前面幾步的準備工作,框架基本上就已經出來了。雖然“是男人就堅持20秒”的架構比較簡單,但是通用性和擴充套件性都比較強,下面的這段虛擬碼給出了一種高效的遊戲框架,以供參考:While(遊戲未結束)

  {

  State_change();
//狀態轉換

  Update_fps();
//狀態執行

  Draw();
//繪製

  }

  • State_change()函式完成遊戲狀態間的轉換,可以根據圖9
-3狀態轉換圖實現,不再贅述。

  • Update_fps()函式框架的虛擬碼如下:

  Update_fps()

  {

  Switch(遊戲狀態)

  
Case 資源載入:

  
Case 進入關卡:

  Load_gate();
//載入背景、飛機、炮彈的圖片。

  ase 遊戲選單:

  
If (遊戲結束) 計算遊戲結果

  ase 遊戲進行:

  New_paodan();
//產生新炮彈

  Move();
//計算出該時刻飛機以及所有炮彈所在的位置

  Is_pengzhuang();
//碰撞判斷

  ase 遊戲暫停:

  Thread_pause();
//遊戲暫停操作。

  • Draw()函式框架的虛擬碼如下:

  Draw()

  {

  Switch(遊戲狀態)

  
Case 遊戲進行:

  Draw_background();
//繪製背景

  Draw_paodan();
//畫炮彈

  Draw_feiji();
//畫飛機

  
Case 其他:

  略....

  }




  注意:
  • 上述的draw()函式參考框架並不是適用於所有遊戲的。特別是使用了3d特效,或者需要實現圖層
  管理器的遊戲。draw()函式應該根據實際需要量身定製。
  • 上述的draw()函式參考框架並不能保證繪圖效能最優,高效能的影象繪製框架將非常複雜。
  完成了遊戲架構之後,不要忘記把思考的結晶凝結為文件資料。建議完成如下文件:
  • 專案開發時程表
  • 功能模組劃分及介面表
  • 技術備案表
  這三個表將幫助遊戲開發人員明晰責權、監管制作,併為資料統計提供便利。