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

游戲之旅:我的編程感悟

游戲之旅:我的編程感悟

定 價:¥46.00

作 者: 云風著
出版社: 電子工業(yè)出版社
叢編項:
標 簽: 游戲 應用程序 程序設計

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

內容簡介

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

作者簡介

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

圖書目錄

第1章  計算機,游戲,我    1
1.1  計算機    2
1.2  計算機游戲    3
1.3  計算機與我    7
1.3.1  啟蒙    7
1.3.2  編程    9
第2章  算法,程序的靈魂    13
2.1  程序=算法+數(shù)據(jù)結構    14
2.1.1  算法    15
2.1.2  數(shù)據(jù)結構    17
2.2  搜索算法    23
2.2.1  地圖尋路問題    23
2.2.2  博弈問題    27
2.2.3  更為廣泛的運用    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)絡
(Artificial Neural Network)    34
2.4  優(yōu)化    36
2.4.1  質數(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  程序的本質    57
3.4.3  寄存器    58
3.4.4  尋址方式    60
3.4.5  匯編指令    61
3.4.6  C/C++ 語言和匯編    62
3.4.7  小結    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保護模式    68
4.2  VGA 到VESA    70
4.2.1  超越 BGI    70
4.2.2  VGA    72
4.2.3  VESA 標準    72
4.2.4  花絮    74
4.3  保護模式下的開發(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  小結    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  小結    132
第6章  匯編優(yōu)化    135
6.1  淺談代碼優(yōu)化    138
6.2  并不僅僅是匯編    139
6.2.1  在算法實現(xià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  使用內嵌匯編    148
6.3.3  C++的函數(shù)調用規(guī)則    150
6.3.4  寄存器的使用    152
6.3.5  _declspec(naked)    152
6.4  指令使用的技巧    153
6.4.1  LEA:別樣的內存尋址指令    153
6.4.2  BSWAP:擴展寄存器的個數(shù)    154
6.4.3  縮短指令的字節(jié)數(shù)    155
6.4.4  避免跳轉指令    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的擴展    194
7.2.3  SIMD技術在C語言環(huán)境下的使用    196
7.2.4  MMX 編碼技巧    197
7.2.5  SIMD 的應用舉例    201
7.2.6  SIMD編程注意要點    203
7.2.7  SIMD的性能檢測    204
第8章  引擎中的優(yōu)化    205
8.1  Blit的優(yōu)化    207
8.2  臟矩形優(yōu)化    209
8.2.1  “風魂”中改進的臟矩形算法    215
8.2.2  滾動優(yōu)化    219
8.2.3  覆蓋優(yōu)化    222
8.2.4  臟矩形在3D游戲界面中的運用    224
8.2.5  時間和空間的權衡    229
8.2.6  關于估算    230
8.3  自己設計精靈格式    231
8.4  動態(tài)數(shù)據(jù)加載    234
8.5  小結    236
第9章  C 和 C++    237
9.1  從C到C++    239
9.2  C vs C++,效率至上    243
9.2.1  全局變量    243
9.2.2  函數(shù)調用的堆棧處理    243
9.2.3  函數(shù)調用的參數(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  標準庫的差異    245
9.2.10  動態(tài)內存分配    245
9.3  優(yōu)雅的C++    246
9.3.1  消失了的宏    247
9.3.2  const修飾及類型轉換    248
9.3.3  隱藏實現(xiàn)    248
9.3.4  引用而非指針    250
9.3.5  名字空間    250
9.4  C++ 的誤區(qū)    251
9.4.1  類層次過細    251
9.4.2  濫用操作符重載    252
9.4.3  濫用標準容器    253
9.4.4  濫用動態(tài)類型識別和異常    253
9.4.5  濫用多重繼承    254
9.4.6  忽視C++高級特性的復雜度    255
9.4.7  學習C++    256
9.5  動態(tài)內存分配的優(yōu)化    257
9.5.1  另一種優(yōu)化策略:多次分配,一次釋放    266
9.5.2  垃圾回收    268
9.5.3  再論動態(tài)內存分配    269
9.6  template    272
9.6.1  封裝C++的成員函數(shù)調用    272
9.6.2  常數(shù)數(shù)量的對象復制    274
9.6.3  對象計數(shù)    275
9.6.4  避免重復代碼    277
9.6.5  選擇最佳的容器    279
9.6.6  延遲運算    281
9.6.7  編譯時計算的游戲    283
9.7  小結    286
第10章  調試    287
10.1  assert及程序錯誤的提前發(fā)現(xiàn)    288
10.1.1  崩潰的程序不說謊    289
10.1.2  為軟件維護多個版本    291
10.1.3  前置條件和后置條件    292
10.1.4  自己實現(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  讓程序更利于調試    298
10.2.1  錄像    299
10.2.2  實現(xiàn)一個log類    300
10.2.3  跟蹤代碼運行的流程    302
10.2.4  為內存分配加上一個殼    302
10.3  RELEASE版本的調試    310
10.4  小結    311
第11章  腳本    313
11.1  為什么需要腳本    314
11.2  應該用腳本做些什么    316
11.3  腳本不應該做什么    318
11.4  如何嵌入腳本語言    319
11.5  選擇一種腳本語言    321
11.6  實戰(zhàn)嵌入式腳本Lua 5    324
11.6.1  嵌入Lua    324
11.6.2  使用coroutine驅動游戲邏輯    326
11.6.3  封裝C++中的對象    328
11.6.4  回調機制    336
11.7  反外掛技術    338
11.7.1  防止加速器    338
11.7.2  防止分析偽造網(wǎng)絡包    339
11.7.3  防止逆向工程    341
11.7.4  防止代碼鉤子    344
11.7.5  懲戒外掛作弊者    344
11.7.6  安全地將信息傳遞給服務器    345
11.7.7  防止模擬輸入    346
第12章  版本控制    349
12.1  常用版本控制軟件    351
12.2  版本控制工具在項目中的使用    355
12.3  不僅僅是程序才需要    358
第13章  開發(fā)方法    361
13.1  失敗的經(jīng)驗    363
13.2  成功的經(jīng)驗    365
13.3  對游戲開發(fā)方法的一些思考    369
第14章  編程和游戲    373
14.1  操作    376
14.2  角色設定    378
14.3  再談技術    379
14.4  淺談網(wǎng)絡游戲    381
14.5  小結    382
后記    383
致謝    385

本目錄推薦

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