初學者的入門指南,從零開始完整講解瞭一個復雜的橫嚮捲軸平颱視頻遊戲的開發過程
本書涵蓋豐富的代碼和演示實例,通過高可靠性、可復用的代碼幫助專業開發者掌握必備知識
遊戲編程提供瞭有創意的財富和商業機會,而且並不難理解。本書作者David Geary嚮讀者展示瞭如何使用可以免費獲取的瀏覽器工具及資源創作視頻遊戲,並在桌麵瀏覽器和移動端上運行它們。
本書循序漸進地實現一個復雜的街機風格遊戲,而且完全從零開始,不需要使用任何專有的遊戲框架。通過學習Snail Bait遊戲的完整開發過程,會讓你對設計和構建任何類型的HTML5 2D遊戲有更深層次的理解。
本書涵蓋以下內容:
創作光滑、無閃爍的動畫
實現不受遊戲中潛在動畫幀頻影響的運動
驅動sprite對象,讓它們執行閃閃發光、爆炸等運動
在音軌上對多聲道聲音特效實現分層
彎麯時間創作非綫性動畫特效,例如跳躍或者彈跳等
通過一個時間係統,控製遊戲中的時間流逝
實現用於仿真自然現象的粒子係統
有效地發現sprite對象之間的碰撞
構建一個包含特殊屬性的開發者後門
使用Node.js和socket.io將實時遊戲指標傳給服務器
開發一個提示闆,用於顯示服務器上存儲的高分榜
在移動設備上實現HTML5
本書通過精心編寫且容易理解的代碼,以及抓住關鍵問題的文字描述,闡明瞭遊戲開發過程中的每一個細節。本書第1~19章講解瞭Snail Bait遊戲的完整開發過程,從以一個簡單的顯示圖像的遊戲版本開始,涵蓋瞭HTML5視頻遊戲開發的所有特點。第20章總結全書,使用本書前19章講述的大部分技術內容實現瞭第二個視頻遊戲。不管是遊戲開發新手,還是專業的遊戲開發人員,都能從本書中獲益。
本書中所有的程序源碼,包括本書中討論過的、指定章節的特殊版本的遊戲代碼,都可以在華章網站(www.hzbook.com)上下載。
David Geary,是《Core HTML5 Canvas》一書的作者,HTML5 Denver社區的聯閤創始人,也是計算機圖形學和網絡應用開發的著名專傢。他之前寫過8本書,包括暢銷書《Graphic Java》以及《Core Java Server Faces》,讀者可以在推特@davidgeary上關注他。
譯者序
前言
緻謝
第1章 概述 1
1.1 Snail Bait遊戲 3
1.2 HTML5遊戲開發最佳實踐 8
1.2.1 窗口失去焦點時暫停遊戲 8
1.2.2 窗口重獲焦點時實現倒計時功能 9
1.2.3 使用CSS實現UI特效 10
1.2.4 對遊戲運行緩慢的狀態做齣檢測和處理 11
1.2.5 添加社交功能 11
1.2.6 將所有遊戲圖像放在單獨的sprite錶單中 11
1.2.7 在服務器中存儲高分榜和實時遊戲數據 13
1.3 特彆功能 13
1.4 Snail Bait遊戲中的HTML和CSS 15
1.5 開始Snail Bait遊戲編程 21
1.6 本書中使用的JavaScript 23
1.7 小結 25
1.8 練習 26
第2章 原始素材和開發環境 27
2.1 使用開發者工具 28
2.1.1 控製颱 29
2.1.2 Chrome Canary的幀速率計數器 32
2.1.3 調試 34
2.1.4 時間綫 35
2.1.5 Profiling 39
2.2 獲取資源 40
2.2.1 圖像 40
2.2.2 圖像處理 41
2.2.3 音效和音樂 41
2.2.4 動畫 42
2.3 使用CSS背景 43
2.4 生成小圖標 45
2.5 縮短編碼周期 46
2.6 小結 48
2.7 練習 48
第3章 圖形和動畫 49
3.1 使用HTML5 canvas元素繪製圖形和圖像 51
3.1.1 繪製背景 52
3.1.2 繪製跑步小人 53
3.1.3 繪製平颱 53
3.2 實現平滑的HTML5動畫 55
3.2.1 requestAnimationFrame()方法 57
3.2.2 requestAnimationFrame()的polyfill實現 57
3.3 實現遊戲主循環 60
3.4 計算幀速率 61
3.5 滾動遊戲背景 62
3.5.1 平移坐標係 62
3.5.2 滾動Snail Bait遊戲的背景 65
3.6 製作基於時間的運動 67
3.7 反轉滾動方嚮 67
3.8 繪製動畫幀 68
3.9 使用視差産生視深的假象 68
3.10 小結 71
3.11 練習 71
第4章 遊戲的基本架構 72
4.1 在JavaScript對象中封裝遊戲函數 73
4.1.1 SnailBait的構造函數 74
4.1.2 SnailBait的原型 75
4.2 理解JavaScript語言中挑剔的this指針 77
4.3 處理鍵盤輸入 79
4.4 玩傢按p鍵時暫停或者恢復遊戲 81
4.5 凍結遊戲,確保它精確地在暫停的位置恢復 82
4.6 在窗口失去焦點時暫停遊戲 83
4.7 使用動態的倒計時來恢復一個暫停的遊戲 84
4.7.1 嚮遊戲玩傢顯示提示闆(簡短信息) 85
4.7.2 Snail Bait的倒計時 87
4.8 小結 89
4.9 練習 90
第5章 遊戲加載動畫 91
5.1 定義Snail Bait遊戲的窗口 93
5.2 使用CSS過渡讓元素淡入、淡齣 96
5.2.1 讓元素淡入 97
5.2.2 讓元素淡齣 98
5.2.3 snailbait-toast元素的CSS 99
5.2.4 顯示和隱藏提示闆 100
5.3 讓擁有與CSS過渡屬性Opacity關聯的元素淡入、淡齣 103
5.4 實現加載動畫 105
5.5 顯示遊戲畫麵 109
5.6 小結 112
5.7 練習 113
第6章 sprite對象 114
6.1 sprite對象 116
6.1.1 sprite對象的屬性 118
6.1.2 sprite對象的構造函數 119
6.1.3 sprite對象的方法 119
6.2 將sprite對象整閤到遊戲主循環中 121
6.3 實現sprite對象的artist對象 124
6.3.1 圖形artist對象 124
6.3.2 圖像artist對象 125
6.3.3 sprite圖像錶單artist對象 125
6.3.4 定義sprite圖像錶單單元格 128
6.4 創建和初始化遊戲的sprite對象 130
6.5 使用元數據定義sprite對象 133
6.6 滾動sprite對象 136
6.7 小結 138
6.8 練習 138
第7章 sprite對象行為 140
7.1 行為基礎 142
7.2 跑步小人行為 143
7.3 跑步小人的跑動行為 146
7.4 輕量級行為 148
7.5 遊戲獨立行為 150
7.6 組閤行為 155
7.7 小結 159
7.8 練習 159
第8章 時間軸,第1部分:有限行為及綫性運動 160
8.1 實現一個初始的跳躍行為算法 161
8.2 將處理跳躍行為的職責轉交給跑步小人 162
8.3 實現跳躍行為 164
8.4 使用秒錶記錄動畫時間 165
8.5 重新定義跳躍行為 168
8.6 實現綫性運動 170
8.6.1 上升階段 170
8.6.2 下降階段 171
8.7 暫停行為 173
8.8 小結 175
8.9 練習 175
第9章 時間軸,第2部分:非綫性運動 176
9.1 理解時間及其衍生物 177
9.2 使用動畫計時器和緩變功能實現非綫性跳躍 177
9.3 實現動畫計時器 179
9.4 實現緩變功能 181
9.5 微調緩變功能 184
9.6 實現真實的跳動行為 185
9.7 使行為隨機化 189
9.8 使用動畫計時器和緩變功能實現非綫性顔色改變 190
9.9 小結 193
9.10 練習 193
第10章 時間軸,第3部分:時間係統 194
10.1 Snail Bait遊戲的時間係統 195
10.2 創建和啓動時間係統 197
10.3 將時間係統整閤進Snail Bait遊戲中 198
10.3.1 使用時間係統驅動遊戲動畫 198
10.3.2 實現使用時間係統修改遊戲時間流的函數 199
10.3.3 在計算幀速率時分解時間比率 199
10.3.4 使用時間係統暫停和恢復遊戲 200
10.4 重新定義秒錶和動畫計時器的當前時間 202
10.5 實現時間係統 206
10.6 小結 208
10.7 練習 208
第11章 碰撞檢測 209
11.1 碰撞檢測過程 210
11.2 碰撞檢測技術 211
11.3 Snail Bait遊戲中的碰撞檢測 212
11.3.1 sprite對象的碰撞矩形 212
11.3.2 跑步小人的碰撞行為 214
11.4 為碰撞檢測選擇碰撞候選對象 215
11.5 在跑步小人與其他sprite對象之間檢測碰撞 216
11.6 處理碰撞 217
11.7 優化碰撞檢測 220
11.7.1 改善包圍盒 220
11.7.2 使用空間分割方法 221
11.8 監測碰撞檢測的運行性能 222
11.9 編程實現碰撞檢測的邊界案例 223
11.10 小結 226
11.11 練習 226
第12章 重力 228
12.1 為跑步小人實現墜落行為 228
12.2 實現重力 230
12.2.1 跑步小人的墜落行為 232
12.2.2 計算初始下降速度 236
12.2.3 在跑步小人墜落過程中暫停遊戲 237
12.3 最終版的碰撞檢測 237
12.4 小結 238
12.5 練習 239
第13章 sprite動畫和特殊效果 240
13.1 實現sprite動畫 241
13.2 創建特效 246
13.2.1 晃動遊戲畫麵 246
13.2.2 場景切換 248
13.3 編排效果 253
13.3.1 炸死蜜蜂 254
13.3.2 引爆按鈕 256
13.4 小結 258
13.5 練習 258
第14章 聲音和音樂 259
14.1 創建聲音和音樂文件 261
14.2 加載音樂和音效 262
14.3 設置聲音和音樂控件 263
14.4 播放音樂 264
14.5 循環播放音樂 265
14.6 播放音效 267
14.6.1 創建sprite音頻對象 270
14.6.2 定義音效對象 271
14.6.3 實現多聲道播放音效 272
14.7 打開和關閉聲音播放 279
14.8 小結 280
14.9 練習 280
第15章 移動設備 281
15.1 在移動設備上運行Snail Bait遊戲 284
15.2 檢測移動設備 284
15.3 縮放遊戲以適應移動設備 286
15.3.1 HTML5 viewport元標簽 287
15.3.2 以編程方式調整遊戲畫麵以適應移動設備屏幕 291
15.4 修改遊戲動畫底部的控製說明 295
15.5 修改歡迎界麵 295
15.5.1 實現歡迎提示 296
15.5.2 實現移動設備中的控製說明 301
15.5.3 實現移動設備版開始提示 305
15.5.4 顯示移動設備中的開始提示 306
15.6 添加觸控事件 307
15.7 在移動設備中處理音頻的方法 310
15.8 在主屏幕上添加啓動圖標,並以全屏模式運行遊戲 312
15.9 小結 313
15.10 練習 313
第16章 粒子係統 314
16.1 排煙孔粒子係統 315
16.2 使用排煙孔粒子係統 318
16.2.1 定義排煙孔粒子係統數據 318
16.2.2 創建排煙孔粒子係統 318
16.2.3 將排煙孔粒子係統存入Snail Bait遊戲的sprite對象數組中 319
16.2.4 在每個動畫幀中滾動排煙孔粒子係統 320
16.3 編程實現排煙孔粒子係統 321
16.3.1 把排煙孔粒子係統僞裝成sprite對象 321
16.3.2 組閤火焰粒子 323
16.3.3 組閤煙泡 327
16.4 暫停排煙孔粒子係統 337
16.5 小結 338
16.6 練習 338
第17章 用戶界麵 339
17.1 記錄玩傢遊戲成績 340
17.2 增加遊戲生命指示器 343
17.3 顯示遊戲字幕 348
17.4 使用Tweet發布玩傢遊戲得分 354
17.5 當遊戲運行緩慢時通知遊戲玩傢 357
17.5.1 監控幀速率 361
17.5.2 編程實現運行緩慢通知的事件處理句柄 363
17.6 編程實現通關動畫 364
17.7 小結 368
17.8 練習 368
第18章 開發者後門程序 370
18.1 Snail Bait遊戲的開發者後門 372
18.2 開發者後門的HTML元素及CSS 373
18.3 顯示及隱藏開發者後門 375
18.4 更新開發者後門的元素 377
18.5 實現開發者後門的復選框 378
18.5.1 顯示及隱藏碰撞矩形 380
18.5.2 啓用或禁用運行緩慢通知 382
18.5.3 顯示或隱藏排煙孔粒子係統 383
18.5.4 更新開發者後門的復選框 383
18.6 實現開發者後門的滑動條 384
18.6.1 為開發者後門的滑動條定義HTML元素及CSS 386
18.6.2 在Snail Bait遊戲的Java-Script代碼中訪問滑動條的讀數 387
18.6.3 創建並初始化開發者後門的滑動條 388
18.6.4 將運行緩慢的滑動條關聯到遊戲中 389
18.6.5 將時間速率滑動條關聯到遊戲中 389
18.6.6 將遊戲關聯到時間速率滑動條上 390
18.6.7 在顯示開發者後門之前更新滑動條 391
18.7 實現開發者後門刻度尺 392
18.7.1 創建並訪問刻度尺的canvas元素 393
18.7.2 淡入淡齣刻度尺 394
18.7.3 繪製刻度尺 395
18.7.4 更新刻度尺 396
18.7.5 拖動遊戲畫麵 397
18.8 小結 401
18.9 練習 401
第19章 服務器端開發:內部指標、高分記錄及部署 403
19.1 Node.js及socket.io簡介 404
19.2 在Snail Bait遊戲中引入socket.io 406
19.3 創建一個簡單的服務器 407
19.4 在服務器端創建套接字 407
19.5 啓動服務器 408
19.6 在客戶端創建一個套接字並連接到服務器 408
19.7 記錄遊戲內部指標 409
19.8 管理高分記錄 412
19.8.1 實現高分記錄的用戶界麵 413
19.8.2 檢索服務器中的高分記錄 415
19.8.3 在客戶端顯示高分記錄 418
19.8.4 監視姓名輸入 419
19.8.5 驗證並將高分記錄存儲到服務器 420
19.8.6 重新顯示高分記錄 422
19.8.7 開始新遊戲 422
19.9 部署Snail Bait遊戲 423
19.10 將文件上傳到服務器 425
19.11 小結 426
19.12 練習 426
第20章 後記:Bodega Revenge遊戲 428
20.1 設計用戶界麵 430
20.2 創建sprite錶單 433
20.3 實例化遊戲 433
20.4 實現sprite對象 434
20.4.1 炮塔 434
20.4.2 炮彈 437
20.4.3 小鳥 439
20.5 實現sprite對象的行為 441
20.5.1 炮塔的行為 442
20.5.2 炮彈的行為 447
20.5.3 小鳥的行為 450
20.6 繪製剩餘炮彈指示器 454
20.7 為移動設備實現觸摸控製 456
20.8 小結 458
20.9 練習 459
前 言 Preface
本書是為希望使用HTML5進行2D遊戲開發,且具備一定JavaScript編程經驗的開發人員而準備的。在本書中,筆者從零開始完整講解瞭一個復雜的橫嚮捲軸平颱視頻遊戲的開發過程,並將該視頻遊戲命名為“Snail Bait”。在開發過程中,筆者沒有使用任何第三方圖形框架或遊戲框架,因此讀者將從本書中學會以編程方式實現平滑動畫、sprite爆炸、開發人員後門程序、遊戲難易度設計等所有內容。如果讀者正在使用某個遊戲框架開發遊戲,那麼本書對於幫助讀者理解遊戲框架內部的工作原理也同樣大有裨益。
齣於教學目的,Snail Bait遊戲僅實現瞭一個關卡,然而它卻具備瞭街機風格遊戲的全部特點。Snail Bait遊戲在滾動的背景上同時操作多個動畫對象,即sprite對象,在播放遊戲背景音樂的同時添加多種音頻效果。sprite對象具備多種行為,包括但不限於跑動、跳躍、飛行、閃光、彈跳、來迴移動、爆炸、碰撞、平颱著陸、從遊戲畫麵底部跌落等。
另外,Snail Bait遊戲還實現瞭多個特色功能。例如,一個可以減慢或加快遊戲整體速度的時間係統;遊戲加載過程動畫;當遊戲主角失去生命時,震動遊戲畫麵的特殊效果;模擬煙霧和燃燒的粒子係統等。當遊戲窗口失去焦點時,Snail Bait遊戲會暫停運行,而當遊戲窗口重新獲得焦點時,Snail Bait遊戲會以一個倒計時動畫作為開始,以便玩傢有時間來恢復對遊戲的控製。
雖然沒有使用遊戲框架或圖形框架,但是Snail Bait遊戲使用Node.js和socket.io技術實現瞭將遊戲中的一些指標數據發送到服務器端、高分存儲和檢索,並在遊戲窗口頂部顯示高分榜等功能。當遊戲運行緩慢時,Snail Bait遊戲還將顯示警告信息。而當按下“Ctrl+D”組閤鍵啓動遊戲時,Snail Bait遊戲將啓動開發人員後門程序,從而賦予操作人員特殊權限,例如修改時間軸的流動,或者顯示sprite對象碰撞檢測矩形以及其他功能等。
當Snail Bait遊戲檢測到自己運行在移動設備上時,將通過調用觸摸事件處理句柄、調整遊戲窗口大小來重新配置自身,以便適應移動設備的屏幕大小及控製方式。
本書將展示如何一步一步編程實現Snail Bait遊戲的所有功能,這樣讀者就可以在自己的遊戲中實現類似的功能。
本書簡史
早在2010年,筆者從一款流行的Android係統下的開源遊戲Replica Island中下載瞭圖片和聲音,並使用它們在Android係統中實現瞭Snail Bait遊戲的初始版本。
當時,筆者已經對HTML5 Canvas技術産生瞭濃厚的興趣,並開始寫作上一本圖書《HTML5 Canvas核心技術:圖形、動畫與遊戲開發》。在寫作期間,筆者持續完善瞭Snail Bait遊戲,將它從基於Java語言及Android的係統環境,遷移到瞭基於JavaScript語言、HTML5 canvas元素及瀏覽器的環境中。在2012年寫作完成時,筆者已經開發齣瞭一個雖然原始但功能基本完整的遊戲版本。
2012年年底,筆者基於Snail Bait遊戲開始為IBM developerWorks網站撰寫10篇關於遊戲編程的係列技術文章(關於這些技術文章的鏈接,請參閱後麵的“網上資源”部分)。在接下來的10個月中,基於寫作需要,筆者繼續完善、修改瞭Snail Bait遊戲。
2013年夏天,Snail Bait遊戲已經日趨成熟。筆者前往加利福尼亞的塞瓦斯托波爾,把Snail Bait遊戲開發的全過程放在一起,拍攝瞭一部長達15小時的O’Reilly視頻,取名為“HTML5 2D遊戲開發”。從某個方麵而言,這部視頻就是本書的電影版。雖然該視頻直到9月纔得以發布,但它依然成為當年的十大暢銷O’Reilly視頻之一(關於這段視頻的鏈接,請參閱後麵的“網上資源”部分)。
2013年7月,從塞瓦斯托波爾迴到傢之後,筆者便全身心地投入到本書的寫作中。筆者改寫瞭IBM developerWorks網站上的10篇係列技術文章,將這些文章作為本書的開始章節,並在其後添加瞭10章的新內容。在寫作的整個過程中,筆者不斷迭代修改Snail Bait遊戲的代碼,使其更具有可讀性。
2013年12月,在本書第1~19章完成後,筆者決定增加最後一章。該章講解瞭如何使用本書介紹的技術實現一個簡單完整的視頻遊戲,這就是第20章中Bodega’s Revenge遊戲的由來。
如何閱讀本書
本書的寫作目的簡單明確:通過講解如何實現一個復雜的視頻遊戲,教會讀者開發屬於自己的遊戲。
讀者可以采用多種方式閱讀本書。首先,筆者為瞭使本書更便於閱讀,在書中添加瞭大量的截圖、程序清單和圖錶。
書中靈活地使用瞭“注意”“提示”“警告”和“最佳實踐”模塊。這些模塊精簡瞭本書主要內容,每個“注意”“提示”“警告”和“最佳實踐”模塊都有一個標題(除瞭隻有一行的模塊之外),這樣讀者一眼就可以判定這些輔助內容是否與自己的實際情況有關。總體而言,本書主要是在講解開發方法,而這些模塊則重點提示瞭開發的原因。如果讀者時間有限,那麼可以拋開這些模塊,直接閱讀本書的主要內容,從而快速掌握遊戲底層的工作機製,同時確保不會遺漏任何重要內容。
本書第1~19章講解瞭Snail Bait遊戲的完整開發過程,從一個簡單的顯示圖像的遊戲版本開始,涵蓋瞭HTML5視頻遊戲開發的所有特點。第20章總結全書,使用本書前19章講述的大部分技術內容實現瞭第二個視頻遊戲。
如果讀者計劃精讀本書,而不僅僅是把它當作一個參考,那麼建議從第1章或第20章開始閱讀,其中第20章除瞭對第1~19章所學內容進行瞭迴顧與綜述外,還增加瞭部分新知識,例如極坐標係統和鏇轉坐標係統的應用。
假如讀者從第20章開始閱讀,甚至隻是略微地瀏覽一下第20章,讀者都可以對前19章所講述的內容有一個大緻的瞭解,但是不要奢望在第一次閱讀時就能理解透徹。
筆者猜想大部分讀者都希望把本書當作一個參考,因此除瞭在每章的開頭部分加入該章主題外,還在每章的開始部分添加瞭一段關於該章內容的簡要介紹。這樣將給讀者快速定位具體內容帶來很大便利。同時,筆者還加入瞭許多關於如何實現具體功能的分步說明,這樣讀者就可以按照這些步驟實現自己的類似功能。
本書練習
被動地閱讀一本書不會將任何人變成一個遊戲開發程序員。讀者必須通過自己動手編寫一些代碼來真正學會實現一款遊戲的方法。為此,本書在每一章的結束部分都列齣瞭一些練習,以幫助讀者更好地學習。
為瞭完成練習,讀者需要下載Snail Bait遊戲源代碼的最終版本,並且修改代碼。在某些情況下,練習將指導讀者修改某個具體版本的Snail Bait遊戲源代碼,這些版本的遊戲源代碼與具體的章節有關。關於Snail Bait遊戲源代碼版本劃分的詳細信息,請閱讀下麵的內容。
Snail Bait遊戲源代碼及其版本劃分
本書講述的主要內容來源於兩個視頻遊戲。讀者可以通過“網上資源”部分的URL地址查看、下載這兩個遊戲及其源代碼。
在閱讀時,讀者會發現參考Snail Bait遊戲的源代碼對於理解書中的內容非常有幫助,而通過參考與讀者正在閱讀的章節對應的源代碼,這種幫助將更加明顯。例如,在第1章裏,我們實現瞭Snail Bait遊戲的一個初始版本,簡單繪製瞭遊戲背景和遊戲主角。這個版本的源代碼與最終版本的源代碼雖然有少量相似之處,但此時就查閱最終版本的源代碼一點用都沒有,大量的代碼反而會讓讀者眼花繚亂。反倒是參考corehtml5games.com/book/code/ch01網址上這個對應第1章結束的版本更有助於讀者理解第1章所講述的內容。本書每章(除第2章外)對應的源代碼版本的URL都按照corehtml5games.com/book/code/ch??的格式設定,其中“??”代錶瞭對應於第01~20章的兩位數字。
如上所述,除非另有說明,否則本書每章最後部分的練習都對應於按照章節一步一步開發遊戲,在章節結束時得到的Snail Bait遊戲版本。
網上資源
本書配套網站:corehtml5games.com
Snail Bait遊戲的在綫網址:corehtml5games.com/snailbait
Bodega’s Revenge遊戲的在綫網址:corehtml5games.com/bodegas-revenge
Snail Bait遊戲源代碼下載地址:corehtml5games.com/book/downloads/snailbait
Bodega’s Revenge遊戲源代碼下載地址:corehtml5games.com/book/downloads/bodegas-revenge
O’Reilly網站上作者的“HTML5二維遊戲開發”視頻:shop.oreilly.com/product/0636920030737.do
IBM developerWorks網站上作者的“HTML5二維遊戲開發”係列技術文章:www.ibm.com/developerworks/java/library/j-html5-game1/index.html
作者2013年在亞特蘭大HTML5用戶組會議上關於HTML5遊戲編程的演講視頻:youtube.com/watch?v=S256vAqGY6c
作者齣版的《HTML5 Canvas核心技術:圖形、動畫與遊戲開發》在亞馬遜上的鏈接:http://amzn.to/1jfuf0C
預備知識
如果人們不能說某種語言或以這種語言書寫,他們就不會考慮上這樣一門創造性的書寫課。同樣,為瞭使用HTML5編程實現復雜遊戲,讀者就必須掌握JavaScript語言。JavaScript語言是學習本書的前提基礎。
本書程序清單所列的代碼幾乎都是用JavaScript語言編寫的,但這並不代錶隻掌握JavaScript語言就夠瞭,讀者還需要掌握與之相關的HTML和CSS,熟悉計算機圖形學,並具備基本的數學知識。
關注自己的遊戲
最後,讓我們來討論一下為什麼我們能夠聚在這裏。筆者猜想讀者之所以閱讀本書是因為大傢希望通過編程來實現一款屬於自己的遊戲。
本書按章節討論瞭遊戲編程的各個方麵,例如實現sprite、碰撞檢測等。雖然它們屬於Snail Bait遊戲,但是讀者也能輕鬆地將這些實現方法套用到自己的遊戲當中。
本書章節順序的編排也很重要,這些章節展示瞭如何從頭開始一步一步編程實現一款遊戲。在本書的開始部分,首先收集原始素材,搭建開發環境,然後從繪製遊戲的基本圖形開始編程開發。在隨後的章節中,逐步嚮遊戲中添加動畫、sprite對象、sprite對象行為等功能,從而逐步完善Snail Bait遊戲。如果讀者正在從零開始開發一款遊戲,那麼可能會希望遵循同樣的講解方式,這樣讀者就可以一邊學習實現功能的方法,一邊在自己的遊戲中實現這些功能。
在開始認真編寫代碼之前,大傢應該多花一些時間來搭建開發環境,並盡可能地熟悉手中瀏覽器的開發者工具。建議大傢在第2章結束前,盡可能縮短自己的開發周期,因為在準備階段多花的時間將會大大提高後續的開發效率。
最後要感謝大傢購買本書。筆者迫不及待地想要看到你自己創造的遊戲!
David Geary
科羅拉多州,柯林斯堡
2014年
Acknowledgements 緻 謝
我非常慶幸自己能夠擁有一位非常優秀的編輯,他也是我20年寫作生涯裏的唯一一位編輯,一個總能從我的下一本書中讀懂並接受我的觀念的編輯,一個總是指導我將概念變成作品的編輯,Greg Doench。像往常一樣,Greg Doench在本書從計劃寫作到成書的全過程中給瞭我充分的幫助及指導。
Mary Lou Nohr是一位非常棒的文字編輯,她參與編輯瞭我此前的所有著作。當她再次欣然同意擔任本書的責任編輯時,我感到自己非常幸運。
這是我和Alina Kirsanova閤作的第2本書,Alina Kirsanova是一位非常齣色的排版編輯,我的PDF文件經過她的處理後,總會變得非常漂亮。Julie Nahil監督瞭本書的齣版,使整個齣版過程都能按照齣版商的要求如期進行。
每當完成一本書的寫作時,我都會選擇那些個人認為能夠幫助我改進作品的人來擔任審稿人。這一次我選擇瞭4位非常齣色的審稿人:Jim O'Hara、Timothy Harrington、Simon Sarris和Willam Malone。Gintas Sanders允許我在Snail Bait遊戲中使用他的金幣圖片,並指齣瞭Snail Bait遊戲中的許多不足。
在為O’Reilly拍攝“HTML5二維遊戲開發”視頻時,我有幸接觸到瞭當時的現場觀眾,其中一位觀眾給我留下瞭深刻印象,他嚮我提齣瞭很多問題和建議,此人就是本書的審稿人Jim O’Hara。在此後的審稿過程中,Jim O’Hara一如既往地認真負責,嚮我提齣瞭許多好問題、好建議。
編輯Greg Doench介紹我認識瞭Tim Harrington,他是德銳大學的一個高級學術應用分析師,並且具有遊戲開發的實際經驗。他的許多建議使我深受啓發,並促使我重新思考如何更好地完成本書。
我一直在為本書尋找一位非常瞭解遊戲編程的圖形專傢,最後我找到瞭Simon Sarris。讓我喜齣望外的是,他不僅是一位精通遊戲編程的圖形專傢,還是一位優秀的作傢,他提齣的幾種不同方法幫助我完善瞭本書。
最後,我很慶幸William Malone能夠審閱本書。William是一位專業的遊戲開發人員,他開發瞭Sesame Street遊戲(相關信息請查閱http://bit.ly/1nlSY3N)。William的工作對本書産生瞭深刻的影響,他指齣瞭我忽略瞭的許多細節,特彆是關於移動設備的問題。
物流很快,幫同事買的專業書。很不錯。
評分書的質量很好,價格優惠,內容不錯值得購買。
評分這種書還是不錯的,就是得有耐心,一點一點去模仿,不適閤初學者要有js基礎,canvas基礎
評分內容挺好的,看瞭很有啓發
評分京東自營正品,最強的是物流,秒送
評分有深度,挺不錯
評分速度就是快
評分6.18等到雙十一大優惠終於買下來瞭 之前一直都不講價
評分不錯!慢慢看!
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有