出版時(shí)間:2008-6 出版社:第1版 (2008年6月1日) 作者:謝里德 (Allen Sherrod) 頁數(shù):692 字?jǐn)?shù):1017000 譯者:狄東寧
Tag標(biāo)簽:無
前言
3D游戲開發(fā)已經(jīng)成為一個(gè)熱門的研究領(lǐng)域。對于那些想要涉足這方面學(xué)習(xí)、研究的人而言,擁有一本這方面的教材已經(jīng)迫在眉睫。如今市面上這類書很多,但在眾多書籍之中這本《DirectX游戲開發(fā)終極指南》卻有它的獨(dú)到之處,它圍繞一個(gè)實(shí)例由淺入深地將游戲開發(fā)這個(gè)高深的主題娓娓道來?! ”緯饕榻B在Microsoft公司的DirectX軟件開發(fā)包上開發(fā)3D游戲的全過程。作為一本拋磚引玉的游戲編程書籍,本書盡可能避免對高深的游戲編程理論的介紹,這有利于引起初學(xué)者的興趣。同時(shí)整本書結(jié)合了一個(gè)游戲開發(fā)實(shí)例,這也可以很大程度地提高讀者的學(xué)習(xí)興趣。讀者學(xué)完本書后,應(yīng)該對如何在Windows平臺(tái)上開發(fā)3D游戲有一個(gè)完整的了解,這對于今后從事游戲開發(fā)工作或是深入研究都大有裨益?! ”緯譃?個(gè)主要部分,從頭至尾介紹了整個(gè)3D游戲的開發(fā)。第一部分重點(diǎn)介紹了使用Direct3D API生成DirectX圖形的內(nèi)容。第二部分重點(diǎn)介紹了游戲數(shù)學(xué)、碰撞檢測、輸入檢測和游戲聲音等內(nèi)容。第三部分重點(diǎn)介紹了模型加載和3D場景中的動(dòng)畫與場景管理。本書還在附錄中介紹了游戲開發(fā)的相關(guān)書籍和推薦的一些資源?! ”緯瓤勺鳛橛螒蜷_發(fā)愛好者的入門書籍,也可作為游戲開發(fā)人員的培訓(xùn)教材,對那些高級游戲程序員而言,本書也可作為他們的案頭參考書?! g迎各位讀者對本書提供反饋意見。我希望讀者能從本書中受益,也希望通過讀者的反饋意見來了解自己的不足,以求在今后的譯作中更多更切實(shí)際地考慮讀者的需要。
內(nèi)容概要
開發(fā)計(jì)算機(jī)游戲充滿了挑戰(zhàn)性,需要開發(fā)人員具備大量的技能,富有奉獻(xiàn)和創(chuàng)新精神。本書向讀者介紹了如何將自身的技能與一些基本的C++編程技能結(jié)合起來,開發(fā)出自己的游戲。本書涵蓋了游戲開發(fā)過程和方方面面,書中以一個(gè)名為Straned的第一人稱射擊游戲開發(fā)過程為主題展開介紹,首先介紹了DirectX 和Direct3D圖形學(xué),然后逐章介紹了游戲引擎和完整游戲的開發(fā)過程。主要內(nèi)容涉及到基本的圖形學(xué)技術(shù)、最基本的數(shù)學(xué)知識(shí)、碰撞檢測和響應(yīng)、聲音回放、場景管理、動(dòng)畫以及模型/角色的加載和繪制。 一旦讀者開發(fā)出該游戲,就可以輕松地對其功能進(jìn)行擴(kuò)展,并定制該游戲,添加一些特有的功能。如果讀者已經(jīng)具備了基本編程 技能且熱愛游戲開發(fā)出自己的游戲,那么可以在本書中找到大量所需的素材?! ”緯m合于想實(shí)踐游戲開發(fā)的學(xué)生、游戲編程的初學(xué)者以及想要學(xué)習(xí)游戲開發(fā)的C++程序員。
作者簡介
Allen Sherrod畢業(yè)于DeVry大學(xué),獲得了計(jì)算機(jī)信息系統(tǒng)專業(yè)學(xué)士學(xué)位,是www.UltimateGameProgramming.com游戲編程網(wǎng)站的創(chuàng)建者,這是一個(gè)面向游戲開發(fā)初學(xué)者和游戲編程愛好者的網(wǎng)站。Allen為這個(gè)廣受歡迎的網(wǎng)站定期撰寫文章并開發(fā)了大量的代碼。在過去9年中,他一直在使
書籍目錄
第1章 DirectX導(dǎo)論 1.1 本書概述 1.1.1 編寫本書的目的 1.1.2 讀者對象 1.1.3 工具和資源 1.2 游戲規(guī)劃 1.2.1 項(xiàng)目Stranded概述 1.2.2 設(shè)計(jì)概述 1.2.3 引擎設(shè)計(jì)概述 1.2.4 渲染系統(tǒng) 1.2.5 輸入系統(tǒng) 1.2.6 聲音系統(tǒng) 1.2.7 物理系統(tǒng) 1.2.8 動(dòng)畫系統(tǒng) 1.2.9 人工智能(AI)系統(tǒng) 1.3 DirectX背景 1.3.1 DirectGraphics 1.3.2 DirectInput 1.3.3 DirectPlay 1.3.4 DirectMusic 1.3.5 DirectSound 1.3.6 安裝DirectX 9.0 SDK 1.4 手動(dòng)設(shè)置窗口 1.4.1 創(chuàng)建和顯示Direct3D窗口 1.4.2 使用Direct3D繪制圖元 1.4.3 Direct3D頂點(diǎn)緩存 1.4.4 坐標(biāo)系 1.5 演示程序 1.5.1 Lines演示程序 1.5.2 Triangle演示程序 1.5.3 Quad演示程序 1.5.4 Ortho Matrix演示程序 1.5.5 Perspective Projection Matrix演示程序 1.5.6 World Matrix演示程序 1.5.7 View Matrix演示程序 1.5.8 深度測試 1.5.9 模板源文件 1.5.10 使用DirectX框架設(shè)置Direct3D 1.6 總結(jié) 第2章 游戲:Stranded 2.1 游戲規(guī)劃導(dǎo)論 2.2 游戲規(guī)劃 2.1.1 角色模型 2.1.2 菜單和界面 2.1.3 環(huán)境 2.1.4 游戲劇本 2.3 引擎規(guī)劃 2.3.1 渲染系統(tǒng) 2.3.2 輸入系統(tǒng) 2.3.3 聲音系統(tǒng) 2.3.4 人工智能 2.3.5 數(shù)學(xué)庫 2.4 游戲項(xiàng)目概述 2.4.1 游戲項(xiàng)目第1部分 2.4.2 游戲項(xiàng)目第2部分 2.4.3 游戲項(xiàng)目第3部分 2.4.4 游戲項(xiàng)目第4部分 2.4.5 游戲項(xiàng)目第5部分 2.4.6 游戲項(xiàng)目第6部分 2.4.7 游戲項(xiàng)目第7部分 2.4.8 游戲項(xiàng)目第8部分 2.4.9 游戲項(xiàng)目第9部分 2.4.10 游戲項(xiàng)目第10部分 2.4.11 游戲項(xiàng)目第11部分 2.4.12 游戲項(xiàng)目第12部分 2.5 游戲項(xiàng)目第1部分:啟動(dòng)項(xiàng)目 2.5.1 游戲源文件 2.5.2 引擎源文件和頭文件 2.5.3 D3DRenderer.cpp 2.6 總結(jié) 第3章 Direct3D光照和物體 3.1 Direct3D光照導(dǎo)論 3.1.1 光源 3.1.2 反射模型 3.1.3 光照和繪影技術(shù) 3.2 使用Direct3D函數(shù)創(chuàng)建物體 3.3 在Direct3D中創(chuàng)建光照 3.4 游戲項(xiàng)目第2部分:增加對硬件光照的支持 3.5 總結(jié) 第4章 紋理 4.1 Direct3D中的紋理介紹 4.2 創(chuàng)建和使用紋理 4.2.1 紋理坐標(biāo) 4.2.2 Mipmap 4.2.3 紋理質(zhì)量 4.2.4 Textures演示程序 4.2.5 多紋理貼圖 4.2.6 Multitexture貼圖演示程序 4.2.7 透明度 4.2.8 Transparency演示程序 4.2.9 立方體貼圖紋理 4.3 sprite(子圖形) 4.3.1 點(diǎn)狀sprite 4.3.2 Point Sprites演示程序 4.4 凸凹貼圖 4.5 保存紋理 4.6 幕外渲染 4.7 游戲項(xiàng)目第3部分:增加對紋理的支持 4.8 總結(jié) 第5章 Direct3D文本和圖形用戶界面 5.1 在屏幕上顯示文本 5.2 計(jì)算幀率 5.3 創(chuàng)建和顯示圖形用戶界面 5.3.1 狀態(tài)顯示界面(HUD) 5.3.2 GUI演示程序 5.3.3 main源文件 5.4 游戲項(xiàng)目第4部分:添加文本和GUI支持 5.4.1 游戲源文件 5.4.2 游戲項(xiàng)目引擎文件 5.5 總結(jié) 第6章 特效 6.1 多采樣 6.2 霧 6.3 細(xì)節(jié)映射 6.4 粒子系統(tǒng) 6.5 游戲項(xiàng)目第5部分:增加特效 6.6 總結(jié) 第7章 基本腳本系統(tǒng) 7.1 腳本介紹 7.2 屬性腳本系統(tǒng) 7.3 命令腳本系統(tǒng) 7.4 令牌流 7.5 其他類型的腳本系統(tǒng) 7.6 游戲項(xiàng)目第6部分:增加對腳本的支持 7.7 總結(jié) 第8章 游戲數(shù)學(xué)回顧 8.1 游戲數(shù)學(xué)介紹 8.2 矢量數(shù)學(xué)和回顧 8.3 矩陣數(shù)學(xué) 8.3.1 矩陣復(fù)習(xí) 8.3.2 Direct3D矩陣 8.4 四元組數(shù)學(xué) 8.5 射線數(shù)學(xué) 8.6 平面數(shù)學(xué) 8.6.1 平面復(fù)習(xí) 8.6.2 Direct3D平面 8.7 三角形和多邊形 8.8 物理 8.9 游戲項(xiàng)目第7部分:創(chuàng)建數(shù)學(xué)庫 8.10 總結(jié) 第9章 碰撞檢測 9.1 碰撞介紹 9.2 邊界框 9.3 邊界球 9.4 平面碰撞 9.5 演示程序 9.5.1 邊界框碰撞 9.5.2 球碰撞 9.5.3 平面碰撞 9.6 游戲項(xiàng)目第8部分:添加碰撞檢測 9.7 總結(jié) 第10章 輸入檢測和響應(yīng) 10.1 使用DirectInput 10.2 DirectInput演示程序 1 0.3 游戲項(xiàng)目第9部分:添加輸入系統(tǒng) 10.4 總結(jié) 第11章 聲音 11.1 聲音介紹 11.1.1 DirectSound 11.1.2 DirectMusic 11.2 使用DirectMusic和DirectSound 11.3 聲音演示程序 11.3.1 main源文件 11.3.2 演示程序的頭文件和源文件 11.4 游戲項(xiàng)目第10部分:添加聲音 11.5 總結(jié) 第12章 模型加載 12.1 模型加載介紹 12.2 使用X文件 445 12.2.1 X文件格式介紹 12.2.2 Material模板 12.2.3 Mesh模板 12.2.4 MeshMaterialList模板 12.2.5 MeshTextureCoords模板 12.2.6 加載和渲染X模型 12.2.7 X Model Loading演示程序 12.3 使用OBJ文件 12.3.1 OBJ文件格式介紹 12.3.2 OBJ Model Loading演示程序 12.4 使用UMF文件 12.4.1 UMF文件格式介紹 12.4.2 UMF模型加載演示程序 12.5 游戲第11部分:加載模型 12.5.1 添加模型加載支持 12.5.2 加載和渲染等級 12.6 總結(jié) 第13章 模型動(dòng)畫 13.1 動(dòng)畫介紹 13.2 動(dòng)畫路徑 13.2.1 直線路徑 13.2.2 曲線路徑 13.2.3 圓形路徑 13.2.4 路線 13.3 骨骼動(dòng)畫 13.4 X模型動(dòng)畫 13.5 游戲項(xiàng)目第12部分:添加對動(dòng)畫的支持功能 13.6 總結(jié) 第14章 場景管理 14.1 場景管理介紹 14.2 場景管理技術(shù) 14.2.1 狀態(tài)管理 14.2.2 閉塞物和平截頭體選擇 14.2.3 八叉樹和四叉樹 14.2.4 二叉搜索樹 14.2.5 可能可見度集合 14.3 總結(jié) 第15章 完成游戲引擎設(shè)計(jì) 15.1 日志系統(tǒng) 15.2 3D攝像機(jī)系統(tǒng) 15.3 平截頭體選擇 15.4 游戲項(xiàng)目第13部分:完成引擎設(shè)計(jì) 15.5 總結(jié)第16章 開發(fā)游戲:Stranded 16.1 本章概述 16.2 組織游戲資源 16.3 加載和顯示最終的游戲 16.4 攝像機(jī)移動(dòng)和碰撞檢測 16.5 游戲元素 16.6 代理角色 16.7 打包 16.8 總結(jié) 第17章 結(jié)束語 17.1 最后的思考 17.2 下一步的工作 附錄A 推薦的書籍和網(wǎng)站 A.1 推薦的書籍 A.1.1 游戲和圖形編程 A.1.2 通用編程 A.1.3 人工智能(AI)和數(shù)學(xué) A.2 推薦的網(wǎng)站 附錄B C++入門 B.1 C++基礎(chǔ) B.2 動(dòng)態(tài)內(nèi)存和文件輸入/輸出 B.3 結(jié)構(gòu)和類 B.4 總結(jié) 附錄C 關(guān)于光盤 C.1 文件夾 C.2 一般系統(tǒng)要求
章節(jié)摘錄
第1章 DirectX導(dǎo)論 從某種程度上講,游戲編程和開發(fā)是極具潛力且激動(dòng)人心的行業(yè)。它發(fā)展迅猛、富有挑戰(zhàn)性并帶給那些為之努力工作并且超越極限的人非常豐厚的回報(bào)。游戲開發(fā)需要一批極富創(chuàng)造力的人協(xié)同工作,從而開發(fā)出新的游戲產(chǎn)品。這些人包括軟件開發(fā)人員、作家、音效師、數(shù)學(xué)家、物理學(xué)家、藝術(shù)家以及許多其他人員。每個(gè)人面臨的職責(zé)、應(yīng)對的挑戰(zhàn)和得到的回報(bào)也各不相同。游戲產(chǎn)業(yè)自誕生以來,規(guī)模已得到長足發(fā)展?,F(xiàn)在它已經(jīng)可以和諸如電影、音樂、電視這樣的產(chǎn)業(yè)競爭。這個(gè)每年可以帶來數(shù)百億美元利潤的產(chǎn)業(yè)隨著時(shí)間的推移、技術(shù)的強(qiáng)大和效率的提高也在不斷地增長。視頻游戲已經(jīng)存在數(shù)十年了,而且還在快速增長。隨著越來越多游戲玩家的成長,游戲產(chǎn)業(yè)帶來的經(jīng)濟(jì)利潤就越來越大。大部分購買游戲的人都是成年人。這沒有什么值得奇怪的,因?yàn)榇蠖鄶?shù)孩子沒有很多的錢去購買游戲,而等到他們長大成人后,就有錢買游戲了。 游戲開發(fā)并不總是充滿樂趣和令人興奮。開發(fā)交互式軟件是一件艱苦且充滿挑戰(zhàn)的事情,對此從來都不要掉以輕心。開發(fā)游戲像玩游戲一樣有趣,但同時(shí)需要做大量的工作和付出很多的心血。許多人一想到這一點(diǎn)就會(huì)因氣餒而放棄。游戲開發(fā)中最困難也是最讓人有挫折感的部分是學(xué)習(xí)如何開發(fā)游戲的方法。學(xué)習(xí)基礎(chǔ)知識(shí)就會(huì)為你今后提高能力和技術(shù)水平打下堅(jiān)實(shí)的基礎(chǔ)。如同在任何領(lǐng)域中一樣,通常需要耗費(fèi)幾年的時(shí)間才能開發(fā)出專業(yè)級別的游戲,只要有耐心、沖勁和決心,就能做到這一點(diǎn)?! ”緯鵀樽x者介紹使用DirectX開發(fā)游戲的方法。本章將介紹DirectX,更確切地說是Direct3D圖形知識(shí)。隨著本書的深入,讀者同樣會(huì)學(xué)到繪圖技巧、輸入設(shè)備檢測和響應(yīng)、聲音回放、場景管理、動(dòng)畫、模型/角色的加載和繪制等內(nèi)容?! ?.1 本書概述 本書將使用DirectX軟件開發(fā)包(SDK)開發(fā)一個(gè)名為Stranded的第一人稱射擊游戲。本書從頭至尾將為該游戲編寫代碼,這樣可以給讀者一個(gè)清晰的概念,即在DirectX基礎(chǔ)上開發(fā)游戲所需掌握的內(nèi)容。某些章節(jié)的結(jié)尾處有一些名為“游戲項(xiàng)目”的內(nèi)容。這樣可以將在當(dāng)前或前面章節(jié)中學(xué)到的知識(shí)運(yùn)用到本書的游戲項(xiàng)目中。到學(xué)完本書時(shí),讀者會(huì)在開發(fā)自己的第一個(gè)3D游戲方面取得進(jìn)步。 本書分為5個(gè)部分。第一部分涉及到DirectX圖形學(xué)的基礎(chǔ)知識(shí),包括Direct3D的安裝和使用,DirectX中控制屏幕渲染等內(nèi)容。讀者具備這些基礎(chǔ)知識(shí)后,就可以立即開發(fā)出一個(gè)短小而且包含Direct3D場景的演示程序。這些基本技能包括繪制基本圖形和對象,在幾何圖形表面顯示圖像,在屏幕上創(chuàng)建和顯示文本以及學(xué)會(huì)3D場景中的游戲開發(fā)方法?! ”緯诙糠稚婕暗接螒蛑泄灿玫木幊虜?shù)學(xué)知識(shí)和碰撞檢測。這部分內(nèi)容非常重要,因?yàn)橛螒蛞约捌渌换蕵菲脚_(tái)都涉及了大量的數(shù)學(xué)知識(shí)。從渲染圖形到移動(dòng)人物等,所有這些都需要數(shù)學(xué)知識(shí)。使用本書或?qū)W習(xí)游戲開發(fā)時(shí),讀者不必具備很高的數(shù)學(xué)水平,但經(jīng)驗(yàn)越多,事情做起來就越容易。 本書第三部分將介紹輸入和聲音這部分內(nèi)容。在此,將介紹DirectX家族中的兩部分內(nèi)容:Direct Input和Direct Sound。這些章節(jié)同樣也很重要,因?yàn)槟軌蚝蛙浖M(jìn)行交互(輸入)非常重要,這會(huì)讓產(chǎn)品更像一款真正的游戲。聲音增加了游戲真實(shí)感,并通過影響場景中的狀態(tài)和氛來增強(qiáng)玩家的體驗(yàn)?! ”緯谒牟糠钟懻摿四P图虞d和動(dòng)畫制作。這幾章集中討論了從文件中加載復(fù)雜模型和在3D中將數(shù)據(jù)用動(dòng)畫形式逼真地顯示出來的內(nèi)容。了解游戲數(shù)學(xué)和DirectX(Direct3D)渲染知識(shí),就可以讓人物逼真地在環(huán)境中移動(dòng)?! ”緯詈笠徊糠謱⑼瓿烧麄€(gè)游戲的開發(fā)工作。此時(shí),讀者已經(jīng)做了大量的工作。這些章節(jié)將“整理”在前面章節(jié)中學(xué)習(xí)過的知識(shí),并最終開發(fā)出成品游戲。盡管從編碼角度而言,該游戲非常簡單,但它將會(huì)讓讀者終身獲取非常寶貴的學(xué)習(xí)經(jīng)驗(yàn)?! ∽x者學(xué)習(xí)完本書后,一定要查看附錄A中推薦的書籍和網(wǎng)站。從中可以獲取將來在游戲開發(fā)中加深學(xué)習(xí)而要用到的補(bǔ)充資源和參考資料?! ?.1.1 編寫本書的目的 本書旨在使用入門級游戲程序員知識(shí),開發(fā)一個(gè)簡單的第一人稱射擊游戲。讀者通過編寫該游戲,將了解到游戲設(shè)計(jì)和開發(fā)的整個(gè)過程。此外,讀者同樣可以開發(fā)一個(gè)讓自己的朋友和家人留下深刻印象的游戲?! ‰m然讀者在學(xué)習(xí)本書時(shí),不需要有任何的游戲開發(fā)和DirectX使用經(jīng)驗(yàn),但是應(yīng)該有一些編程經(jīng)驗(yàn)。本書是一塊墊腳石,它將帶領(lǐng)讀者進(jìn)入到游戲開發(fā)的廣闊空間中。本書并不是一本涉及到游戲開發(fā)全部內(nèi)容的“終極指南”,它只是一個(gè)開端。讀者可以將其作為一本參考資料加以收藏,在將來需要時(shí)可以在其中查找對自己有用的信息?! ?.1.2 讀者對象 本書面向的讀者是那些希望在Windows操作系統(tǒng)上使用DirectX進(jìn)行游戲開發(fā)的C++程序員。雖然讀者不一定要是C++大師,但掌握這方面的知識(shí)對讀者大有裨益,例如掌握面向?qū)ο缶幊?。另外,讀者不必有任何游戲編程或圖形編程經(jīng)驗(yàn),就可以享受到游戲開發(fā)的樂趣,并從本書獲取大量有用的信息。本書僅涉及面向?qū)ο缶幊毯蛙浖_發(fā)的一般主題,非常適合那些以此為愛好的程序員、學(xué)生以及希望在這個(gè)行業(yè)中找到工作的人閱讀?! ∪绻x者想要學(xué)習(xí)DirectX,但是又沒有任何編程經(jīng)驗(yàn),則可以參閱附錄A中列出的一些書籍。這些書籍有助于讀者在編程方面的入門。同樣,附錄中還推薦了一些該領(lǐng)域的書籍和資源,它們有助于提高讀者的技能水平,這些資源已超出了本書的討論范圍,包括編程、軟件開發(fā)、數(shù)學(xué)、人工智能、物理學(xué)以及高級圖形學(xué)和引擎編程等。 1.1.3 工具和資源 本書基于DirectX 9.0進(jìn)行開發(fā)工作,所以讀者務(wù)必要有一套最新版的DirectX 9.0軟件開發(fā)包(DirectX 9.0 SDK)。讀者可以從Microsoft公司的www.Microsoft.com/DirectX網(wǎng)站上下載該軟件開發(fā)包。本書的代碼示例同樣可以使用Microsoft公司的VisualStudi0.NET 2003集成開發(fā)環(huán)境編譯。讀者也可以使用以前版本的Visual Studi0集成開發(fā)環(huán)境,但要在該環(huán)境中創(chuàng)建自己的項(xiàng)目,以便對代碼示例進(jìn)行編譯。如果讀者有最新版本的Visual Studio,就可以直接打開用Visual Studio.NET 2003開發(fā)的項(xiàng)目而不會(huì)出現(xiàn)任何問題?! 〕烁戒汚中提到可以幫助讀者提高編程能力的資源外,讀者還可以登錄到www.UltimateGameProgrammin9.com網(wǎng)站,使用該網(wǎng)站提供的資源。讀者在此可以找到一個(gè)提供大量游戲開發(fā)知識(shí)和文章的社區(qū),這些知識(shí)和文章涉及多個(gè)不同專題,供讀者學(xué)習(xí)使用,以幫助讀者解決學(xué)習(xí)過程中遇到的問題。像可以隨意下載代碼示例一樣,讀者可以自由參與網(wǎng)站上的各種討論?! ?.2 游戲規(guī)劃 如前所述,本書旨在開發(fā)一款簡單的DirectX第一人稱射擊游戲。通過本書大部分章節(jié)中最后一部分“游戲項(xiàng)目”的漸進(jìn)學(xué)習(xí),讀者就可以完成這款游戲的開發(fā)工作。讀者通過本書前面四分之三內(nèi)容的學(xué)習(xí),可以編寫簡單的引擎代碼,它可以作為最終游戲的開發(fā)基礎(chǔ)。剩下四分之一的內(nèi)容將編譯和完成最終的游戲。隨書光盤提供了本書中所有的開發(fā)代碼?! ?.2.1 項(xiàng)目Stranded概述 游戲Stranded的風(fēng)格與《雷神之錘》(Quake)和《虛幻》(Unreal)這類游戲很相似。游戲是在名為Stranded的游戲引擎基礎(chǔ)上開發(fā)的。本書通篇都是同時(shí)進(jìn)行游戲引擎和游戲的開發(fā)工作。每章將會(huì)解開游戲開發(fā)的一部分難題,直到完成一個(gè)簡單的3D游戲?yàn)橹埂.?dāng)讀者學(xué)完本書時(shí),如果想要將自己的工作提高一個(gè)層次,那么書中提供的任何代碼都很容易擴(kuò)展,或是可以毫不費(fèi)力地更換其中的代碼?! 】梢允褂面I盤和鼠標(biāo)或游戲墊(game pad)等輸入設(shè)備玩游戲。如果喜歡的話,讀者可以添加其他設(shè)備,因?yàn)镈irectlnput作為DirectX的輸入,可以方便高效地檢測所有輸入設(shè)備。同樣,游戲可以為武器提供3D聲效,如同在點(diǎn)擊游戲主菜單時(shí)出現(xiàn)的環(huán)境音樂。3D聲音似乎是從游戲中某個(gè)位置發(fā)出的聲音。聲音文件主要采用.wav格式,可以使用如Reason 3.0這樣的聲音/音樂開發(fā)軟件編制?! tranded在環(huán)境和環(huán)境物體的重力和碰撞中用到了簡單的物理學(xué)知識(shí)。由于物理學(xué)是一個(gè)不可能詳細(xì)介紹的龐大領(lǐng)域,所以只能對簡單的內(nèi)容加以介紹。書中同樣還介紹了簡單的腳本系統(tǒng),這樣初學(xué)者可以涉足腳本系統(tǒng)這一領(lǐng)域的學(xué)習(xí)。同樣,附錄A還推薦了可以幫助讀者開發(fā)更復(fù)雜腳本系統(tǒng)的資源,當(dāng)然也可以使用現(xiàn)有的腳本系統(tǒng)。在學(xué)完本書后,有些程序員可能希望開發(fā)出更復(fù)雜的腳本系統(tǒng)?! 膱D形角度而言,游戲非常簡單,因?yàn)楸緯繕?biāo)只是對游戲編程做一個(gè)入門級介紹。如果希望深入開發(fā)工作,讀者在學(xué)完本書后,添加更高級的圖形也是不難實(shí)現(xiàn)的。實(shí)際上,可以使用本書的源代碼創(chuàng)建更高級的圖形,一方面由于本書空間所限,另一方面因?yàn)檫@也超出了本書的討論范圍,所以本書刪除了這部分內(nèi)容?! ∮螒蛑惺褂玫娜斯ぶ悄埽ˋI)非常簡單。人工智能是一個(gè)巨大的研究領(lǐng)域,它能真正讓游戲給人留下深刻印象,讓人愿意去觀看和進(jìn)行交互。人工智能使讀者可以和游戲自身進(jìn)行交互,但它并不能模仿最新最好的游戲。任何學(xué)完本書的人都可以在編寫代碼基礎(chǔ)上,繼續(xù)開發(fā)更高級和效率更高的人工智能?! ∮螒虮旧砗芎唵巍V鹘鞘且粋€(gè)陷落在地球上的外星人。第一個(gè)任務(wù)是主角為了返回家鄉(xiāng),要找到一個(gè)像飛船一樣的物體。在尋找該物體的過程中,主角會(huì)遭遇試圖抓他并獲取其技術(shù)的敵人。這意味著有兩類角色:敵人和外星人。每一類角色可以共用一種武器。同樣,游戲只有單場景:一座荒島。一旦開發(fā)完這個(gè)基本游戲,讀者就可以為其添加更多的武器、角色、場景等?! ?.2.2 設(shè)計(jì)概述 如果讀者計(jì)劃涉足游戲開發(fā)領(lǐng)域,那么游戲設(shè)計(jì)是要面對的一個(gè)重要而廣泛的領(lǐng)域。關(guān)于這一主題,有很多文章和書籍可以引導(dǎo)讀者進(jìn)入該領(lǐng)域的學(xué)習(xí)。然而,本書只是開發(fā)一個(gè)短小而簡單的游戲,因此不需要很多的游戲設(shè)計(jì)知識(shí)就可以完成開發(fā)工作。這并不意味著無需進(jìn)行游戲設(shè)計(jì)。實(shí)際上,由于本書關(guān)注的是DirectX和游戲編程,因此它采用了一種非常規(guī)的方法替代專業(yè)的游戲設(shè)計(jì)。附錄A推薦了許多游戲設(shè)計(jì)資源。因?yàn)橛螒蛟O(shè)計(jì)本身也可以用一本書來詮釋,所以本書像對待其他部分一樣,并未用太多的篇幅來討論這個(gè)主題。第2章將討論游戲規(guī)劃,但目前僅對該主題稍作介紹?! ≡陂_始真正的游戲開發(fā)前,需要編寫大量的代碼來構(gòu)建本書的項(xiàng)目游戲。所有現(xiàn)代游戲都運(yùn)行在一個(gè)稱為游戲引擎的平臺(tái)上。游戲引擎指的是可以確保在較高層面上運(yùn)行游戲的代碼集。例如,可以編寫負(fù)責(zé)渲染工作的代碼,而不是直接和Direct3D(或OpenGL等)打交道,這樣可以構(gòu)建一個(gè)封裝在場景后面的渲染引擎,而任何使用該代碼的人都只需考慮渲染引擎即可,而不用考慮它要用到的圖形用戶界面(GUI)。這樣在底層改動(dòng)代碼.時(shí),例如用OpenGL替代Direct3D,那些使用游戲引擎的人會(huì)對此毫無察覺。同樣,在學(xué)習(xí)過程中,本書中的項(xiàng)目需要一些可以使編譯、調(diào)試和糾錯(cuò)等工作簡化的功能。這包括錯(cuò)誤日志記錄系統(tǒng)、簡單的腳本運(yùn)行等?! ?.2.3 引擎設(shè)計(jì)概述 如前所述,游戲引擎是一系列高級代碼,讀者可以以它為基礎(chǔ)開發(fā)自己的游戲。現(xiàn)代游戲引擎已經(jīng)對那些使用它的人隱藏了底層實(shí)現(xiàn)的細(xì)節(jié)和規(guī)范。例如,可以在OpenGL和Direct3D的基礎(chǔ)上開發(fā)渲染引擎,這樣,引擎用戶就不需要知道使用的是哪一個(gè)渲染引擎,盡管用到了一些底層的東西。讀者可能會(huì)說,那樣游戲引擎會(huì)變得很復(fù)雜。游戲引擎包括:渲染引擎、物理引擎、聲音引擎等。游戲引擎本身只是一個(gè)由更小的引擎組成的集合。游戲引擎或它涵蓋的內(nèi)容并沒有一個(gè)精確的定義。對視頻游戲而言,它的游戲引擎至少要包含渲染引擎和輸入引擎,這是必需的,否則,就不能稱其為交互式游戲。 由于游戲引擎開發(fā)這個(gè)主題很復(fù)雜,所以本書并不會(huì)試圖去開發(fā)一個(gè)很龐雜的游戲引擎。實(shí)際上,本書將在構(gòu)成DirectX的不同APl基礎(chǔ)上開發(fā)出一個(gè)簡短的游戲引擎。學(xué)完本書足以讓讀者了解引擎,讀者不只是可以編寫出一個(gè)簡單的游戲引擎,還可以在這個(gè)引擎上繼續(xù)開發(fā)工作或?qū)ζ涓膭?dòng)以滿足自己的需求。對于那些討論引擎體系結(jié)構(gòu)和開發(fā)的全部資源而言,這不是問題。雖然沒有一本書討論了類似的游戲引擎的開發(fā),但它們都會(huì)給讀者提供寶貴的提示、想法,并引領(lǐng)讀者深入考慮開發(fā)代碼的方法?! ”緯挠螒蛞姘?gòu)建在Direct3D基礎(chǔ)上的渲染引擎、構(gòu)建在Directtnput基礎(chǔ)上的輸入系統(tǒng)、構(gòu)建在DirectSound基礎(chǔ)上的聲音系統(tǒng)、處理碰撞和運(yùn)動(dòng)的物理系統(tǒng)、動(dòng)畫系統(tǒng)和一個(gè)簡單的人工智能系統(tǒng)。該引擎代碼還包括創(chuàng)建錯(cuò)誤日志、使用命令和屬性腳本的基本腳本能力和圖形用戶界面(GUI)系統(tǒng)。GUl系統(tǒng)用于創(chuàng)建主菜單、加載場景等。 Stranded游戲引擎中并未涉及網(wǎng)絡(luò)系統(tǒng),這是因?yàn)榫W(wǎng)絡(luò)是個(gè)很龐大的主題,它超出了本書為初學(xué)者介紹的知識(shí)范圍。其他一些系統(tǒng)至少可以做一些簡化,而網(wǎng)絡(luò)系統(tǒng)編寫起來并不容易。當(dāng)然并非所有的網(wǎng)絡(luò)系統(tǒng)代碼都很高深,或是很龐大,但要了解的內(nèi)容已經(jīng)超出了本書的討論范圍。由于本書不是一本討論引擎開發(fā)的書籍,所以只關(guān)注DirectX的不同組成,并將其集成在一起開發(fā)出一個(gè)簡單的游戲。游戲程序員和游戲引擎程序員完成的是兩種不同的工作。游戲程序員只與開發(fā)游戲的游戲引擎打交道,而游戲引擎程序員要開發(fā)出其他人用于開發(fā)游戲的引擎。
編輯推薦
《游戲開發(fā)經(jīng)典叢書·DirectX游戲開發(fā)終極指南》適合于想實(shí)踐游戲開發(fā)的學(xué)生、游戲編程的初學(xué)者以及想要學(xué)習(xí)游戲開發(fā)的C++程序員。 《游戲開發(fā)經(jīng)典叢書·DirectX游戲開發(fā)終極指南》配套光盤中包含了每一章的所有源代碼、項(xiàng)目以及演示程序,還包含所有的圖形、Microsoft DirectX SDK以及游戲Stranded的最終版。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載