本書為“十二五”普通高等教育本科國家級規(guī)劃教材,著重介紹二維游戲程序設(shè)計(jì)所需的基礎(chǔ)知識,包括游戲圖像處理、二維游戲場景繪制、游戲交互界面設(shè)計(jì)、二維動畫合成、碰撞檢測與運(yùn)動模擬、游戲粒子系統(tǒng)、游戲音效編程、游戲中人工智能、網(wǎng)絡(luò)游戲編程、游戲腳本編程等,涵蓋了二維游戲程序設(shè)計(jì)的主要方面,全書共14章,強(qiáng)調(diào)理論與實(shí)踐結(jié)合,通過游戲?qū)嵗龁l(fā)性地說明游戲編程的相關(guān)原理和方法,每個主要章節(jié)均配有相應(yīng)的游戲片段實(shí)例,最后一章通過一個完整的綜合實(shí)例貫穿了本書的主要知識點(diǎn)和游戲開發(fā)要點(diǎn)。本書還有進(jìn)階篇的配套教材。本書面向的讀者對象是那些已掌握基本的程序設(shè)計(jì)技能,并立志于從事計(jì)算機(jī)游戲軟件開發(fā)的程序員和游戲開發(fā)愛好者。本書既可以作為數(shù)字媒體技術(shù)、計(jì)算機(jī)、軟件工程等專業(yè)的本科生(研究生)的教材,也可用于游戲?qū)W院和各類游戲編程人員培訓(xùn)班的參考資料,對正在從事游戲開發(fā)和制作的相關(guān)人員也具有重要的參考價值。
第3版前言
在電子工業(yè)出版社的大力支持下,本書分別于2005年和2009年推出第1版和第2版。其中,第2版成功入選普通高等教育“十一五”國家級規(guī)劃教材。近年來,隨著游戲開發(fā)技術(shù)的不斷演進(jìn),特別是手機(jī)游戲的迅猛發(fā)展,應(yīng)廣大讀者的要求,對原書稿中的內(nèi)容做了大幅更新和補(bǔ)充,形成了第3版書稿,并入選“十二五”普通高等教育本科國家級規(guī)劃教材。
在修訂第3版時,原本想通過增加“游戲中的軟件工程”、“游戲策劃”、“游戲腳本編程”、“手機(jī)游戲開發(fā)”、“游戲開發(fā)綜合實(shí)例”等內(nèi)容使得本書變成一本能夠覆蓋不同層次、不同領(lǐng)域人員的“大而全”的游戲開發(fā)專業(yè)教材,但在編寫過程中,我們發(fā)現(xiàn)涉及的內(nèi)容實(shí)在太多,后來聽取了采用該教材的大多數(shù)任課老師和同學(xué)的反饋意見,考慮到學(xué)時等限制因素,最終決定面向不同層次和水準(zhǔn)的開發(fā)人員將書稿分為基礎(chǔ)篇、提高篇兩冊!盎A(chǔ)篇”面向入門級的游戲開發(fā)人員,以介紹二維游戲開發(fā)的基礎(chǔ)知識為主,通過豐富的實(shí)例使得讀者可快速上手!疤岣咂泵嫦蛴幸欢ń(jīng)驗(yàn)的游戲開發(fā)人員,以介紹三維游戲開發(fā)的基礎(chǔ)知識為主,通過深入探究游戲開發(fā)的基本原理和技術(shù),讓讀者的游戲開發(fā)能力更上一層樓。
在修訂撰寫第3版時,我們把本書編寫的指導(dǎo)原則定位為以下幾方面:
? 把游戲開發(fā)涉及的多領(lǐng)域共性知識點(diǎn)的講授和實(shí)踐技能培訓(xùn)相融合,強(qiáng)調(diào)知識學(xué)習(xí)和動手實(shí)踐的有機(jī)結(jié)合。
? 在內(nèi)容組織上,利用書面文字系統(tǒng)地介紹游戲開發(fā)的知識點(diǎn),并提供完整的示例代碼和實(shí)驗(yàn)手冊。
? 采用“目標(biāo)學(xué)習(xí)、案例導(dǎo)航”的組織方式,讓讀者能夠快速掌握知識和技能要點(diǎn)。
? 整合和吸收多本游戲開發(fā)教材的框架結(jié)構(gòu),結(jié)合作者的最新研究和開發(fā)工作進(jìn)展,使得修訂內(nèi)容在技術(shù)和知識與時俱進(jìn)。
再次感謝浙江大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院、軟件學(xué)院、CAD&CG國家重點(diǎn)實(shí)驗(yàn)室為作者所提供的優(yōu)良科研條件和各種便利,使得本書的撰寫得以順利完成。感謝胡淑婷、許有甜、符曉洋、譚錦志等同學(xué),他們?yōu)椤盎A(chǔ)篇”的素材匯集、代碼編寫和實(shí)驗(yàn)手冊整理付出了的辛勤努力。感謝為本書提供圖片和示例代碼的眾多相關(guān)公司和人員,限于篇幅,就不一一列出了。
感謝所有使用本書的任課老師和同學(xué)的反饋建議。感謝電子工業(yè)出版社的各位編輯,謝謝他們的鼓勵與協(xié)作。最后,感謝家人對本書的撰寫和再次出版的無私支持和付出。
本書配有教學(xué)課件、實(shí)驗(yàn)手冊、源代碼和習(xí)題解答等。教學(xué)課件包括:第1~14章的授課PPT。實(shí)驗(yàn)手冊包括:第5~13章的示例代碼對應(yīng)的上機(jī)操作說明。(限于篇幅,每章的實(shí)驗(yàn)手冊沒有在書中直接給出,讀者可以掃描相應(yīng)位置的二維碼獲取實(shí)驗(yàn)手冊的文檔。)源代碼包括:第5~13章的示例代碼,以及第14章的綜合實(shí)例代碼。習(xí)題答案包括:第1~13章所有課后習(xí)題的參考答案。
需要者請登錄到http://www.hxedu.com.cn,或者掃描第二頁的二維碼,打包下載。
由于作者知識和水平所限,即使是再版,在本書中難免有一些錯誤,懇請讀者提出寶貴建議。
作 者
第1章 游戲開發(fā)簡介 001
1.1 什么是游戲 001
1.2 計(jì)算機(jī)游戲的發(fā)展 003
1.3 計(jì)算機(jī)游戲的分類 006
1.4 計(jì)算機(jī)游戲開發(fā)的基本理念和
方法 011
1.5 游戲開發(fā)的基本流程 012
1.6 游戲開發(fā)的準(zhǔn)則和“忠告” 014
1.7 游戲編程人員的基本素質(zhì)
要求 016
小結(jié) 017
習(xí)題1 017
第2章 計(jì)算機(jī)游戲策劃簡介 018
2.1 計(jì)算機(jī)游戲策劃的概念和
分類 018
2.2 計(jì)算機(jī)游戲策劃人員應(yīng)具備的
素質(zhì) 019
2.3 計(jì)算機(jī)游戲策劃基礎(chǔ) 020
2.3.1 游戲規(guī)則 020
2.3.2 獎罰機(jī)制 021
2.3.3 游戲資源 021
2.3.4 玩家技能 023
2.3.5 反饋機(jī)制 025
2.3.6 難度平衡 026
2.4 計(jì)算機(jī)游戲的策劃與開發(fā)
團(tuán)隊(duì) 028
小結(jié) 030
習(xí)題2 030
第3章 游戲圖像處理 031
3.1 圖像概述 031
3.2 顏色混合和半透明效果 035
3.2.1 基本原理和步驟 035
3.2.2 Alpha融合技術(shù) 036
3.3 圖像操作 038
3.3.1 直方圖 038
3.3.2 幾何運(yùn)算 039
3.3.3 圖像濾波算子 040
3.3.4 形態(tài)算子 042
3.4 圖像特效 044
小結(jié) 046
習(xí)題3 046
第4章 游戲引擎概覽 047
4.1 游戲引擎的提出 047
4.2 常用游戲引擎 048
4.3 Cocos2d-x引擎介紹 052
4.3.1 Cocos2d-x的核心概念 052
4.3.2 Cocos2d-x中的坐標(biāo)系 056
4.3.3 Cocos2d-x中的用戶交互響應(yīng) 057
4.3.4 Cocos2d-x的內(nèi)存管理機(jī)制 058
4.3.5 Cocos2d-x中的新增的3D特性 060
4.4 Cocos2d-x開發(fā)環(huán)境配置 060
4.4.1 Windows下開發(fā)環(huán)境配置 060
4.4.2 Android開發(fā)環(huán)境配置 062
4.4.3 iOS下的開發(fā)環(huán)境配置 066
小結(jié) 066
習(xí)題4 067
第5章 二維游戲場景繪制 068
5.1 游戲場景的組織和管理 068
5.2 游戲畫面背景 069
5.2.1 二維游戲背景的類型 069
5.2.2 游戲地圖的創(chuàng)建和顯示 070
5.2.3 磚塊地圖 073
5.2.4 磚塊地圖編輯器 074
5.2.5 Cocos2d-x中磚塊地圖的實(shí)現(xiàn) 076
5.3 文字與字體 078
5.3.1 字體編輯器 078
5.3.2 Cocos2d-x中的文本繪制 079
5.4 菜單項(xiàng) 082
5.5 擴(kuò)展控件 086
5.5.1 滾動框 086
5.5.2 滑動條控件 090
5.5.3 開關(guān)控件 091
5.5.4 按鈕控件 091
5.5.5 Scale9Sprite 092
5.6 游戲場景繪制實(shí)例――英雄
快跑 093
小結(jié) 099
習(xí)題和實(shí)驗(yàn) 099
第6章 游戲交互界面設(shè)計(jì) 100
6.1 交互界面設(shè)計(jì)概述 100
6.2 游戲的可玩性與交互界面 100
6.3 交互界面設(shè)計(jì)基礎(chǔ) 101
6.3.1 交互界面的色彩設(shè)計(jì) 101
6.3.2 交互界面的形式 102
6.4 游戲軟件的交互界面設(shè)計(jì) 107
6.5 Cocos2d-x中的界面設(shè)計(jì) 108
6.5.1 Cocos2d-x中的UI編輯器 108
6.5.2 用戶界面編輯器的使用 108
6.5.3 在Cocos2d-x引擎中的應(yīng)用 110
6.6 Cocos2d-x中的用戶交互 111
6.7 游戲界面設(shè)計(jì)實(shí)例――貪
食豆 113
小結(jié) 117
習(xí)題和實(shí)驗(yàn) 117
第7章 二維游戲動畫合成 118
7.1 計(jì)算機(jī)動畫概述 118
7.2 常見計(jì)算機(jī)動畫技術(shù) 118
7.2.1 基本動畫技術(shù) 118
7.2.2 腳本驅(qū)動的動畫技術(shù) 119
7.2.3 骨骼動畫技術(shù) 120
7.2.4 常見動畫制作軟件及其文件
格式 120
7.3 Cocos2d-x中的動作類 121
7.3.1 瞬時動作(ActionInstant) 121
7.3.2 延時動作(ActionInterval) 122
7.3.3 組合動作
(ActionAcombination) 123
7.3.4 速度的指定(speed) 124
7.3.5 跟隨動作(follow) 124
7.4 Cocos2d-x中的動畫 125
7.4.1 Cocos2d-x中與動畫相關(guān)的類 125
7.4.2 Cocos2d-x中的動畫編輯器 125
7.4.3 Cocos2d-x中動畫的實(shí)現(xiàn) 127
7.5 游戲動畫實(shí)例――俠客行 128
小結(jié) 139
習(xí)題和實(shí)驗(yàn) 139
第8章 碰撞檢測和運(yùn)動模擬 140
8.1 碰撞檢測 140
8.2 物體遮擋關(guān)系 141
8.3 物體運(yùn)動模擬 141
8.4 Cocos2d-x中的物理引擎 142
8.4.1 Box2D簡介 142
8.4.2 Box2D中的相關(guān)類 143
8.4.3 Box2D的使用 149
8.5 游戲物理模擬實(shí)例 150
8.5.1 基于Box2D的游戲?qū)嵗?150
8.5.2 Cocos2d-x的物理引擎Physics的
應(yīng)用 158
小結(jié) 159
習(xí)題和實(shí)驗(yàn) 160
第9章 游戲粒子系統(tǒng) 161
9.1 粒子系統(tǒng)概述 161
9.2 粒子效果 161
9.3 Cocos2d-x中的粒子系統(tǒng) 162
9.4 粒子的生命周期 163
9.5 粒子屬性 164
9.6 粒子編輯器 165
9.7 粒子系統(tǒng)實(shí)例―煙花瀑 169
小結(jié) 175
習(xí)題和實(shí)驗(yàn) 175
第10章 游戲音效編程 177
10.1 聲音基礎(chǔ) 177
10.2 常見的音效引擎 181
10.3 Cocos2d-x中的音樂和
音效 182
10.3.1 音樂和音效的預(yù)加載 182
10.3.2 播放和停止 183
10.3.3 暫停和恢復(fù)播放 185
10.3.4 其他成員 185
10.4 游戲音效編程實(shí)例 186
小結(jié) 188
習(xí)題和實(shí)驗(yàn) 188
第11章 游戲中的人工智能 189
11.1 游戲AI概述 189
11.2 游戲AI基本類型 190
11.3 常用的游戲AI技術(shù) 190
11.3.1 有限狀態(tài)機(jī) 191
11.3.2 模糊邏輯 192
11.3.3 人工神經(jīng)網(wǎng)絡(luò) 192
11.3.4 遺傳算法 193
11.3.5 腳本語言 193
11.4 二維游戲?qū)ぢ放cA*算法 194
11.4.1 游戲?qū)ぢ芳夹g(shù) 194
11.4.2 A*算法及其實(shí)現(xiàn) 195
11.5 游戲AI實(shí)例――迷宮尋寶 200
小結(jié) 205
習(xí)題和實(shí)驗(yàn) 206
第12章 網(wǎng)絡(luò)游戲編程 207
12.1 網(wǎng)絡(luò)游戲的基本架構(gòu) 207
12.2 網(wǎng)絡(luò)游戲通信協(xié)議 208
12.3 網(wǎng)絡(luò)游戲多線程編程 209
12.4 常見的游戲開發(fā)網(wǎng)絡(luò)框架 211
12.5 Cocos2d-x中的網(wǎng)絡(luò)通信 211
12.5.1 HTTP網(wǎng)絡(luò)通信 212
12.5.2 Socket網(wǎng)絡(luò)通信 214
12.5.3 WebSocket網(wǎng)絡(luò)通信 217
12.6 游戲網(wǎng)絡(luò)編程實(shí)例――網(wǎng)絡(luò)
坦克大戰(zhàn) 218
12.6.1 準(zhǔn)備工作 218
12.6.2 解析JSON 218
12.6.3 連接網(wǎng)絡(luò) 220
12.6.4 游戲邏輯實(shí)現(xiàn) 225
小結(jié) 227
習(xí)題和實(shí)驗(yàn) 228
第13章 游戲中的腳本編程 229
13.1 Lua簡介 229
13.2 Lua語言的語法 230
13.2.1 數(shù)值和類型 230
13.2.2 表達(dá)式 231
13.2.3 語句 232
13.2.4 函數(shù) 235
13.3 Lua程序與C++程序通信 236
13.3.1 C++代碼調(diào)用Lua函數(shù) 237
13.3.2 Lua代碼調(diào)用C++函數(shù) 238
13.4 Lua腳本在Cocos2d-x中的
應(yīng)用 239
13.5 游戲腳本編程實(shí)例――守衛(wèi)
寶箱 239
小結(jié) 246
習(xí)題和實(shí)驗(yàn) 246
第14章 計(jì)算機(jī)游戲綜合實(shí)例 247
14.1 全局控制和管理 247
14.2 游戲數(shù)據(jù)解析 250
14.2.1 CSV文件解析 250
14.2.2 SQLite數(shù)據(jù)庫應(yīng)用 253
14.3 場景繪制 262
14.3.1 地圖繪制 263
14.3.2 模型封裝和導(dǎo)入 267
14.4 界面設(shè)計(jì) 276
14.4.1 主界面構(gòu)建 276
14.4.2 對話框設(shè)計(jì) 280
14.5 動畫效果 285
14.6 游戲AI 287
小結(jié) 289
參考文獻(xiàn) 290