4.7 本章摘要
現在,您的小規模的遊戲引擎擁有了三個新的命名空間,並且擁有很多將來項目中可以使用的輔助類,而其中TextureFont類對接下來的幾章將特別有用。它不僅可以用於顯示類似記分板這樣的遊戲資料,還可以用於單元測試。在單元測試中,它可以顯示一些協助性的文字告訴玩家所有可用的熱鍵,尤其當您遇到問題時,還可以顯示測試及調試資訊。例如,一個camera類的單元測試可以輸出camera的位置資料以及旋轉資料,這樣就可以知道在測試進行的時候到底都發生了什麼。
我希望您在閱讀這四章內容的時候能感受到一些樂趣,並喜歡您所開發的幾款樣本遊戲。Arcade遊戲很好玩,但僅僅編寫簡單的2D遊戲無法體現科技水平的進步,而且您也不會太在意去編寫一個複製版的Pong遊戲。然而,基於學習的目的,為了介紹所有的輔助類,也為了學習更多有關敏捷方法學以及單元測試的知識,使用這些實際的項目要比僅僅談論一些理論以及那些無趣的輔助類要有用得多。
本書接下來一部分將帶您進入3D世界,並教您如何寫自己的3D映像引擎。您沒必要成為一個數學教授來理解如何在螢幕上輸出模型,藉助於XNA及其內容管道,您不用知道底層的有關數學以及3D幾何學方面的東西,就可以在螢幕上渲染3D資料。如果您對3D圖形編程高度興趣,就應該知道一些向量、矩陣方面的知識,以及如何正確地操作它們。要瞭解3D遊戲編程世界裡的所有知識不僅要求您很聰明,還要求您要通過不斷的閱讀來瞭解這個領域中的新知識。
如果您是一個遊戲開發人員,您可能不太關心底層的映像引擎代碼,而把精力集中在遊戲本身。然而,大多數人都想製作非常酷的遊戲,這通常意味著他們還必須要建立自己的遊戲引擎,因為沒有完美的3D引擎可用,而且遊戲中的每個特性都可能要求使用不同的方式來渲染3D資料。在您的遊戲引擎足夠處理更加複雜的遊戲之後,本書的最後一部分將討論更多有關遊戲編程方面的知識。
最後來看一下前幾章您所學到的內容:
- 把您的想法寫下來這很重要,最好限制在一頁紙的篇幅
- 使用自頂向下的方式以及單元測試來解決問題
- 您還學了處理使用者輸入、播放聲音和繪製sprites。所有這些在XNA中都很容易做到,但為了避免一遍又一遍地重複編寫相同的代碼,您可以把它們實現為輔助類
- 介紹了很多輔助類來協助您渲染素材字型、處理字串、遍曆枚舉、操作顏色、寫日誌等等
- 在任何一個遊戲中寫一些碰撞檢測都是很有必要的。在前兩個遊戲中您使用了BoundingBox結構來檢測2D碰撞,本章中您則藉助MoveBlock方法來處理Tetris網格中的所有碰撞
- 單元測試很重要,尤其是使用靜態單元測試幫了您很大的忙,而且在本章中使得建立遊戲的過程比不使用單元測試更加有趣也更有效率