最簡化的DirectX 11開發環境的配置

本系列文章由zhmxy555(毛星雲)編寫,轉載請註明出處。

http://blog.csdn.net/zhmxy555/article/details/7672101


作者:毛星雲    郵箱: [email protected]    期待着與志同道合的朋友們相互交流




本篇文章講解遊戲開發主題的相關內容,DirectX開發環境的配置以及依舊由《暗黑破壞神3》延展講解一點遊戲開發的知識。


事情繁多很多天之後,今天淺墨開始接着進行專欄的更新。

上篇文章一發出來,就有很多朋友在文章的評論中講到了很多這個專欄系列的行文走向方方面面的問題,淺墨就在文章開頭簡要說明一下。


一,關於遊戲開發的主題




既然大家都比較關注這個專欄系列的行文走向,就讓我們先從單機遊戲與網絡遊戲的聯繫與區別講起吧。



我們都知道,遊戲編程分爲服務器端編程和客戶端編程。傳統的單機遊戲一般都只會用到客戶端編程,本系列專欄就注重這方面知識的講解。


(若有必要,在介紹完遊戲客戶端編程的知識之後,淺墨也許會再開一個網絡遊戲開發的專欄,當然這還需要很久的時間,具體事宜到時候再與大家討論商榷。)


客戶端遊戲編程需要掌握的主要是Win32編程, 計算機圖形學,DirectX,算法與邏輯實現等方面的知識。


PC遊戲界的後起之秀網絡遊戲顯然包含了服務器端編程和客戶端編程兩部分。


服務器端編程需要掌握的主要是網絡編程,數據庫,多線程編程和Linux編程等知識。


(感謝yuan5531750提供給淺墨的多線程,網絡編程等相關知識講解的思路,但是淺墨覺得目前講解這方面知識還不太妥當,若淺墨在結束這個專欄之後決定再寫一個網絡遊戲開發的專欄,這方面知識將是重頭戲。但多線程和網絡編程在這個專欄裏目前還不會涉及,淺墨得對yuan5531750暫時說聲抱歉了,希望得到他的理解。)


好了,我們繼續講,近10年以來,隨着互聯網技術的迅猛發展,自從第一款轟動全球的網絡遊戲《傳奇》橫空出世以來,網絡遊戲逐漸代替了單機遊戲曾經的霸主地位,成爲了PC遊戲的中流砥柱。從此之後,很多朋友開始樂此不疲地在魔獸世界,穿越火線,龍之谷,地下城與勇士等網遊中消遣着業餘的時光,豐富自己的生活。當然網絡遊戲的出現也催生了5173等網絡遊戲交易平臺,遊戲打金工作室,盜號工作室等網絡遊戲相關的第三方產業。


講完這個知識點,我們來看下主線的任務,DirectX 11.



二、最簡化的DirectX 11開發環境的配置




在編寫基於DirectX 11的應用程序之前,我們當然需要在IDE中加入DirectX SDK函數庫的支持,讓編譯器在編譯我們的代碼時候,認識我們在代碼中調用的DirectXSDK中的函數。否則,編譯器會報出undefined  XXX等錯誤,因爲如果我們不進行DirectXSDK的配置,編譯器是不會聰明到認識這些函數的。

之前淺墨發表過一篇《DirectX開發環境快速配置》的文章,其實那篇文章中把DirectX SDK的配置說複雜了,由於目前是面向Visua Studio 2008以上的版本,配置過程將是非常的簡單。



<第一步>下載和安裝DirectX SDK



從微軟官方網站上下載最新的DirectX SDK,我們選擇目前最新的 DirectXSDK_June10 (截止2012年6月16日)。

下載地址是  http://www.microsoft.com/en-us/download/details.aspx?id=6812

下載完成後得到一個名爲DXSDK_Jun10.exe的安裝包,然後雙擊此文件進行安裝。

安裝目錄淺墨設定的爲 D:\Program Files\Microsoft DirectX SDK (June 2010) ,可以任意設定,但要記好目錄,下一步會用到這個安裝目錄。



<第二步>進行相關的配置



打開Visual Studio(淺墨在這裏示例的是Visual Studio 2010),依次點擊【工具】(快捷鍵 Alt+T)->【選項】(快捷鍵O)->【項目和解決方案】->【VC++目錄】

(英文版的爲【tools】->【option】->【projects and solutions】->【VC++Directories】)



我們會得到如下窗口:







,需要的只是在【包含目錄】和【庫目錄】中添加相關目錄即可,淺墨在圖中用方框標出了,添加的具體步驟如下:



<1> 在【包含目錄】中加入安裝的DirectX SDK目錄下的include文件夾的路徑,根據DirectX SDK的安裝路徑,即添加D:\ProgramFiles\Microsoft DirectX SDK (June 2010)\Include




這裏如果是不同的安裝路徑需要部分進行修改,示意圖如下:





<2> 在【庫目錄】中加入安裝的DirectX SDK目錄下的Lib文件夾的路徑,根據DirectX SDK的安裝路徑,即添加 D:\Program Files\MicrosoftDirectX SDK (June 2010)\Lib\X86



這裏如果是不同的安裝路徑依然需要部分進行修改,示意圖如下:







添加完這兩個目錄,DirectX開發環境的配置就成功了,我們就可以在Visual Studio中運行基於DirectX的運用程序了.

PS: 如果在執行第二步的時候,也許會出現“VC++ 目錄編輯功能已被否決”的情況。我們可以不採用上述的方案進入VC++Directories,轉而採用如下方案:

執行菜單欄中的<視圖>--<屬性管理器>,在新出現的“屬性管理器”工作區中,點擊項目->Debug|Win32->Microsoft.Cpp.Win32.userDirectories即可打開vc++Directories


三、由《暗黑破壞神3》的衍生講解










今天的講解是基於淺墨在NGA上看過的一篇帖子,個人感覺寫得很中肯,在這裏感謝帖主精彩的行文,原文鏈接是:

http://bbs.ngacn.cc/read.php?tid=5264899&_fp=1

如下是精彩部分的摘要:

“每個程序都會有bug,哪怕它僅僅是個helloworld,如果程序沒有bug,操作系統就會有bug,如果連操作系統都沒有bug,世界就會毀滅。”

引用這句話是想告訴大家,遊戲是個大型軟件,是超越所有軟件研發行業研發難度的系統工程,集“通信”“圖形”“audio” “物理” “字符集”等難點於一身,這些東西光是分散開來形成一個單獨學科都夠任何一個人研究一輩子,而在遊戲研發中,要把這些難點全部做到淋漓盡致,實在是對研發者的重大考驗,更何況是暗黑3這樣的大型項目,你們看看光是開發者列表有多少人,要協同這麼多人一起工作更是一件非常具有難度的事情。而bug本身具有如下分類:

A類bug: 導致程序崩潰、死循環、系統當機、通訊斷開、存儲錯誤、流程無法繼續等

B類bug: 主體邏輯正確,但分支邏輯不完善或缺失無法形成體系

C類bug: 設計不恰當、造成影響遊戲體驗

D類bug: UI排版、文字、圖形的錯誤

F類bug: 術語及語言表達不當

目前看來,卡進度這個歸結於B類bug,屬於分支邏輯不完善,白話一些就是程序員沒想完善所有可能的操作,而踢館子這種事只能算做C類bug導致的遊戲平衡性問題,說到這裏,想起對不平衡的定義:讓玩家產生單一或唯一選擇就是不平衡。

怎麼說呢?比如一個機槍兵造價50 攻擊力10 一個坦克造價50 攻擊力20 就讓玩家產生了唯一選擇 我想傻子纔會去造機槍兵吧。踢館子屬於這類,在權衡了難度,成本,產量後,踢罐子成爲大多數人的唯一選擇,那麼暴雪修掉這樣的“bug”是非常正確的選擇。

我們再來看看卡進度這個事情,很顯然是因爲負責這塊邏輯的程序員沒考慮到退出公共遊戲後的進度保存問題,和之前的正常邏輯衝突了導致了所謂卡進度的“bug”。

接着我們來看看大家噴的最多的登錄問題37,12,108,33,3007,3014等:



大家應該能看出這是我對一些數值的宏定義,那麼爲什麼需要他們呢?

比如我在寫代碼,要創建一個1024×768的窗口,那麼簡單的填上1024×768就可以了嗎?不,雖然可行,但不是最優的解決辦法也不利於同事來讀懂我的代碼,如果我定義一個寬爲1024 再定義一個高爲768 那麼我在代碼中只需要寫寬和高 而不用寫具體的數值,這樣一來,同事既可方便讀懂,又可以非常快捷的修改這些參數,無論代碼裏引用了多少次我只需要在定義的地方修改數字就可以了,不是很方便麼。同理37,12,108,33,3007,3014這些只是對狀態的一種定義,比方說:

37:服務器滿員

34200:維護中

315300:多國語言問題

以及等等。

以上就是本文的全部內容,謝謝欣賞。

另外,近期留過郵箱需要淺墨發送遊戲開發入門到深入學習資料的數百位讀者會在近三天內收到淺墨的郵件,前段時間由於事情繁多,沒有及時發送,請見諒。



感謝一直支持【Visual C++】遊戲開發筆記系列專欄的朋友們。

【Visual C++】遊戲開發 系列文章纔剛剛展開一點而已,因爲遊戲世界實在是太博大精深了~

但我們不能着急,得慢慢打好基礎。做學問最忌好高騖遠,不是嗎?

淺墨希望看到大家的留言,希望與大家共同交流,希望得到睿智的評論(即使是批評)。

你們的支持是我寫下去的動力~

精通遊戲開發的路還很長很長,非常希望能和大家一起交流,共同學習,共同進步。

大家看過後覺得值得一看的話,可以頂一下這篇文章,你們的支持是我繼續寫下去的動力~

如果文章中有什麼疏漏的地方,也請大家指正。也希望大家可以多留言來和我探討相關的問題。

最後,謝謝你們一直的支持~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章