第1章 入门 1
1.1工具 2
1.1.1所需要的组件 2
1.1.2 Java开发工具包 5
1.1.3集成开发环境 5
1.1.4 Web服务器 10
1.1.5 Android SDK和模拟器 12
1.2技术 15
1.2.1代码 16
1.2.2面向对象编程 20
1.2.3移动浏览器简介 28
1.3本章小结 29
第2章 浏览器中的图形:canvas 31
元素 31
2.1游戏剖析 31
2.2在浏览器中绘图 32
2.3 HTML基础设置 33
2.4 canvas的概念 34
2.4.1上下文 35
2.4.2坐标系统 36
2.5绘制图形 39
2.5.1矩形 39
2.5.2路径 41
2.5.3子路径 48
2.6描边和填充 50
2.6.1纯色 50
2.6.2渐变 50
2.6.3图案 55
2.7上下文状态及变换 57
2.7.1平移 58
2.7.2缩放 59
2.7.3旋转 60
2.7.4变换叠加 60
2.7.5上下文状态 61
2.7.6示例项目中的上下文转换 63
2.8示例游戏项目的输出结果 64
2.9本章小结 67
第3章 创建第一个游戏 69
3.1 HTML5游戏框架 70
3.1.1标准框架 70
3.1.2强制方向 74
3.2游戏架构 76
3.3创建游戏 78
3.3.1呈现游戏盘 78
3.3.2游戏状态及逻辑 84
3.3.3将组件结合在一起:Game类 90
3.3.4将Game类添加到HTML框架中 93
3.4本章小结 95
第4章 动画和“精灵” 97
4.1“精灵” 98
4.1.1加载图像 99
4.1.2绘制图像 110
4.1.3“精灵”表单 114
4.2动画基础 116
4.2.1最简单的动画 117
4.2.2 JavaScript线程模式 118
4.2.3定时器 119
4.2.4改善动画 123
4.3本章小结 135
第5章 事件处理和用户输入 137
5.1浏览器事件 138
5.1.1桌面浏览器与Android浏览器输入 138
5.1.2通过事件捕获用户输入 139
5.1.3从事件获取更多 142
5.2自定义事件 147
5.3自定义事件侦听器和发射器 148
5.3.1 EventEmitter:基类 149
5.3.2事件与回调 151
5.4自定义事件 152
5.4.1实现InputHandlerBase 155
5.4.2创建MouseInputHandler 158
5.4.3创建TouchInputHandler 161
5.5高级输入 162
5.5.1拖放 162
5.5.2完美像素拾取和图像遮罩 164
5.5.3复合操作 165
5.6模拟操纵杆 168
5.7本章小结 171
第6章 呈现虚拟世界 173
6.1瓦片地图 173
6.1.1瓦片地图背后的思想 174
6.1.2实现瓦片地图 175
6.1.3测量FPS 180
6.2优化渲染性能 182
6.2.1仅绘制所需要的内容 182
6.2.2屏幕外缓冲区 184
6.2.3缓存视口周围的区域 187
6.3世界对象 191
6.3.1坐标系统 192
6.3.2实现WorldObjectRenderer 193
6.3.3呈现顺序 196
6.3.4优化 198
6.4等距视图 200
6.5本章小结 202
第7章 创建等距引擎 203
7.1设置 204
7.1.1计划 205
7.1.2准备工作区 206
7.1.3基本代码 206
7.1.4实用函数 209
7.2等距地形 216
7.2.1坐标系统 216
7.2.2呈现瓦片 217
7.2.3实现IsometricTileLayer 221
7.3呈现对象 229
7.3.1实现对象群集 232
7.3.2对象缓存 235
7.3.3处理移动 238
7.3.4组合对象 240
7.3.5对象层:下一步骤 242
7.4“脏”矩形 242
7.4.1工作机制 243
7.4.2实现 245
7.4.3与层集成 249
7.4.4创建“脏”矩形 252
7.5 UI和层管理器 254
7.5.1层管理器(LayerManager) 255
7.5.2 UI 257
7.6交互 261
7.6.1事件传播和处理 262
7.6.2停止传播 265
7.7本章小结 267
第8章 浏览器中的3D 269
8.1 3D渲染简介 269
8.2 3D渲染的工作机制 271
8.2.1数学 271
8.2.2一个3D示例 271
8.3 “Hello World” 3D引擎 273
8.3.1模型和场景 273
8.3.2渲染 275
8.4本章小结 286
第9章 使用WebGL 289
9.1 WebGL的基础 289
9.1.1初始化WebGL 290
9.1.2几何体 292
9.1.3 OpenGL ES 2.0渲染管线 294
9.1.4使用缓冲区 295
9.1.5着色器和GLSL 297
9.2基本示例:渲染3D立方体 302
9.2.1在Web页面中使用着色器 302
9.2.2渲染“Hello World” 304
9.3探索WebGL 309
9.3.1颜色 309
9.3.2纹理 313
9.4本章小结 320
第10章 服务器端 323
10.1 Node.js基础 324
10.1.1 Node .js概述 324
10.1.2编程模式 325
10.1.3安装Node .js 327
10.1.4调试Node脚本 328
10.2编写Node.js脚本 330
10.2.1异常和堆栈跟踪 330
10.2.2全局命名空间和Node模块 331
10.2.3编写第一个模块 335
10.2.4发现模块 337
10.2.5使用NPM 338
10.3回归现实:构建游戏服务器 341
10.3.1 Node的Web开发框架 341
10.3.2基本输出 341
10.3.3呈现Web页面 345
10.4理解中间件 353
10.5内务处理 355
10.5.1错误报告 355
10.5.2日志 359
10.5.3服务器配置 361
10.6本章小结 363
第11章 与服务器对话 365
11.1浏览器中网络通信的演变 365
11.2服务器设置 367
11.3为基本的HTTP请求使用XMLHttpRequestAPI 368
11.3.1普通XHR HTTP请求 369
11.3.2 XHR错误处理 370
11.3.3 XMLHttpRequest Level 2 371
11.3.4使用二进制数据 372
11.4反向Ajax 374
11.4.1存在的问题 375
11.4.2解决方案 375
11.4.3最佳解决方案 375
11.4.4可接受的解决方案 377
11.4.5过时的解决方案 381
11.5现场测试“传输” 382
11.6本章小结 384
第12章 构建多人游戏 387
12.1网络游戏构成 387
12.1.1游戏的体系结构:从单机版到多人版 388
12.1.2项目结构 391
12.2 Socket.IO游戏大厅 392
12.2.1客户端-服务器通信 393
12.2.2添加游戏大厅屏幕 396
12.3添加游戏设置 401
12.3.1在客户端和服务器之间共享逻辑 401
12.3.2服务器端 403
12.3.3客户端 408
12.4本章小结 415
第13章 游戏中的AI 417
13.1 AI对于游戏的重要性 418
13.2路径查找概述 418
13.3图论 420
13.3.1图的概念 420
13.3.2在JavaScript中实现图 422
13.4构建路径查找AI 426
13.5路径查找图的构造方法 432
13.5.1全手工图 432
13.5.2光线投射(视线法) 433
13.5.3导航网格 433
13.6决策 434
13.7本章小结 438
第14章 JavaScript游戏引擎 439
14.1图形API、库以及游戏引擎 439
14.1.1图形API 440
14.1.2图形库 440
14.1.3游戏引擎 441
14.2 Crafty 442
14.2.1实体组件系统 443
14.2.2 Crafty Hello World 446
14.2.3 Crafty游戏 449
14.2.4加载“精灵” 449
14.2.5呈现地形和对象 451
14.2.6动画 453
14.2.7与实体和事件系统进行交互 454
14.3最终版本 455
14.4本章小结 458
第15章 构建原生应用 459
15.1原生应用 460
15.2设置Apache Cordova(PhoneGap) 461
15.2.1安装Cordova 462
15.2.2安装Apache Ant 462
15.3构建原生应用 463
15.3.1创建一个空的Android项目 463
15.3.2对空Android项目进行测试 464
15.3.3 Cordova项目的基础 465
15.3.4联网 469
15.3.5最后的“润色”:名称、图标和全屏模式 470
15.4使用原生API 473
15.5准备市场 476
15.5.1应用程序签名 476
15.5.2创建数字密钥 477
15.5.3对该应用程序签名 478
15.5.4在Google Play上发布 479
15.5.5更新应用程序 483
15.6本章小结 484
第16章 添加声音 485
16.1网页中的音频 486
16.1.1 audio标签 486
16.1.2 Web Audio API 487
16.1.3 Android浏览器中的声音 488
16.2使用SoundManager2 489
16.2.1初始设置 489
16.2.2循环 491
16.2.3添加游戏声音 493
16.3在Cordova应用程序中播放声音 495
16.4用户体验 496
16.5本章小结 497
16.6进一步探索 497
附录A 调试客户端JavaScript 499