第Ⅰ部分 HTML5潛力初探
第1章 先飛後走,先難後易 3
1.1 引言 3
1.2 用500行代碼構建一個完整遊戲 4
1.2.1 瞭解遊戲 4
1.2.2 結構化遊戲 4
1.2.3 最終實現的遊戲 5
1.3 添加HTML和CSS樣闆代碼 5
1.4 畫布入門 6
1.4.1 訪問上下文 7
1.4.2 在畫布上繪製 7
1.4.3 繪製圖像 8
1.5 創建遊戲的結構 10
1.5.1 構建麵嚮對象的JavaScript 10
1.5.2 利用鴨子類型 11
1.5.3 創建三個基本對象 11
1.6 加載精靈錶 11
1.7 創建Game對象 13
1.7.1 實現Game對象 13
1.7.2 重構遊戲代碼 16
1.8 添加滾動背景 16
1.9 插入標題畫麵 20
1.10 添加主角 22
1.10.1 創建PlayerShip對象 22
1.10.2 處理用戶輸入 23
1.11 小結 24
第2章 從玩具到遊戲 25
2.1 引言 25
2.2 創建GameBoard對象 25
2.2.1 瞭解GameBoard對象 26
2.2.2 添加和刪除對象 26
2.2.3 遍曆對象列錶 27
2.2.4 定義麵闆的方法 29
2.2.5 處理碰撞 29
2.2.6 將GameBoard添加到
遊戲中 30
2.3 發射導彈 31
2.3.1 添加炮彈精靈 31
2.3.2 連接導彈和玩傢 32
2.4 添加敵方飛船 33
2.4.1 計算敵方飛船的移動 33
2.4.2 構造Enemy對象 34
2.4.3 移動和繪製Enemy對象 35
2.4.4 將敵方飛船添加到麵闆上 36
2.5 重構精靈類 37
2.5.1 創建一個通用的Sprite類 38
2.5.2 重構PlayShip 38
2.5.3 重構PlayerMissile 39
2.5.4 重構Enemy 40
2.6 處理碰撞 40
2.6.1 添加對象類型 41
2.6.2 讓導彈和敵方飛船碰撞 41
2.6.3 讓敵方飛船和玩傢碰撞 42
2.6.4 製造爆炸 43
2.7 描述關卡 44
2.7.1 設置敵方飛船 44
2.7.2 設置關卡數據 45
2.7.3 加載和結束一關遊戲 46
2.7.4 實現Level對象 47
2.8 小結 49
第3章 試飛結束,嚮移動進發 51
3.1 引言 51
3.2 添加觸摸控件 51
3.2.1 繪製控件 52
3.2.2 響應觸摸事件 54
3.2.3 在移動設備上測試 56
3.3 最大化遊戲界麵 57
3.3.1 設置視口 57
3.3.2 調整畫布尺寸 58
3.3.3 添加到iOS主屏幕 60
3.4 添加得分 61
3.5 使之成為公平的戰鬥 62
3.6 小結 65
第Ⅱ部分 移動HTML5
第4章 移動設備上的HTML5 69
4.1 引言 69
4.2 HTML5的發展簡史 70
4.2.1 瞭解HTML5“不同尋常”的成長曆程 70
4.2.2 期待HTML6?HTML7?不,僅HTML5足矣 70
4.2.3 關於規範 71
4.2.4 區分HTML5傢族和HTML5 71
4.3 恰當地使用HTML5 72
4.3.1 嘗試HTML5 72
4.3.2 嗅探瀏覽器 72
4.3.3 確定功能而非瀏覽器 74
4.3.4 漸進增強 75
4.3.5 彌補差距的膩子腳本 76
4.4 從遊戲角度考慮HTML5 76
4.4.1 畫布 77
4.4.2 CSS3/DOM 77
4.4.3 SVG 78
4.5 從移動角度考慮HTML5 79
4.5.1 瞭解一些新的API 79
4.5.2 即將登場的WebAPI 80
4.6 調查移動瀏覽器的前景 80
4.6.1 WebKit:市場霸主 80
4.6.2 Opera:依然在埋頭苦乾 81
4.6.3 Firefox:Mozilla的移動産品 81
4.6.4 WP7上的Internet
Explorer 9 81
4.6.5 平闆電腦 81
4.7 小結 82
第5章 瞭解一些有用的庫 83
5.1 引言 83
5.2 瞭解JavaScript庫 84
5.3 從jQuery談起 84
5.3.1 將jQuery添加到頁麵 84
5.3.2 瞭解$操作符 85
5.3.3 操縱DOM 86
5.3.4 創建迴調 87
5.3.5 綁定事件 89
5.3.6 發起Ajax調用 92
5.3.7 調用遠程服務器 92
5.3.8 使用Deferred 93
5.4 使用Underscore.js 94
5.4.1 訪問Underscore 94
5.4.2 使用集閤 94
5.4.3 使用實用函數 95
5.4.4 鏈式調用Underscore方法 96
5.5 小結 96
第6章 成為一個良好的移動市民 97
6.1 引言 97
6.2 響應設備的能力 97
6.2.1 最大化實際使用麵積 98
6.2.2 調整齣閤適的畫布尺寸 98
6.3 處理瀏覽器的尺寸調整、滾動和縮放 100
6.3.1 處理尺寸調整 100
6.3.2 防止滾動和縮放 101
6.3.3 設置視口 102
6.3.4 去除地址欄 103
6.4 配置iOS主屏幕應用 105
6.4.1 把遊戲變成Web應用可行的 105
6.4.2 添加啓動畫麵 105
6.4.3 配置主屏幕圖標 106
6.5 考慮移動設備的性能 107
6.6 適應有限的帶寬和存儲 108
6.6.1 為移動設備優化 108
6.6.2 移動設備好則一切皆好 108
6.6.3 縮減JavaScript 109
6.6.4 設置正確的頭域內容 109
6.6.5 經由CDN提供 110
6.7 藉助應用緩存的完全離綫運行 111
6.7.1 創建代碼清單文件 111
6.7.2 檢查瀏覽器是否在綫 113
6.7.3 監聽更高級的行為 113
6.7.4 最後的警告 113
6.8 小結 114
第Ⅲ部分 JavaScript遊戲 開發基礎
第7章 瞭解HTML5遊戲開發環境 117
7.1 引言 117
7.2 選擇編輯器 118
7.3 探討Chrome開發者工具 118
7.3.1 激活開發者工具 118
7.3.2 審查元素 118
7.3.3 查看頁麵資源 120
7.3.4 跟蹤網絡傳輸 121
7.4 調試JavaScript 123
7.4.1 查看Console選項卡 123
7.4.2 運用Script選項卡 125
7.5 分析和優化代碼 127
7.5.1 運行性能分析 127
7.5.2 真正進行遊戲優化 129
7.6 在移動設備上調試 131
7.7 小結 132
第8章 在命令行上運行JavaScript 133
8.1 引言 133
8.2 瞭解Node.js 134
8.3 安裝Node 134
8.3.1 在Windows上安裝Node 135
8.3.2 在OS X上安裝Node 135
8.3.3 在Linux上安裝Node 135
8.3.4 追蹤最新版的Node 136
8.4 安裝和使用Node模塊 136
8.4.1 安裝模塊 136
8.4.2 診斷代碼 136
8.4.3 縮減代碼 137
8.5 創建自己的腳本 137
8.5.1 創建package.json文件 138
8.5.2 使用服務器端畫布 139
8.5.3 創建可重用的腳本 140
8.6 編寫一個精靈地圖生成器 141
8.6.1 使用Futures模塊 142
8.6.2 自上而下進行編碼 143
8.6.3 加載圖像 144
8.6.4 計算畫布的尺寸 146
8.6.5 在服務器端畫布上繪製圖像 147
8.6.6 更新和運行腳本 148
8.7 小結 149
第9章 自建Quintus引擎(1) 151
9.1 引言 151
9.2 創建可重用HTML5引擎的框架 152
9.2.1 設計基本的引擎API 152
9.2.2 著手編寫引擎代碼 153
9.3 添加遊戲循環 155
9.3.1 構建更好的遊戲循環
定時器 155
9.3.2 將已優化的遊戲循環添加
到Quintus 156
9.3.3 測試遊戲循環 158
9.4 添加繼承 159
9.4.1 在遊戲引擎中使用繼承 159
9.4.2 將傳統繼承添加至JavaScript 160
9.4.3 運用Class的功能 163
9.5 支持事件 164
9.5.1 設計事件API 164
9.5.2 編寫Evented類 165
9.5.3 填寫Evented方法 165
9.6 支持組件 168
9.6.1 設計組件API 168
9.6.2 實現組件係統 169
9.7 小結 172
第10章 自建Quintus引擎(2) 173
10.1 引言 173
10.2 訪問遊戲容器元素 173
10.3 捕捉用戶輸入 176
10.3.1 創建輸入子係統 176
10.3.2 自建輸入模塊 177
10.3.3 處理鍵盤事件 179
10.3.4 添加小鍵盤控件 180
10.3.5 添加遊戲手柄控件 183
10.3.6 繪製屏幕輸入 186
10.3.7 完善和測試輸入 188
10.4 加載資産 190
10.4.1 定義資産類型 191
10.4.2 加載特定資産 192
10.4.3 完善加載器 194
10.4.4 添加預加載支持 197
10.5 小結 198
第11章 自建Quintus引擎(3) 199
11.1 引言 199
11.2 定義精靈錶 200
11.2.1 創建SpriteSheet類 200
11.2.2 跟蹤和加載精靈錶 201
11.2.3 測試SpriteSheet類 202
11.3 添加精靈 203
11.3.1 編寫Sprite類 203
11.3.2 引用精靈、屬性和資産 205
11.3.3 運用Sprite對象 205
11.4 使用場景設置舞颱 209
11.4.1 創建Quintus.Scenes模塊 210
11.4.2 編寫Stage類 210
11.4.3 豐富場景功能 214
11.5 完成Blockbreak遊戲的編寫 217
11.6 小結 219
第Ⅳ部分 使用CSS3和SVG 構建遊戲
第12章 使用CSS3構建遊戲 223
12.1 引言 223
12.2 選定場景圖 223
12.2.1 目標受眾 224
12.2.2 交互方法 224
12.2.3 性能需求 224
12.3 實現DOM支持 225
12.3.1 考慮DOM的特性 225
12.3.2 自建Quintus的DOM模塊 225
12.3.3 創建一緻的移動方法 226
12.3.4 創建一緻的過渡方法 229
12.3.5 實現DOM精靈類 230
12.3.6 創建DOM舞颱類 232
12.3.7 替換畫布的等價類 234
12.3.8 測試DOM功能 234
12.4 小結 235
第13章 製作一個CSS3 RPG遊戲 237
13.1 引言 237
13.2 創建滾動的區塊地圖 237
13.2.1 瞭解性能問題 238
13.2.2 實現DOM區塊地圖類 238
13.3 構建RPG遊戲 242
13.3.1 創建HTML文件 242
13.3.2 設置遊戲 243
13.3.3 添加區塊地圖 245
13.3.4 創建一些有用的組件 247
13.3.5 添加玩傢 250
13.3.6 添加迷霧、敵人和
戰利品 251
13.3.7 使用精靈擴展區塊地圖 255
13.3.8 添加血槽和HUD 258
13.4 小結 262
第14章 使用SVG和物理引擎
構建遊戲 263
14.1 引言 263
14.2 瞭解一些SVG基礎知識 264
14.2.1 在頁麵上顯示SVG 264
14.2.2 瞭解基本的SVG元素 265
14.2.3 變形SVG元素 269
14.2.4 應用筆畫和填充 270
14.2.5 超越基礎 272
14.3 通過JavaScript使用SVG 273
14.3.1 創建SVG元素 273
14.3.2 設置和讀取SVG特性 274
14.4 將SVG支持添加到
Quintus 275
14.4.1 創建SVG模塊 275
14.4.2 添加SVG精靈 276
14.4.3 創建SVG舞颱類 278
14.4.4 測試SVG類 280
14.5 使用Box2D添加物理支持 283
14.5.1 瞭解物理引擎 283
14.5.2 實現world組件 284
14.5.3 實現physics組件 287
14.5.4 將物理支持添加到
例子中 290
14.6 創建一個大炮射擊遊戲 292
14.6.1 設計遊戲 292
14.6.2 構建所需的精靈 292
14.6.3 收集用戶輸入並完成遊戲編寫 295
14.7 小結 296
第Ⅴ部分 HTML5畫布
第15章 瞭解HTML5的傑齣畫布 301
15.1 引言 301
15.2 畫布標簽入門 302
15.2.1 瞭解CSS和像素尺寸 302
15.2.2 提取渲染上下文 305
15.2.3 通過畫布創建圖像 305
15.3 在畫布上進行繪製 307
15.3.1 設置填充和筆畫樣式 307
15.3.2 設置筆畫細節 309
15.3.3 調整不透明度 310
15.3.4 繪製矩形 310
15.3.5 繪製圖像 311
15.3.6 繪製路徑 311
15.3.7 在畫布上渲染文本 313
15.4 使用畫布變形矩陣 314
15.4.1 瞭解基本的變形 315
15.4.2 保存、恢復和重置變形矩陣 316
15.4.3 繪製雪花 316
15.5 應用畫布效果 319
15.5.1 添加陰影 319
15.5.2 使用閤成效果 319
15.6 小結 321
第16章 實現動畫 323
16.1 引言 323
16.2 構建動畫地圖 323
16.2.1 確定動畫API 324
16.2.2 編寫動畫模塊 325
16.2.3 測試動畫 329
16.3 添加畫布視口 331
16.4 實現視差效果 334
16.5 小結 336
第17章 運用像素 337
17.1 引言 337
17.2 迴顧2D物理學 338
17.2.1 瞭解力、質量和加速度 338
17.2.2 為炮彈建模 339
17.2.3 換成迭代解 340
17.2.4 抽取可重用類 341
17.3 實現Lander遊戲 342
17.3.1 自建遊戲 342
17.3.2 構建飛船 343
17.3.3 精確到像素級 345
17.3.4 運用ImageData對象 346
17.3.5 製造爆炸 350
17.4 小結 354
第18章 創建一個2D平颱動作遊戲 355
18.1 引言 355
18.2 創建區塊層 356
18.2.1 編寫TileLayer類 356
18.2.2 試用TileLayer代碼 358
18.2.3 優化繪製 360
18.3 處理平颱動作遊戲的碰撞 361
18.3.1 添加2d組件 362
18.3.2 計算平颱動作遊戲的碰撞 364
18.3.3 使用PlatformStage拼接 366
18.4 構建遊戲 368
18.4.1 自建遊戲 368
18.4.2 創建敵人 369
18.4.3 添加子彈 371
18.4.4 創建玩傢 372
18.5 小結 375
第19章 構建一個畫布編輯器 377
19.1 引言 377
19.2 使用Node.js提供遊戲服務 377
19.2.1 創建package.json文件 378
19.2.2 設置Node以提供靜態資産 378
19.3 創建編輯器 379
19.3.1 修改平颱動作遊戲代碼 380
19.3.2 創建編輯器模塊 382
19.3.3 添加觸摸和鼠標事件 385
19.3.4 選擇區塊 387
19.4 添加關卡保存支持 389
19.5 小結 390
第Ⅵ部分 多 人 遊 戲
第20章 構建在綫社交遊戲 393
20.1 引言 393
20.2 瞭解基於HTTP的多玩傢
遊戲 394
20.3 設計一個簡單的社交遊戲 394
20.4 集成Facebook 395
20.4.1 生成Facebook應用 395
20.4.2 創建Node.js服務器 396
20.4.3 添加登錄視圖 399
20.4.4 測試Facebook身份驗證 401
20.5 連接數據庫 402
20.5.1 在Windows上安裝MongoDB 402
20.5.2 在OS X上安裝MongoDB 403
20.5.3 在Linux上安裝MongoDB 403
20.5.4 通過命令行連接MongoDB 403
20.5.5 將MongoDB集成到遊戲 405
20.6 完成Blob Clicker的編寫 407
20.7 推送至托管服務 410
20.8 小結 412
第21章 實現實時交互 413
21.1 引言 413
21.2 瞭解WebSocket 413
21.3 在瀏覽器中使用原生
WebSocket 415
21.4 使用Socket.io:支持迴退的WebSocket 417
21.4.1 創建塗鴉應用的
服務器端 417
21.4.2 添加塗鴉應用的客戶端 419
21.5 用Socket.io構建一個多人乒乓球遊戲 421
21.5.1 處理延時 422
21.5.2 防止作弊 422
21.5.3 部署實時應用 422
21.5.4 創建自動匹配的
服務器端 423
21.5.5 構建乒乓球遊戲的前端 426
21.6 小結 431
第22章 構建非傳統風格的遊戲 433
22.1 引言 433
22.2 創建一個Twitter應用 433
22.3 將Node應用連接至Twitter 435
22.3.1 發送第一條推文 435
22.3.2 監聽用戶的信息流 436
22.4 隨機生成單詞 437
22.5 創建Twitter上的Hangman遊戲 438
22.6 小結 443
第Ⅶ部分 移 動 增 強
第23章 通過地理位置定位 447
23.1 引言 447
23.2 地理定位入門 447
23.3 一次性獲取位置 448
23.4 在地圖上標齣位置 450
23.5 監視位置隨時間的變化 451
23.6 繪製交互式地圖 452
23.7 計算兩點間的距離 454
23.8 小結 454
第24章 查詢設備的方嚮和加速 455
24.1 引言 455
24.2 考查設備的方嚮 455
24.3 設備方嚮事件入門 456
24.3.1 檢測和使用事件 457
24.3.2 瞭解事件數據 457
24.4 試用設備方嚮 458
24.4.1 創建一個玩球的場所 458
24.4.2 添加方嚮控製 460
24.4.3 處理瀏覽器的鏇轉 461
24.5 小結 462
第25章 播放音效:移動設備的罩門 463
25.1 引言 463
25.2 使用audio標簽 463
25.2.1 把audio標簽用於簡單
播放 464
25.2.2 處理不同的受支持格式 464
25.2.3 瞭解移動設備音頻的局限性 465
25.3 構建一個簡單的桌麵音效引擎 465
25.3.1 將audio標簽用於遊戲音效 466
25.3.2 添加一個簡單的音效係統 466
25.3.3 將音效添加到Block Break
遊戲 468
25.4 構建一個移動音效係統 469
25.4.1 使用音效精靈 469
25.4.2 生成精靈文件 472
25.4.3 將音效精靈添加到遊戲 473
25.5 展望HTML5音頻的未來 474
25.6 小結 474
第Ⅷ部分 遊戲引擎和應用商店
第26章 使用HTML5遊戲引擎 477
26.1 引言 477
26.2 迴顧HTML5引擎的曆史 477
26.2.1 使用商用引擎 478
26.2.2 Impact.js 479
26.2.3 Spaceport.io 480
26.2.4 IDE引擎 480
26.3 使用開源引擎 481
26.3.1 Crafty.js 481
26.3.2 LimeJS 482
26.3.3 EaselJS 484
26.4 小結 487
第27章 瞄準應用商店 489
27.1 引言 489
27.2 為Google的Chrome Web
Store打包應用 490
27.2.1 創建托管應用 490
27.2.2 創建打包應用 492
27.2.3 發布應用 492
27.3 使用CocoonJS加速應用 493
27.3.1 準備把遊戲載入
CocoonJS 493
27.3.2 在Android上測試
CocoonJS 495
27.3.3 構建雲端應用 495
27.4 使用AppMobi的XDK和
DirectCanvas構建應用 496
27.4.1 瞭解DirectCanvas 496
27.4.2 安裝XDK 496
27.4.3 創建應用 497
27.4.4 修改Alien Invasion以
使用DirectCanvas 497
27.4.5 在設備上測試應用 502
27.5 小結 502
第28章 挖掘下一個熱點 503
28.1 引言 503
28.2 使用WebGL實現3D 503
28.3 使用Web Audio API獲得
更好的聲音訪問 504
28.4 使用全屏API擴大遊戲
畫麵 505
28.5 使用屏幕方嚮API鎖定設備
屏幕 505
28.6 使用WebBTC添加實時
通信 505
28.7 追蹤其他即將齣現的本地化
功能 506
28.8 小結 506
附錄A 資源 507
· · · · · · (
收起)