第五章
編寫自己的XNA映像引擎
5.1本章概覽
在本書的第一部分,您學習了XNA Framework,使用SpriteBatch類渲染2D映像,並且做了幾個有趣的小遊戲。現在,是時候探索更加令人興奮的3D映像編程世界了。製作3D遊戲比拼裝一個2D遊戲需要更多的工作量,如果沒有3D映像技術的飛速發展,很多遊戲都是不可能完成的。有些遊戲也可以是2D的,例如即時戰略遊戲,而且大多數成功的即時戰略遊戲(例如星際爭霸、魔獸爭霸、命令與征服、帝國時代等)都證實了2D遊戲仍然很受歡迎。但如果您看一下射擊類遊戲,沒有3D映像的支援它們都是不可能實現的,並且通常映像品質越好、越逼真,遊戲也就越好玩。其它一些遊戲類型,比如橫板闖關類(beat-'em-ups)、冒險類、體育競技類等等,也都獲益於近幾年映像技術的進步。當然,在10年或者20年前,Pong以及早期的Tennis遊戲也都很受歡迎,但它們都無法和今天的體育競技類遊戲相提並論。
XNA是一個很棒的快速建立2D遊戲的架構,即使您是個人,也完全有可能快速鼓搗出一個遊戲構思,自己做幾張圖片或者找人幫您做圖片,然後用不了幾個星期或者幾個月就可以編寫出整個遊戲。
但是,大多數遊戲開發人員都更加熱衷於製作3D遊戲。而且,幾乎每個人都常犯一個錯誤,那就是拿他們自己的遊戲創意和那些大的遊戲工作室花費好幾年才完成的擁有AAA頭銜的最成功的遊戲作品相比較。如果您是個人,您根本不肯能和EA出的遊戲相競爭,即使您認為他們的遊戲還不夠好,因為他們擁有超過100人的經驗豐富的遊戲工作室來開發遊戲。
但這都無關緊要,我們大多數人進入遊戲開發領域只因為我們喜歡,有時還因為我們相信我們能比其他人做得更好。好的一方面是,雖然製作一個成熟的可以和AAA級遊戲相競爭的3D遊戲很困難,但您必須要從某個地方開始,隨著我們的不斷講解,步入3D編程世界會變得越來越容易。有很多大型網站、學習指南、開發架構和書籍可以快速協助那些即使是沒有什麼開發經驗的編程人員進入製作3D遊戲映像的大門。
既然有了這麼多的學習資源,我不會把重點放在講解諸如數學基礎、如何使用矩陣或者其它有關3D映像的基礎知識等方面。因為對於很多已經瞭解這些知識的編程人員來說,介紹這些東西會很無聊,而且這也會佔用更多的篇幅。就如我在第一章中告訴您的,如果您對C#編程沒什麼經驗,那麼您應該先從閱讀介紹C#的書籍開始。如果您真的很想瞭解有關3D映像的基礎知識,那麼就找本書看看吧。如果您之前有使用Direct3D或者OpenGL方面的經驗,那您應當已經瞭解這些基礎了(希望大多數讀者都是這樣),就可以開始學習本章的內容了。
本章仍使用了典型的學習路線,即先寫需求,並針對這些需求建立單元測試,然後再深入到每一個需要的新的類的細節中。正如本章標題所說,您的目標是建立自己的映像引擎,並為本書剩餘的項目和遊戲準備好基礎架構。上一章的Tetris遊戲已經使用了很多有用的輔助類,有些新的映像類要在本章進行重構,另外還會添加幾個新的類。重構的意思是,有些類需要重寫以滿足新的需求。