有什麼關於遊戲製作方面的教程好書?


首先說明,「遊戲製作」方面還是有很多個細的小方面的,對於一個大型遊戲而言,不同的程序員之間往往是有相對比較明確的分工的。一般而言,每個方向的基本都是需要了解並掌握的,但是在深入學習之前,最好還是先對自己有一個定位。

遊戲邏輯開發:

1、遊戲的邏輯開發和其他軟體行業沒有本質不同,最好還是從數據結構和演算法開始。並不要求你熟練掌握並編寫每一個數據結構或者是演算法,最重要的是你能夠分析數據結構和演算法的時間空間複雜度,能夠進行一定的改造和組合工作,能夠熟練利用別人(比如STL)提供好的數據結構和演算法來快速無錯的解決具體的問題。《數據結構》、《演算法導論》(另外一本稍薄一點的演算法書也很推薦,我個人是看這本書學習的,而沒有看過演算法導論,但我不記得它的名字和出版社了……)

2、你需要了解諸如「狀態機」、「觸發器」、「事件」之類的概念,它有助於你更好的模塊化和組織你的代碼,也有助於你更好的理解和接觸別人提供的框架。至於在哪裡可以學到這些概念…… 我也不清楚。Wiki或者與別人討論 大概都是不錯的方式,注意觀察各種類似需求的解決方案(比如HTML/javascript、Flash/Actionscript)都有助於你改善自己的方案。

3、掌握幾門常見的腳本語言。沒錯,我說的是幾門。事實上,學到第二門之後你就會發現,它們本質上都差不多,同類型的腳本語言會有如此多的共同之處。把lua或者python嵌入到你自己的遊戲框架之中吧,如果你的代碼能力不錯,嵌入javascript也許也是個不錯的選擇。

4、如果可能,深化一下你的C++基本功。Effective C++系列、Exceptional C++系列、C++ Template、Imperfect C++。

5、接觸一款引擎,在其上做上層開發,不要急於過度深入引擎之中。越成熟用戶量越大的引擎越值得你去體驗。

6、推薦再去讀一些關於遊戲人工智慧的書籍。

遊戲圖形開發:

1、對於英語沒有困難的人,還是推薦先跟著DX SDK走一遭,裡面的Tutorial非常簡練,快速,也讓你學習了一些基本的概念。DXSDK里關於現代圖形管線的介紹也相當精確。

對於英語有困難的人,請參考莫偉琪的回答中引用Clayman的帖子,讀相應書的中文版。

補充:

  關於D3D9和D3D11:相比較來說,D3D11的介面比D3D9的更簡練快捷,更易於學習,需要處理的各種意外狀況較少,並且二者在API上不是一個補充完善升級的關係,所以並不需要「先學習D3D9,再升級到D3D11」,可以直接從D3D11開始。D3D10「還沒普及就已經過時了」,可以略過。

  關於D3D和OpenGL:二者在風格和習慣上有很大不同,但是在本質上沒有任何的不同,初學者可以任意選擇一個開始。相對而言,D3D的資料較豐富,在遊戲行業應用較多,推薦自學的初學者優先接觸。OpenGL在研究上的使用較多,在移動平台目前也是OpenGL ES等各種來自於OpenGL的標準較多,推薦在校研究生/有志於智能手機遊戲研發的同學們接觸。

  關於固定管線/可編程管線:從應用上來說,固定管線已經成為歷史了(即使移動應用也即將如此),從學習上來說,固定管線所涉及的概念較多,API較繁雜,比較耽誤時間,而且其涉及的所有技術在可編程管線均可以實現,且更為自由,所以推薦直接從純粹的可編程管線學起,並且在合適的時候了解一下固定管線和可編程管線之間的一些對應關係,不推薦先學習固定管線再「升級」到可編程管線。

2、了解基本API後,此階段往往最缺的是數學,需要作為基礎的可能有:

  線性代數的基本概念(通常大學教材的前3-4章):最重要且最基礎,最起碼你要知道矩陣是幹嘛的,是怎樣參與運算的。

  高等數學(微積分)的基本概念:你將來會發現稍微複雜一點的渲染演算法都要用到這些作為基礎知識。

  四元數:在三維遊戲里,通常用四元數來表達旋轉

  一些基本物理公式:諸如漫反射的強度公式等等

  信號處理的一些常見概念:諸如傅里葉變換、卷積等等

  除了線性代數基礎以外,其他的數學學習都不是很緊急,可以手頭備一兩本書,或者養成快速上網查詢的習慣,等到有了需求的時候緊急補課。作為一個程序員,沒必要一開始就把自己當做一個數學家^_^

  也很推薦以上知識的打包書籍:《3D數學基礎:圖形與遊戲開發》(3D Math Primer for Graphics and Game Development),還包含一些我沒有列出的數學和演算法。

3、基本概念和數學都了解了,推薦學DX的同學們重新系統的審視一遍DXSDK,或者把你手頭的D3D/OpenGL入門書再從頭到尾確認一遍,不明白的概念都查一下,然後搭建或者改造一個屬於自己的實驗平台(推薦從DXSDK里扒一個),就可以宣布基本知識畢業,開始從事各種效果的製作了。

4、論文實現。GPU Gems系列、遊戲編程精粹系列、ShaderX(GPU Pro)系列,這種書都是將一個個獨立論文集合出書的,找感興趣的內容深入學習,自己實現吧。

遊戲引擎架構:

1、沒有任何資料可以推薦。先掌握基礎,有使用成熟引擎的經歷,然後:

2、寫一個框架。

3、往裡面適當添一兩個新特性。

4、用這個框架寫一個遊戲。

5、列出不爽的地方。

6、看別人是怎麼做的。

7、回到2或者3。

補充一下,最近看了本遊戲引擎架構的書,還不錯。《Game Engine Architecture》

另外,研發一個現代引擎架構,有必要了解一些並行化的編程思維。比較推薦《計算機體系結構·量化研究方法》。


對原答案 做一些修正

評論區有朋友指出這本書的一些缺點是確實存在的,故來修正一下,順便多說一句

這本書並不太適合 有了1-2年以上研發經驗的熟手看

(原因是可從書中學到的東西不多,且代碼寫的真心亂)

也不適合 完完全全的萌新去看

(原因是書中並不是step by step的教你做遊戲,而是直接丟你一堆源碼,和一些要點的隻言片語)

那麼這本書適合哪類讀者看呢?

這個我在原答案中也有提到了:

最適合,有了一點點基礎,學了一段時間,卻沒有產出成品的童鞋,可以跟著書,復刻裡面的遊戲原型,通過實踐來鞏固之前的理論!~

(因為對於卡在這個階段的童鞋來說,做出完整的原型,產生正面反饋反而更重要一些~~)

以下是原答案:

================================================================

看了半天,所有答案都是引擎方向的技術路線,可題目卻是遊戲製作。

我來發一本Gameplay方向的技術書籍,這本書非常非常適合,學了一大堆語言特性,引擎功能,卻還沒完整的開發出一款遊戲的同學,這樣毫無正向反饋的學習過程,可能讓你已經很痛苦了,這時候可以試試看下這本書:

前段時間在帶學生的時候,發現了一本書《Unity遊戲設計與實現:南夢宮一線程序員的開發實例》Unity遊戲設計與實現:南夢宮一線程序員的開發實例(修訂版)-圖書-圖靈社區

封面長這樣

看這花哨的封面,一股撲鼻而來的農業重金屬,鄉村非主流的味道,可能專業人士都會直接把這本書 跟各種《30天學會XXXX》歸為一類。可是後來後來,我發現這本書真的很不錯。特別是對於那種學了一點編程,學了一點Unity,卻有感覺自己什麼都不會做的同學。

那麼為什麼我覺得這本書對於想從頭到尾完成一款遊戲的同學來說很不錯呢? 主要有以下幾個點

1.整本書都是從實例入手,手把手教你寫遊戲中的Gameplay部分,即有一定深度,又不會偏離方向。看完,將書中的例子練一遍,是絕對能夠自己開發出一些原型的,之後,就可以在這些原型上拓展出自己的遊戲了。

2.這本書用不到的知識,不會先拋給你。這點對於想出作品的同學來說真的很重要,因為大部分書籍都是從成堆的理論開始講起的,可是你也並不知道這些理論究竟何時遇到。學了一大堆語言特性,引擎功能,卻無法完整的開發出一款遊戲,這真的是很惱人的一件事,因為這樣毫無正向反饋,瞬間就嚇跑一堆新人了。而這本書不同,每一章節都是一個遊戲原型,用到什麼學什麼,每一章看完,對照著源代碼,復刻一遍,你就學會了製作一種遊戲,這對於新手來說,真的是反饋不要太強烈。

3.不僅講了遊戲開發中的技術方面,也講了很多遊戲設計上的要素。假如你想開發獨立遊戲,那麼這裡面講的一些思路,應該會對你有很大幫助,有時候,技術是工具,如果真是想做遊戲,而不是做引擎,那麼一些必要的遊戲設計還是要學點的。

那麼說完了優點,這本書也有缺點

1.代碼比較亂

2.書中並不是所有工程都一行一行,一步一步帶你做的。對於老手來說,這沒事;不過對於新手來說,可能看到一些節點上,突然一大坨代碼,會懵逼,這個時候一定要結合著源碼,邊調試,邊看。


初入門我還是建議看《Windows遊戲編程大師技巧》+《3D遊戲編程大師技巧》(其實這是一套)

理解這兩本書中內容即可(主要是固定渲染管線的原理),現在沒必要寫一遍書中的程序了。

另外Clayman說得很好:http://www.cnblogs.com/clayman/archive/2009/05/17/1459001.html

只是我還是建議學習圖形api前,先看以上兩本書(除非你已經理解了書中的內容)。


這裡有按遊戲美術,策劃,程序分類的推薦書籍,我就不一一複製了:
http://www.gamea.com.cn/books.htm


推薦看看《遊戲編程精粹》 1-6很不錯 7稍微一般一點


你可以網上看看siki的視頻教程,個人覺得還不錯吧


Unity的話 我推薦下面這本

這本書帶我入門,帶我裝逼帶我飛

進階的話看看南夢宮那本,我倒是覺得那本書里他們策劃的遊戲很有趣,技術上一般般把,代碼是一段一段的,並不是一下子全給你印在書上,你要看他們的源碼,拿出一個筆記本還有一支筆,那裡不會記哪裡,然後看工程,搞懂了在下一個,這本書吃透的話要段時間。

入門還有一本Unity官方出的,看5.x版本的吧。雖然現在是2017.x,但是和5系列沒有質的變化。


我推薦個引擎吧

CryEngine 3, Unreal 3,用這兩個開發遊戲不錯


@鄧鋆 的回答很詳盡務實,但樓主應該關注的不是從0做起吧,你想做什麼類型的遊戲,達到什麼樣的品質可以補充一下。


推薦閱讀:

計算機圖形學,GPU,OpenGL,Unity3D什麼關係?
為什麼歐美日遊戲公司死心塌地的做 3A 大作?
為什麼射擊遊戲的 Hitbox 多為長方體而不是其他多面體或球體?
開放世界遊戲中的大地圖背後有哪些實現技術?
一個完整的遊戲副本包括哪些要素?

TAG:書籍推薦 | 遊戲 | 遊戲開發 |