天天看點

遊戲開發新手入門指導(Q&A)

本文來自遊戲開發資源網

遊戲制作新人:

用什麼語言和編譯器來做遊戲?

DirectX是什麼?

學程式設計需要哪些書?

我怎樣制作遊戲?

哪些書是介紹遊戲開發的?

VC好還是C++好?

給C++初學者的50個忠告

文獻:程式設計新手真言

具備程式基礎:

如何用DirectX制作2D遊戲?

如何使用DirectInput?

如何在遊戲中顯示文字?

如何使用DirectSound?

如何在遊戲中播放一段電影?

如何在遊戲中實作半透明效果?

如何把DirectX關聯到VC中?

VC編譯DX程式出現"無法解析的外部符号"是怎麼回事?

關于怎麼學習API (OpenGL/Direct3D等)?

 
 

 注:遊戲開發入門常見問題整理,若有您想了解的入門問題這裡沒有,或者這裡的問題解答無法滿足您的需要,可以到這裡給我們留言或者留下問題,我們會盡快給于答複并且将優秀問題提取出來添加至本版區。謝謝!

 

 
  用什麼語言和編譯器來做遊戲?   參考”我該使用何種語言“一文。 DirectX是什麼?

  DirectX(簡稱:DX)是微軟推出的一套基于Windows系統的多媒體應用程式接口APIs函式。

  在開發中,DX分為兩個部分,一個是運作庫,通過DX編譯出來的程式必須要有運作庫的支援,另外一個是開發庫,也就是常說的SDK,這部分是在編譯DX程式中是必需的。

  詳細原文介紹"DirectX Technology Overview"。

學程式設計需要哪些書?   視情況而定,但作為程式設計基礎,程式設計類的技術書籍是你所需要的;在遊戲程式開發方面,我們大緻可以将技術劃分為如下幾個子產品:遊戲構架、圖形圖像、圖形特效、遊戲邏輯、遊戲界面、人工智慧、聲音音效、網絡連接配接、系統優化等,明确目标後去尋找相關技術類書籍将使你不再迷茫。 我怎樣制作遊戲?   參考“遊戲入門程式設計、基礎教程”裡的系列文章,它們将引導你進入遊戲制作殿堂。 哪些書是介紹遊戲開發的?   目前國内已經有不少遊戲開發類書籍,這裡羅列一些常見書籍。 VC好還是C++好?   首先,我們要糾正一個錯誤的觀點,C++是一種語言,而VC是一種編譯器軟體;VC是一個用來編寫(編譯)代碼的平台,你可以在VC上面編寫C++代碼。 如何用DirectX制作2D遊戲?   DirectDraw元件是DirectX對2D的主要支援部分,參考文獻“從頭學習DirectDraw”、"DircetDraw c/c++ 使用指導(一)"、"載入位圖檔案到DirectDraw"。 如何使用DirectInput?   DirectInput是DirectX API的輸入控制元件,提供了操作硬體的底層接口,參考文獻“DirectInput 滑鼠程式設計入門”、“DirectInput 鍵盤程式設計入門”。 如何在遊戲中顯示文字?   遊戲中的文字顯示一般由兩種方法來實作,一種是通過調用系統APIs來進行繪制,另一種是通過自己管理字庫進行繪制;這兩種方法各有優缺,讓我們看看它們如何實作的。系統APIs的使用參考"深入WINDOW字型",自處理字庫繪制參考"點陣漢字顯示"(關于自處理字型的說明,自處理字庫就是通過某種存儲方式将文字組織儲存于檔案中,然後在遊戲中進行裝載和繪制。)。 如何使用DirectSound?   DirectSound是DirectX API的音頻(waveaudio)元件之一,它可以提供快速的混音、硬體加速功能,并且可以直接通路相關裝置,當然,最主要的是它提供的功能與現有的(?将來的呢?)裝置驅動程式保持相容性。參考文獻“DirectSound”。 如何在遊戲中播放一段電影?   播放視訊片斷可以通過DirectShow來進行播放工作,參考文獻"在VC中調用DirectShow全屏播放視訊"。 如何在遊戲中實作半透明效果?   遊戲中要進行(2D)圖形的半透明效果主要就是通過alpha混合運算,參考文獻"Alpha-Blending 技術簡介"、"利用MMX優化64K色Alpha混合算法"。 如何把DirectX關聯到VC中?

  我們要進行DirectX程式的編譯就必須要有DirectX SDK庫檔案,此檔案可以到微軟或者本站擷取,然後通過VC設定将其關聯。下面說明了在VC6和VS.Net下的安裝方法。

  VC6(英文版):選擇菜單Tools->Options,打開Options對話框,選擇Directions标簽頁,選擇Include files項,在裡面添加DirectX頭檔案的檔案夾路徑目錄,同樣,在Library files項中添加DirectX頭檔案的檔案夾路徑目錄。

  VS.Net(中文版):選擇菜單"工具->選項",打開選項對話框,打開Projects标簽頁,分别選擇"包含檔案"和"庫檔案"進行相應的路徑添加即可。

注:VC在進行編譯時,會根據排列順序來進行庫檔案選取,假設有兩個相同名字的庫,VC會優先使用排列在前面的庫檔案。

VC編譯DX程式出現"無法解析的外部符号"是怎麼回事?

  這個錯誤經常出現在初學者要進行編譯DirectX程式的時候,主要是因為沒有将DX的庫檔案引用到工程中,這裡需要注意,我們将DX SDK的路徑設定到VC後,并不代表我們已設定好了DX SDK,在我們的DX工程中,我們還需要進行相應的設定操作,把我們所需要的庫檔案(DirectX SDK Library)加入到我們的工程中,要設定這個庫檔案有兩個方法,一個是在你工程的編譯選項中進行添加,另外一種可以通過代碼的方法來添加(推薦)。

  指令行:#pragma comment( lib,"xxx.lib" )

  這個是VC的編譯預處理指令,将其加在代碼中即可。

  例如:#pragma comment( lib,"ddraw.lib" )  這句的意思是将ddraw.lib庫加入到工程中進行編譯。

注:此指令行不需要加分号(“;”)。

給C++初學者的50個忠告

  1.把C++當成一門新的語言學習(和C沒啥關系!真的。);

  2.看《Thinking In C++》,不要看《C++變成死相》;

  3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因為他們很難而我們自己是初學者是以就不看;

  4.不要被VC、BCB、BC、MC、TC等詞彙所迷惑——他們都是內建開發環境,而我們要學的是一門語言;

  5.不要放過任何一個看上去很簡單的小程式設計問題——他們往往并不那麼簡單,或者可以引伸出很多知識點;

  6.會用Visual C++,并不說明你會C++;

  7.學class并不難,template、STL、generic programming也不過如此——難的是長期堅持實踐和不遺餘力的博覽群書;

  8.如果不是天才的話,想學程式設計就不要想玩遊戲——你以為你做到了,其實你的C++水準并沒有和你通關的能力一起變高——其實可以時刻記住:學C++是為了編遊戲的;

  9.看Visual C++的書,是學不了C++語言的;

  10.浮躁的人容易說:XX語言不行了,應該學YY;——是你自己不行了吧!?

  11.浮躁的人容易問:我到底該學什麼;——别問,學就對了;

  12.浮躁的人容易問:XX有錢途嗎;——建議你去搶銀行;

  13.浮躁的人容易說:我要中文版!我英文不行!——不行?學呀!

  14.浮躁的人容易問:XX和YY哪個好;——告訴你吧,都好——隻要你學就行;

  15.浮躁的人分兩種:a)隻觀望而不學的人;b)隻學而不堅持的人;

  16.把時髦的技術挂在嘴邊,還不如把過時的技術記在心裡;

  17.C++不僅僅是支援面向對象的程式設計語言;

  18.學習程式設計最好的方法之一就是閱讀源代碼;

  19.在任何時刻都不要認為自己手中的書已經足夠了;

  20.請閱讀《The Standard C++ Bible》(中文版:标準C++寶典),掌握C++标準;

  21.看得懂的書,請仔細看;看不懂的書,請硬着頭皮看;

  22.别指望看第一遍書就能記住和掌握什麼——請看第二遍、第三遍;

  23.請看《Effective C++》和《More Effective C++》以及《Exceptional C++》;

  24.不要停留在內建開發環境的搖籃上,要學會控制內建開發環境,還要學會用指令行方式處理程式;

  25.和别人一起讨論有意義的C++知識點,而不是争吵XX行不行或者YY與ZZ哪個好;

  26.請看《程式設計實踐》,并嚴格的按照其要求去做;

  27.不要因為C和C++中有一些文法和關鍵字看上去相同,就認為它們的意義和作用完全一樣;

  28.C++絕不是所謂的C的“擴充”——如果C++一開始就起名叫Z語言,你一定不會把C和Z語言聯系得那麼緊密;

  29.請不要認為學過XX語言再改學C++會有什麼問題——你隻不過又在學一門全新的語言而已;

  30.讀完了《Inside The C++ Object Model》以後再來認定自己是不是已經學會了C++;

  31.學習程式設計的秘訣是:程式設計,程式設計,再程式設計;

  32.請留意下列書籍:《C++面向對象高效程式設計(C++ Effective Object-Oriented Software Construction)》《面向對象軟體構造(Object-Oriented Software Construction)》《設計模式(Design Patterns)》《The Art of Computer Programming》;

  33.記住:面向對象技術不隻是C++專有的;

  34.請把書上的程式例子親手輸入到電腦上實踐,即使配套CD光牒中有源代碼;

  35.把在書中看到的有意義的例子擴充;

  36.請重視C++中的異常處理技術,并将其切實的運用到自己的程式中;

  37.經常回顧自己以前寫過的程式,并嘗試重寫,把自己學到的新知識運用進去;

  38.不要漏掉書中任何一個練習題——請全部做完并記錄下解題思路;

  39.C++語言和C++的內建開發環境要同時學習和掌握;

  40.既然決定了學C++,就請堅持學下去,因為學習程式設計語言的目的是掌握程式設計技術,而程式設計技術是跨語言的;

  41.就讓C++語言的各種平台和開發環境去激烈的競争吧,我們要以學習C++語言本身為主;

  42.當你寫C++程式寫到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快将餘下的部分粗略的完成以保證這個設計的完整性,然後分析自己的錯誤并重新設計和編寫(參見43);

  43.别心急,設計C++的class确實不容易;自己程式中的class和自己的class設計水準是在不斷的程式設計實踐中完善和發展的;

  44.決不要因為程式“很小”就不遵循某些你不熟練的規則——好習慣是培養出來的,而不是一次記住的;

  45.每學到一個C++難點的時候,嘗試着對别人講解這個知識點并讓他了解——你能講清楚才說明你真的了解了;

  46.記錄下在和别人交流時發現的自己忽視或不了解的知識點;

  47.請不斷的對自己寫的程式提出更高的要求,哪怕你的程式版本号會變成Version 100.XX;

  48.儲存好你寫過的所有的程式——那是你最好的積累之一;

  49.請不要做浮躁的人;

  50.請熱愛C++!

關于怎麼學習API (OpenGL/Direct3D等)?