注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計程序設(shè)計綜合游戲之旅:我的編程感悟

游戲之旅:我的編程感悟

游戲之旅:我的編程感悟

定 價:¥46.00

作 者: 云風(fēng)著
出版社: 電子工業(yè)出版社
叢編項:
標(biāo) 簽: 游戲 應(yīng)用程序 程序設(shè)計

ISBN: 9787121016097 出版時間: 2005-12-01 包裝: 膠版紙
開本: 小16開 頁數(shù): 412 字?jǐn)?shù):  

內(nèi)容簡介

本書忠實(shí)地記錄了作者十余年來對游戲編程的所思、所感、所悟。全書按照作者本人學(xué)習(xí)和實(shí)踐的過程,帶著讀者從基礎(chǔ)的計算機(jī)知識到高級的編程技術(shù),從非常專業(yè)的匯編優(yōu)化到非常實(shí)際的項目管理進(jìn)行了一次游戲開發(fā)的全景探索。本書不僅適合游戲開發(fā)者閱讀,也會給所有的開發(fā)者和程序愛好者帶來啟示。本書前言前言終于把整本書完成了,我?guī)缀醪桓蚁嘈拍芡瓿?。陸陸續(xù)續(xù)地寫了一年多,其中的辛苦恐怕只有寫過技術(shù)書籍的朋友能夠理解了。很早以前就有朋友跟我提過,好好寫本書,把自己理解的知識傳授給他人,于己于人都是頗為有益的事情。寫作技術(shù)書是很困難的事,它需要作者厚積薄發(fā),把自己多年的知識濃縮歸納,才能用簡潔的文字表達(dá)出來。而知識的傳授絕對不同于講故事,文字究竟能表達(dá)出多少作者自己已經(jīng)理解的,我個人覺得是很難拿得準(zhǔn)的。先后有幾個出版社的朋友來約稿,只是一直忙于項目開發(fā),沒有將其放在心上。直到《大話西游II》和《夢幻西游》兩款游戲相繼開發(fā)完畢,并取得了市場上的成功,我的工作也相對閑了下來。這時,我終于可以動筆來寫這本書了。大家現(xiàn)在看到的這些內(nèi)容,是我在一年多的時間里,斷斷續(xù)續(xù)整理出來的??磻T了國外嚴(yán)謹(jǐn)?shù)募夹g(shù)書的讀者,肯定會挑出許多毛病來。我?guī)缀鯖]有一章,把某個技術(shù)點(diǎn)由淺入深地闡述全面;也沒有將游戲制作的某個特定領(lǐng)域分章斷節(jié),細(xì)細(xì)道來;它絕對是依照我自己的偏好來選材,甚至,這本書不能算是一本游戲編程的專門書,我把重點(diǎn)放在了編程領(lǐng)域,而不是游戲。我曾經(jīng)對自己這本書的定位迷茫過。它看起來好像是一個大雜燴,整體的組織沒有條理,細(xì)節(jié)的描述又不夠徹底。終于有一天,我自己想明白了,得以心情舒暢地將之全部完稿。首先,這里記錄的諸多技術(shù)問題都曾經(jīng)啟發(fā)過我自己,那么它們一定也能啟發(fā)他人,必然會和一些心有戚戚的讀者引起共鳴。而另一方面,我不敢隨意對游戲開發(fā),甚至軟件開發(fā)中哪些方面更重要一些下出論斷。雖然我自己有自己的理解,但表現(xiàn)于具體的文章上,只好將自己覺得會非常重要的部分多寫一些(因?yàn)樽约河X得這些重要,所以研究得也多一些),希望讀者讀到那些枝節(jié)要點(diǎn)卻沒有點(diǎn)明的時候,能夠理解我的用意。其次,所有的基礎(chǔ)知識都有前人留下的教導(dǎo),和讀者分享自己是怎樣學(xué)到的足矣。授人以魚,三餐之需;授人以漁,終生之用。大多數(shù)問題,如果把別的書中的章節(jié)生搬硬套過來,則是對我自己的精力和讀者的時間的極大浪費(fèi)。不以自己懂了什么就寫出來給讀者炫耀一番,是我后期刪改書稿的重要原則。終其整本書,雖然參考之書籍、網(wǎng)站、代碼眾多,但我自己都一直堅持一個原則:建立在充分理解的基礎(chǔ)上,再用自己的語言表達(dá)出來。我相信只有這樣,讀者才能夠看到一個從獨(dú)立思考角度獲得的知識體系,凌亂中不失一縷聯(lián)系。這樣也帶來許多遺憾。因?yàn)檫€有一些內(nèi)容我在原計劃里是想寫的,它們對游戲軟件的編寫也是至關(guān)重要的,比如設(shè)計模式??上以趧邮值臅r候,發(fā)現(xiàn)自己這些方面的修養(yǎng)在項目中用用還可以,離著書立說卻差得很遠(yuǎn),只好放棄。曾經(jīng)年少輕狂。但隨著時間推移,越發(fā)發(fā)現(xiàn)自己所知所見,只是滄海一粟。學(xué)得越多,越是不敢輕言所知。所以,希望讀者相信,我是非常謹(jǐn)慎地來完成自己的第一本書的。孔子說過,無友不如己者。我真誠地尊重所有對本書提出批評的朋友。可以去我的個人主頁(http://www.codingnow.com)留言發(fā)表你的看法,或給我發(fā)E-mail:cloudwu(a)gmail.com,我個人更傾向電子郵件這種交流方式。希望聽到大家的聲音。寫書這件事情終歸是告一段落了,我也將把精力投入到自己新的事業(yè)中去,或者很久都不可能再以這種形式將自己的技術(shù)人生做一個總結(jié)。身處當(dāng)今熱門行業(yè)中,可謂衣食無憂,而在國內(nèi)的游戲制作圈子里混跡多年,業(yè)內(nèi)也小有名氣。而這些并非我去追求的,它們自然而生。這本書也一樣,我沒有刻意去追求表達(dá)些什么,也從沒有想過本書會給我?guī)硇┦裁?。我現(xiàn)在是中國并不成熟的游戲制作行業(yè)中的一員,游戲給了我太多,我告訴自己需要做一點(diǎn)事情。分享知識和經(jīng)驗(yàn)是我的義務(wù),別無它。云風(fēng)2005年5月23日晚于廣州

作者簡介

  云風(fēng),時年二十七歲。自幼學(xué)習(xí)編程,十?dāng)?shù)年從未間斷,對程序設(shè)計有所領(lǐng)悟。大學(xué)時代開發(fā)的游戲圖像引擎“風(fēng)魂”曾用于多家游戲公司的游戲項目。參與過《大話西游》系列、《夢幻西游》、《網(wǎng)易泡泡游戲》的開發(fā)?,F(xiàn)從事新一代網(wǎng)絡(luò)游戲引擎的研究與開發(fā),并在游戲模式上做一些新的嘗試。性格開朗,興趣廣泛,好交友,絕非沉浸在計算機(jī)世界中的書呆子。國學(xué)、歷史書籍常備案頭,以先賢之教誨修其心;休息時常作戶外運(yùn)動,尤其喜愛攀巖。

圖書目錄

第1章  計算機(jī),游戲,我    1
1.1  計算機(jī)    2
1.2  計算機(jī)游戲    3
1.3  計算機(jī)與我    7
1.3.1  啟蒙    7
1.3.2  編程    9
第2章  算法,程序的靈魂    13
2.1  程序=算法+數(shù)據(jù)結(jié)構(gòu)    14
2.1.1  算法    15
2.1.2  數(shù)據(jù)結(jié)構(gòu)    17
2.2  搜索算法    23
2.2.1  地圖尋路問題    23
2.2.2  博弈問題    27
2.2.3  更為廣泛的運(yùn)用    28
2.3  智能算法    29
2.3.1  遺傳算法(Genetic Algorithm)    29
2.3.2  模擬退火算法(Simulated Annealing)    31
2.3.3  禁忌搜索(Tabu Search)    33
2.3.4  人工神經(jīng)網(wǎng)絡(luò)
(Artificial Neural Network)    34
2.4  優(yōu)化    36
2.4.1  質(zhì)數(shù)問題    36
1.4.2  俄羅斯方塊競賽    37
2.5  Apple II上的編程之路    39
第3章  編程語言    45
3.1  C 語言    46
3.2  BASIC    50
3.3  C++    51
3.4  匯編語言    54
3.4.1  概述    55
3.4.2  程序的本質(zhì)    57
3.4.3  寄存器    58
3.4.4  尋址方式    60
3.4.5  匯編指令    61
3.4.6  C/C++ 語言和匯編    62
3.4.7  小結(jié)    63
3.5  其他語言    63
3.5.1  Forth    63
3.5.2  Lisp    64
3.5.3  Java    64
3.5.4  Python、Lua、更多    65
第4章  前Windows 時代    67
4.1  386保護(hù)模式    68
4.2  VGA 到VESA    70
4.2.1  超越 BGI    70
4.2.2  VGA    72
4.2.3  VESA 標(biāo)準(zhǔn)    72
4.2.4  花絮    74
4.3  保護(hù)模式下的開發(fā)工具    75
4.4  閑話 Allegro    81
4.4.1  用C與匯編寫成的程序庫    81
4.4.2  BITMAP    82
4.4.3  Sprite    85
4.4.4  幾何圖形和 3D    89
4.4.5  數(shù)據(jù)文件    91
4.4.6  聲音    92
4.4.7  其他的部分    93
4.4.8  小結(jié)    94
4.5  cfido 中國惠多網(wǎng)    94
第5章  Windows 編程    101
5.1  Windows編程入門    104
5.1.1  Windows版本綜述    105
5.1.2  操作系統(tǒng)的核心    107
5.1.3  Windows API和DLL    110
5.1.4  COM    111
5.1.5  Windows的窗口和消息處理與傳遞    114
5.1.6  Windows GDI    125
5.2  控制游戲的速度    130
5.3  淺談MFC    132
5.4  小結(jié)    132
第6章  匯編優(yōu)化    135
6.1  淺談代碼優(yōu)化    138
6.2  并不僅僅是匯編    139
6.2.1  在算法實(shí)現(xiàn)時減少上下文的依賴關(guān)系    139
6.2.2  低效的靜態(tài)變量    140
6.2.3  數(shù)據(jù)的組織    141
6.2.4  消除除法    142
6.2.5  避免過大的循環(huán)    144
6.3  匯編和C/C++的混合編程    146
6.3.1  使用外置的匯編編譯器    146
6.3.2  使用內(nèi)嵌匯編    148
6.3.3  C++的函數(shù)調(diào)用規(guī)則    150
6.3.4  寄存器的使用    152
6.3.5  _declspec(naked)    152
6.4  指令使用的技巧    153
6.4.1  LEA:別樣的內(nèi)存尋址指令    153
6.4.2  BSWAP:擴(kuò)展寄存器的個數(shù)    154
6.4.3  縮短指令的字節(jié)數(shù)    155
6.4.4  避免跳轉(zhuǎn)指令    159
6.5  Pentium 的匯編優(yōu)化策略    161
6.5.1  UV流水線    163
6.5.2  AGI地址生成互鎖
(Address Generation Interlock)    167
6.5.3  Pentium Pro,Pentium II和Pentium III
的匯編優(yōu)化策略    168
6.5.4  Pentium 4的匯編優(yōu)化策略    178
6.5.5  如何測試代碼的速度    181
6.5.6  匯編能干的事情    183
第7章  SIMD 指令    185
7.1  單指令多數(shù)據(jù)編程    186
7.1.1  Alpha 混合    187
7.2  MMX    191
7.2.1  MMX的指令概況    192
7.2.2  SSE及其對MMX的擴(kuò)展    194
7.2.3  SIMD技術(shù)在C語言環(huán)境下的使用    196
7.2.4  MMX 編碼技巧    197
7.2.5  SIMD 的應(yīng)用舉例    201
7.2.6  SIMD編程注意要點(diǎn)    203
7.2.7  SIMD的性能檢測    204
第8章  引擎中的優(yōu)化    205
8.1  Blit的優(yōu)化    207
8.2  臟矩形優(yōu)化    209
8.2.1  “風(fēng)魂”中改進(jìn)的臟矩形算法    215
8.2.2  滾動優(yōu)化    219
8.2.3  覆蓋優(yōu)化    222
8.2.4  臟矩形在3D游戲界面中的運(yùn)用    224
8.2.5  時間和空間的權(quán)衡    229
8.2.6  關(guān)于估算    230
8.3  自己設(shè)計精靈格式    231
8.4  動態(tài)數(shù)據(jù)加載    234
8.5  小結(jié)    236
第9章  C 和 C++    237
9.1  從C到C++    239
9.2  C vs C++,效率至上    243
9.2.1  全局變量    243
9.2.2  函數(shù)調(diào)用的堆棧處理    243
9.2.3  函數(shù)調(diào)用的參數(shù)傳遞    244
9.2.4  臨時變量的堆棧使用    244
9.2.5  代碼生成    244
9.2.6  異常    244
9.2.7  inline    245
9.2.8  多態(tài)性    245
9.2.9  標(biāo)準(zhǔn)庫的差異    245
9.2.10  動態(tài)內(nèi)存分配    245
9.3  優(yōu)雅的C++    246
9.3.1  消失了的宏    247
9.3.2  const修飾及類型轉(zhuǎn)換    248
9.3.3  隱藏實(shí)現(xiàn)    248
9.3.4  引用而非指針    250
9.3.5  名字空間    250
9.4  C++ 的誤區(qū)    251
9.4.1  類層次過細(xì)    251
9.4.2  濫用操作符重載    252
9.4.3  濫用標(biāo)準(zhǔn)容器    253
9.4.4  濫用動態(tài)類型識別和異常    253
9.4.5  濫用多重繼承    254
9.4.6  忽視C++高級特性的復(fù)雜度    255
9.4.7  學(xué)習(xí)C++    256
9.5  動態(tài)內(nèi)存分配的優(yōu)化    257
9.5.1  另一種優(yōu)化策略:多次分配,一次釋放    266
9.5.2  垃圾回收    268
9.5.3  再論動態(tài)內(nèi)存分配    269
9.6  template    272
9.6.1  封裝C++的成員函數(shù)調(diào)用    272
9.6.2  常數(shù)數(shù)量的對象復(fù)制    274
9.6.3  對象計數(shù)    275
9.6.4  避免重復(fù)代碼    277
9.6.5  選擇最佳的容器    279
9.6.6  延遲運(yùn)算    281
9.6.7  編譯時計算的游戲    283
9.7  小結(jié)    286
第10章  調(diào)試    287
10.1  assert及程序錯誤的提前發(fā)現(xiàn)    288
10.1.1  崩潰的程序不說謊    289
10.1.2  為軟件維護(hù)多個版本    291
10.1.3  前置條件和后置條件    292
10.1.4  自己實(shí)現(xiàn)一個assert    292
10.1.5  不正確的assert使用    293
10.1.6  為assert分級    294
10.1.7  assert的引申:檢查函數(shù)返回值    295
10.1.8  釋放的指針需要置空嗎    297
10.2  讓程序更利于調(diào)試    298
10.2.1  錄像    299
10.2.2  實(shí)現(xiàn)一個log類    300
10.2.3  跟蹤代碼運(yùn)行的流程    302
10.2.4  為內(nèi)存分配加上一個殼    302
10.3  RELEASE版本的調(diào)試    310
10.4  小結(jié)    311
第11章  腳本    313
11.1  為什么需要腳本    314
11.2  應(yīng)該用腳本做些什么    316
11.3  腳本不應(yīng)該做什么    318
11.4  如何嵌入腳本語言    319
11.5  選擇一種腳本語言    321
11.6  實(shí)戰(zhàn)嵌入式腳本Lua 5    324
11.6.1  嵌入Lua    324
11.6.2  使用coroutine驅(qū)動游戲邏輯    326
11.6.3  封裝C++中的對象    328
11.6.4  回調(diào)機(jī)制    336
11.7  反外掛技術(shù)    338
11.7.1  防止加速器    338
11.7.2  防止分析偽造網(wǎng)絡(luò)包    339
11.7.3  防止逆向工程    341
11.7.4  防止代碼鉤子    344
11.7.5  懲戒外掛作弊者    344
11.7.6  安全地將信息傳遞給服務(wù)器    345
11.7.7  防止模擬輸入    346
第12章  版本控制    349
12.1  常用版本控制軟件    351
12.2  版本控制工具在項目中的使用    355
12.3  不僅僅是程序才需要    358
第13章  開發(fā)方法    361
13.1  失敗的經(jīng)驗(yàn)    363
13.2  成功的經(jīng)驗(yàn)    365
13.3  對游戲開發(fā)方法的一些思考    369
第14章  編程和游戲    373
14.1  操作    376
14.2  角色設(shè)定    378
14.3  再談技術(shù)    379
14.4  淺談網(wǎng)絡(luò)游戲    381
14.5  小結(jié)    382
后記    383
致謝    385

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號