图书前言

前    言

自从社交游戏开始把游戏带给大众,帮助把这一曾经的亚文化变成一种面向大众的主流现象之后,游戏界和万维网就在彼此碰撞中发展着。再在其中投入移动设备,你会看到一种大众现象骤然出现,随着人们手中持有的设备越来越多,这一大众现象也变得越来越重要。

例如,截至撰写本书之时,一个在网络上大获成功的故事就是关于游戏开发厂商Rovio的,这一“愤怒的小鸟”游戏系列创造者的估值约80亿美元,几乎与手机制造巨头诺基亚(Nokia)价值相当。现在,人们花在手机和平板电脑上的时间比以往任何时候都要多,游戏以及社交网络占用了这段时间中的相当高的比例,智能手机和平板电脑显著取代了任天堂和索尼的专用移动游戏设备。借助HTML5,游戏开发者现在拥有了这样的技术能力,即通过单一代码库能影响到更多的人,比以往任何时候能想象得到的都要多。

HTML5移动游戏开发目前还是一项新技术,人们还不知道该如何看待这一技术,这很像是2008年时的智能手机游戏,苹果公司的应用商店(App Store)就是在这一年推出的。不过,一些重量级的组织已经加入进来,力保HTML5游戏取得成功。其中Facebook在2012年5月推出了它的应用中心(App Center),把基于HTML5的Web应用变成了移动设备上的一等公民,它正在研究一些移动设备上的货币化手段,以求不再受制于苹果公司这种从其应用商店的应用内购买中抽取30%手续费的做法。类似地,诸如AT&T一类的运营商也把Web应用看成一种从Google和苹果公司那里夺回失去收入的一种手段。

然而,在HTML5的游戏开发宏图中,一切都不容乐观。不同设备有着不同的功能、性能水准和屏幕分辨率,在HTML5移动游戏开发这一危险水域航行需要小心把握航向,而这正是本书能发挥作用的地方。本书旨在提供一个使用HTML5构建移动游戏的实用路线图,内容涵盖了媒介的可能性和局限性。若说HTML5桌面游戏的开发仍处于起步阶段,那么HTML5移动游戏的开发就还处于萌芽状态。成就一番伟业的可能性触手可及,但媒介的首记扣杀是否成功仍有待观察。

在早期阶段就涉猎某项技术可带来显著好处,使用新技术的幸事之一是噪音水平最低,相比其他已被接受的媒介,制造轰动所需的代价更少。HTML5游戏,特别是移动设备上的这些游戏,其预算仅为普通PC和控制台游戏所需的数百万美元的很少一部分。然而,由于万维网的病毒式扩散本质,它们却有机会在瞬间创造出巨大的销量。HTML5移动游戏有着更大的爆炸式增长可能性,因为它们能够借助链接实现实时共享,不需要接受者从应用商店下载一个可能并不适用于所持设备的应用。

本书将开启一段旅程,带领你畅游HTML5移动游戏开发这一激动人心的领域所呈现的可能性世界,我希望你扬帆起航,向这个世界进发。

本书读者对象

本书是为任何想要使用基于标准的无插件技术在浏览器中构建交互式游戏的读者准备的,它把重点放在移动游戏开发上,因为与诸如Flash之类存在竞争的Web技术相比,这是HTML5的优势所在,不过,你构建出来的游戏同样可在桌面浏览器中运行。

开发HTML5移动游戏需要通过一系列不同的媒介使用一些跨学科技能,若要正确无误地做到这一点,你需要对JavaScript语言有基本的了解,因为你将要最大限度地利用JavaScript在浏览器中构建游戏。本书不会从头讲解JavaScript知识,而是基于你所掌握的JavaScript知识快速构建游戏。

若不是天天都使用JavaScript,那么你可能会发现有些地方的代码很难理解,但并非就完全没有希望了——要快速掌握JavaScript,Gouglas Crockford撰写的JavaScript: The Good Parts(O’Reilly出版,2008年)可以帮助你熟悉该门语言,这本书只有区区180页,却产生了重大影响。在遇见书中提到的某些可能不太熟悉的技术时,你还可把此书当成参考资料。

若你是一位桌面游戏开发者,熟悉C++更甚于JavaScript,那么理解书中所谈内容是没有问题的,不过同样要说明的是,因为相比于C++,JavaScript(尽管有着类C的语法)与Lisp有着更多的共性,所以你可能也会希望查阅一下Crockford的这本书。JavaScript是弱类型、可变方法绑定的,对闭包的支持可能会带来一些难以理解的地方。

使用Flash构建游戏出身的ActionScript开发者应该会有宾至如归的感觉,唯一的主要障碍是HTML5游戏开发的连贯性还不如Flash。务必密切留意第7章,因为该章内容说明了如何检查和调试JavaScript,这样在游戏出现问题时,你就不会感到束手无策了。一些浏览器内置了非常强大的脚本调试器,所以你应该不会太过怀念Flash IDE。

本书内容

本书谈论的是使用HTML5创建游戏,这些游戏运行在诸如iOS设备和Android一类兼容HTML5的智能手机上。Windows Phone 7.5支持画布,因此在某些实例中也是游戏开发针对的目标,但因为它的画布性能受限,不支持基于标准的多点触控事件,所以在某些情况下,只能对Windows手机提供有限的支持。

倘若针对的目标是iOS 5.0或更高版本的移动Safari以及Android 4.0或更高版本的Android Chrome,那么你能做到最大限度地利用本书,因为这些设备都拥有最快的JavaScript引擎和硬件加速的画布支持。许多游戏可以运行在较旧版本的Android上,但性能会受到限制。

本书的组织方式

本书由8部分组成,每一部分都带着某种专门目的来传授移动HTML5游戏的开发知识。

第Ⅰ部分:“HTML5潜力初探”通过三章内容传授如何从头构建可运行在任何支持画布的设备上的HTML5移动游戏,展示了这样的一种基本事实,即在不必加入任何外部库的情况下,能够利用哪些资源来快速建立和运行游戏。

第Ⅱ部分:“移动HTML5”回退一步,详细讨论移动设备上的HTML5的情况,同时还讨论了两个库—— jQuery和Underscore.js—— 本书余下部分内容将用它们来构建游戏。

第Ⅲ部分:“JavaScript游戏开发基础”首先详细讲解如何检查和调试游戏,以及如何通过命令行使用Node.js运行JavaScript;接着讨论了从头构建可重用HTML5游戏引擎的过程,展示了把代码结构化和组织成一些连贯模块的做法。

第Ⅳ部分:“使用CSS3和SVG构建游戏”绕开画布,展示如何使用其他两种技术——CSS3和可伸缩矢量图(Scalable Vector Graphics,SVG)——在移动设备上构建游戏。第14章还介绍了很受欢迎的JavaScript物理引擎Box2D。

第Ⅴ部分:“HTML5画布”首先详细讨论canvas标签,继而构建一个触摸友好的2D平台游戏和一个针对该平台游戏的用来构建关卡的关卡编辑器。

第Ⅵ部分:“多人游戏”展示如何使用WebSocket创建能够在多个玩家之间以异步实时方式提供有意义的交互游戏。

第Ⅶ部分:“移动增强”探讨如何使用其他一些HTML5系列API来增强游戏,内容涵盖地理定位和设备方向,以及移动设备上的HTML5声音状态。

第Ⅷ部分:“游戏引擎和应用商店”研究一些可用的HTML5游戏引擎的前景——其中既有商用的也有开源的——并帮助你确定合适的引擎,这部分内容还涵盖了一些支持把硬件加速的HTML5游戏发布到本地移动应用商店中的新兴技术。

本书用到的软件产品和工具

本书例子运行在Windows、OSX或Linux的现代桌面浏览器中,术语“现代桌面浏览器”指的是Internet Explorer 9或以上版本,以及Safari、Firefox或Chrome的最新版本。

要在移动设备上运行例子,你需要运行iOS 5.0或更高版本的iOS设备,或是运行Android 4.0或更高版本的Android设备,这样能获得最佳效果。许多例子可在Android 2.2或更高版本上工作,但性能可能会有所限制。

若在Mac上运行,可借助可随同XCode一起安装的iOS模拟器来运行其中的一些例子。遗憾的是,目前的Android模拟器速度太慢,还不能作为很好运行HTML5游戏的测试床。

一些约定

为了帮助你最大限度地从书中汲取知识,以及进一步理解上下文信息,我们使用了一些贯穿全书的约定做法。

补充栏                                                          

以与此类似的方式放置一些与当前讨论有关的解说。

本书以两种不同风格显示代码:

● 使用没有突出处理的monofont字体类型来显示大部分的代码例子。

● 使用粗体来强调当前上下文中特别重要的代码。

源代码

在读者学习本书中的示例时,可以手动输入所有代码,也可以使用本书附带的源代码文件。本书使用的所有源代码都可以从本书合作站点http://www.wrox.com/或www.tupwk. com.cn/downpage上下载。登录到站点http://www.wrox.com/,使用Search工具或使用书名列表就可以找到本书。接着单击Download Code链接,就可以获得所有的源代码。既可以选择下载一个大的包含本书所有代码的ZIP文件,也可以只下载某个章节中的代码。

在下载代码后,只需用解压缩软件对其进行解压缩即可。另外,也可以进入http://www.wrox.com/dynamic/books/download.aspx上的Wrox代码下载主页,查看本书和其他Wrox图书的所有代码。记住,可以使用书中列出的程序清单的编号容易地找到所要寻找的代码,如“程序清单0-1”。

当为大多数可下载的源代码文件命名时,我们会使用这些清单中的数值。对于那些很少的没有用它自己的清单数值命名的程序清单,它们都与文件名匹配,所以很容易就可以在下载的源代码文件中找到它们。

勘误表

尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果你在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。

要在网站上找到本书的勘误表,可以登录http://www.wrox.com,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击Book Errata链接。在这个页面上可以查看Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是www.wrox.com/misc-pages/ booklist.shtml。

如果在Book Errata页面上没有看到你找出的错误,请进入www.worx.com/contact/ techsupport.shtml,填写表单,发电子邮件,我们就会检查你的信息,如果是正确的,就在本书的勘误表中粘贴一个消息,我们将在本书的后续版本中采用。

p2p.wrox.com

P2P邮件列表是为作者和读者之间的讨论而建立的。读者可以在p2p.wrox.com上加入P2P论坛。该论坛是一个基于Web的系统,用于传送与Wrox图书相关的信息和相关技术,与其他读者和技术用户交流。该论坛提供了订阅功能,当论坛上有新帖子时,会给你发送你选择的主题。Wrox作者、编辑和其他业界专家和读者都会在这个论坛上进行讨论。

在http://p2p.wrox.com上有许多不同的论坛,帮助读者阅读本书,在读者开发自己的应用程序时,也可以从这个论坛中获益。要加入这个论坛,必须执行下面的步骤:

(1) 进入p2p.wrox.com,单击Register链接。

(2) 阅读其内容,单击Agree按钮。

(3) 提供加入论坛所需的信息及愿意提供的可选信息,单击Submit按钮。

(4) 然后就可以收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程。

加入论坛后,就可以发送新信息,回应其他用户的帖子。可以随时在Web上阅读信息。如果希望某个论坛给自己发送新信息,可以在论坛列表中单击该论坛对应的Subscribe to this Forum图标。

对于如何使用Wrox P2P的更多信息,可阅读P2P FAQ,了解论坛软件的工作原理,以及许多针对P2P和Wrox图书的常见问题解答。要阅读FAQ,可以单击任意P2P页面上的FAQ链接。