新書推薦:
《
新加坡教育:神话与现实
》
售價:HK$
96.3
《
“口袋中的世界史”第一辑·冷战中的危机事件
》
售價:HK$
291.2
《
绝美的奥伦堡蕾丝披肩编织
》
售價:HK$
177.0
《
狂飙年代:18世纪俄国的新文化和旧文化(第二卷)
》
售價:HK$
177.0
《
万有引力书系 纳粹亿万富翁 德国财富家族的黑暗历史
》
售價:HK$
109.8
《
中国常见植物野外识别手册:青海册
》
售價:HK$
76.2
《
三星堆对话古遗址(从三星堆出发,横跨黄河流域,长江流域,对话11处古遗址,探源多元一体的中华文明)
》
售價:HK$
87.4
《
迷人的化学(迷人的科学丛书)
》
售價:HK$
143.4
|
內容簡介: |
本书介绍了HTML5 游戏开发的一般过程和技巧。全书共分12 章,第1
章介绍了本书相关的HTML5的诸多新特性,包括在canvas 上绘图、播放声音等,另外还引入了子画面页的概念;第2~4
章利用Box2D物理引擎开发了一款非常类似于《愤怒的小鸟》的游戏,全面介绍了物理引擎的概念,以及在游戏中使用物理引擎的方法,这一部分还引入了视差滚动技巧,以实现某种伪3D
效果;第5~10
章开发了一款简化版的《红色警戒》游戏,这一部分涉及了相当多的内容,包括地图的制作,建筑与单位的设定、绘制,玩家与单位的互动,触发器与剧情的编写,路径规划算法等;第11、12
章利用nodeJS 和WebSocket
开发了《红色警戒》游戏的多人对战模式,这一部分的主要问题是保持游戏在多个玩家的浏览器中的状态一致。
对于熟悉前端开发,想用前端技术做一些更酷的事情,却又不知如何下手的人,这是一本可多得的好书。
|
關於作者: |
Aditya Ravi
Shankar是在1993年第一次接触计算机之后开始学习编程的。当时还没有互联网和在线教程,他在当地图书馆找到一本编程书籍,并通过艰苦地重写书中的代码,编写了他的第一个GW-BASIC游戏。
2001年,他从印度理工学院毕业之后,做了近10年的软件顾问,为投资银行和大型企业开发交易与分析系统。最后,他离开了这个行业,这样他可以专注于从事自己所热爱的游戏开发。
从此,作为一个自信的极客,他使用各种新的语言和技术来进行自己的项目和实验,包括HTML5。在这期间,他独立在HTML5平台上重建了著名的命令与征服RTS游戏,他也因此而著名。
除了编程,Aditya还喜欢桌球、萨尔萨舞,以及学习发挥潜意识。他在其个人站点(www.adityaravishankar.com)中有一些关于游戏编程、个人发展和桌球的文章。
当他不忙于写作,或者不用专注于自己的项目时,他也会做一些咨询工作,以帮助企业来使用新的软件产品。
译者简介
谢光磊,中科院某所硕士研究生在读。热爱生活,热爱Web前端开发,热爱WebGL技术。理想是成为一流的游戏设计师。个人站点:www.xieguanglei.com。
技术审核者简介
Shane
Hudson是一位自由的Web站点开发者,专注于最前沿的Web技术和Web标准。他曾经参与过大量交互式Web站点的工作并辅助项目的开发,具有丰富的使用JavaScript的经验。他对人工智能和计算机视觉具有浓厚的兴趣,他的E-mail地址是shane@shanehud
son.net。
Shane说:“Shankar撰写的这本书正是业界所需要的:关于如何有效并熟练地编写JavaScript(和Node.js)。这本书教你如何编写游戏,但它并不仅仅是一本关于游戏开发的书,还是一本教你如何编写高质量JavaScript代码的书。”
Josh Robinson是一位专注于前沿技术的编程专家和自由开发者。他对编程的热爱最初来自一台二手的Commodore
64计算机屏幕上的蓝色荧光,后来他选择现代Web开发作为自己的职业。2006年,他供职于一家网络电话供应商之时,发现了Ruby和Ruby
on Rails的优雅之处,并开发了若干个gem,其中包括流行的countries
gem。你可以通过JoshRobinson.com或者Twitter: @JoshRobinson联系到他。Josh
Robinson说:“有了这本书,你就能像一个Boss一样写代码了。”
Syd Lawrence经营并管理着We Make Awesome
Sh,他是Twilio的开发者和传播者。他获得过很多赞誉。Geek.com曾经将他形容为现代的超级英雄,而The Next
Web曾经说他是社交网络的领袖。
|
目錄:
|
第1章 HTML5与JavaScript概要 1
1.1 canvas元素 2
1.1.1 绘制矩形 3
1.1.2 绘制复杂形状或路径 5
1.1.3 绘制文本 7
1.1.4 自定义画笔样式(颜色和纹理) 8
1.1.5 绘制图像 9
1.1.6 平移和旋转 10
1.2 audio元素 11
1.3 image元素 14
1.3.1 图像加载 15
1.3.2 子画面页(精灵图) 15
1.4 动画:计时器和游戏循环 17
1.4.1 requestAnimationFrame 18
1.5 小结 20
第2章 创建基本的游戏世界 21
2.1 基本HTML布局 21
2.2 创建启动画面和主菜单 22
2.3 关卡选择 26
2.4 加载图像 29
2.5 加载关卡 33
2.6 动画 34
2.7 处理鼠标输入 37
2.8 设置游戏阶段 39
2.9 小结 42
第3章 物理引擎基础 43
3.1 Box2D基础 43
3.1.1 引入Box2D 44
3.1.2 定义World变量 45
3.1.3 添加第一个物体:地面 46
3.1.4 绘制世界:调试绘图模式 48
3.1.5 动画 50
3.2 更多的Box2D元素 52
3.2.1 创建矩形物体 52
3.2.2 创建圆形物体 54
3.2.3 创建多边形物体 56
3.2.4 创建多种形状的复杂物体 58
3.2.5 连接物体的接合点 61
3.3 追踪碰撞与破坏 64
3.3.1 接触监听器 65
3.4 绘制角色 68
3.5 小结 71
第4章 物理引擎集成 72
4.1 定义物体 72
4.2 添加Box2D 75
4.3 创建物体 78
4.4 向关卡加入物体 79
4.5 设置Box2D调试绘图 82
4.6 绘制物体 84
4.7 Box2D动画 86
4.8 加载英雄 88
4.9 发射英雄 91
4.10 结束关卡 94
4.11 碰撞损坏 96
4.12 绘制弹弓橡胶带 99
4.13 切换关卡 101
4.14 添加声音 103
4.14.1 添加断裂和反弹的音效 104
4.14.2 添加背景音乐 107
4.15 小结 110
第5章 创建即时战略游戏世界 111
5.1 基本HTML布局 112
5.2 创建启动画面和主菜单 112
5.3 地图与关卡 118
5.4 加载任务简介画面 120
5.5 制作游戏界面 124
5.6 实现地图平移 131
5.7 小结 137
第6章 加入单位 138
6.1 定义单位 138
6.2 第一个物体:主基地 139
6.3 为关卡添加单位 143
6.4 绘制单位 147
6.5 添加星港 150
6.6 添加炼油厂 154
6.7 添加炮塔 157
6.8 添加车辆 160
6.9 添加飞行器 165
6.10 添加地形 170
6.11 选中游戏单位 175
6.12 强调选中的单位 178
6.13 小结 183
第7章 单位智能移动 184
7.1 命令单位 184
7.2 发送和接收命令 186
7.3 执行指令 188
7.4 实现飞行器移动 189
7.5 路径规划 195
7.6 定义寻径格网 196
7.7 实现车辆移动 203
7.8 碰撞检测和导航 207
7.9 将采油车展开为炼油厂 214
7.10 流畅移动 215
7.11 小结 219
第8章 添加更多的游戏元素 220
8.1 实现基本的经济系统 220
8.1.1 设置启动资金 220
8.1.2 实现侧边栏 223
8.1.3 获取资金 225
8.2 购买建筑和单位 226
8.2.1 添加侧边栏按钮 226
8.2.2 启用与禁用侧边栏按钮 229
8.2.3 在星港建造车辆和飞行器 232
8.2.4 从基地建造建筑 241
8.3 结束关卡 249
8.3.1 实现消息对话框 250
8.3.2 实现触发器 254
8.4 小结 259
第9章 添加武器和战斗 261
9.1 实现战斗系统 261
9.1.1 添加炮弹 261
9.1.2 炮塔的战斗指令 269
9.1.3 飞行器的战斗指令 274
9.1.4 车辆的战斗指令 279
9.2 创建智能的敌人 284
9.3 添加战争迷雾 287
9.3.1 定义迷雾对象 287
9.3.2 绘制迷雾 290
9.3.3 禁止在迷雾上建造建筑 293
9.4 小结 295
第10章 完成单人战役 296
10.1 添加音效 296
10.1.1 创建音效 296
10.1.2 命令确认音效 298
10.1.3 消息提示音 301
10.1.4 战斗音效 302
10.2 创建单人战役 303
10.2.1 救援 303
10.2.2 袭击 312
10.2.3 抵抗围攻 318
10.3 小结 329
第11章 WebSocket与多人对战模式 331
11.1 使用Node.js操作WebSocket API 331
11.1.1 浏览器端的WebSocket 331
11.1.2 使用Node.js创建HTTP服务器 334
11.1.3 创建WebSocket服务器 336
11.2 创建多人对战游戏大厅 339
11.2.1 定义多人对战大厅界面 339
11.2.2 游戏房间列表 341
11.2.3 进入和离开房间 345
11.3 启动多人对战游戏 351
11.3.1 定义多人对战关卡 351
11.3.2 加载多人战役关卡 354
11.4 小结 359
第12章 多人对战游戏操作 360
12.1 同步网络模型 360
12.1.1 测量网络传输时间 361
12.1.2 发送命令 365
12.2 结束多人对战 370
12.2.1 玩家被击败时结束游戏 370
12.2.2 玩家断开连接时结束游戏 375
12.2.3 玩家丢失连接时结束游戏 376
12.3 实现玩家聊天 378
12.4 小结 382
索引 384
|
內容試閱:
|
译者序
香港回归那一年的某一天,我第一次在同学家的电脑上观摩了他玩《红色警戒95》这款游戏的过程。至今我依然记得,当时他操纵着一辆吉普车和几名步兵,在地图上探索。队伍所到之处,原先覆盖着的黑色迷雾就会散去,显现出其下的地形来。说实话,我被这个效果深深地震撼了。不久,父母为家里添置了一台电脑,我也如愿以偿地玩上了这款游戏。事实上,作为20世纪80年代末出生的一批人,电子游戏伴随我度过了几乎整个少年时代。
一款优秀的游戏就好像一部引人入胜的小说(如《仙剑奇侠传》《空之轨迹》),或者一部伟大的百科全书(如《文明》《三国志》),令人击节称赞。不同的是,电子游戏带给玩家的沉浸感,比书籍带给读者的更加直接和浓烈。我无数次萌生出这样的念头:如果能制作出自己的游戏——制作游戏场景和背景音乐,设定角色与怪物的外形和技能,建立战斗系统与剧情——那多好。所以,作为读者的你,应当可以想象出,当得知有机会翻译一本关于游戏编程的书籍之时,我该有多兴奋。
这本书名为《HTML5游戏开发进阶指南》,顾名思义,讲的是如何开发HTML5游戏。HTML诞生之初仅仅是用来结构化文档信息,并创建可在浏览器上显示的网页。事实上,最初版本的HTML连图片都无法显示,页面仅由标题、文字段落和指向其他页面的链接组成。随着互联网的发展,HTML逐渐变成了今天的样子。我们在花花绿绿的网页上浏览新闻、观看视频、听音乐、购物、更新Facebook状态、与同事聊天,甚至玩游戏——今天的HTML,早已不是一页A4纸,而是能够与用户深度交互的平台。
HTML5是最新的HTML标准,其诸多新特性中,最令人期待的一点莫过于新的标签。开发者可以在中几乎不受限制地绘图,就像在Windows下使用GDI函数一样;在部分浏览器中,开发者甚至可以在中绘制三维场景,就像使用openGL一样。结合requestAnimationFrame或setTimeInterval,这个标签简直就是为游戏设计的。这本书主要介绍的就是如何使用标签进行游戏开发。
本书手把手地带领读者实现了两款HTML5游戏:前4章实现了一个类似于《愤怒地小鸟》的游戏。后8章实现了一款简化版的《红色警戒》游戏。再简单的逻辑从零开始实现,都不是一件容易的事情,对于这两款游戏,虽然看上去简单,但绝不是随随便便就能够写出来的。事实上,原作者力求这两款游戏臻于完善,并在书中详尽地阐述了游戏的细节:比如作者在绘制第一款游戏中的弹弓和橡胶带时,为了使橡胶带看上去很自然,而将弹弓分为两部分;又如,作者在第二款游戏中,为了防止车辆在地图上移动时发生“阻塞”而进行的努力。
对于熟悉前端开发,又想在前端有所作为的开发者,这是一本不可多得的好书。书中模块化的JavaScript代码,以及将琐碎的功能模块拼装成整体的方式,值得学习;本书介绍了很多游戏编程常用的技巧,如使用子画面页以优化性能,使用视差滚动以产生3D效果等。另外,还介绍了一些开源的游戏算法实现,如JavaScript版本的Box2D物理引擎、A*路径规划算法等。最后涉及使用Node.js构建多人战役的方法,如果你对服务器端的JavaScript感兴趣,你也应该来读一读这本书。
总之,在读完本书之后,相信你一定知道如何着手去开发一款HTML5游戏。
|
|