HTML5中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

HTML5中国 首页 应用推荐 HTML5游戏 查看内容

创造一款成功HTML5游戏的完整指南

2013-6-19 13:58| 发布者: html5cn| 查看: 33062| 评论: 1|原作者: David Rousset|来自: 游戏邦

摘要: 为什么现在有这么多人对创造HTML5游戏感兴趣呢?因为今天的我们已经可以基于HTML5使用相同的代码而瞄准多种平台了:台式机(基于IE9/IE10,Firefox,Chrome。Opera&Safari),iOS和Android平板电脑与手机,Windows 8及 ...

  

  现在,我会花大量时间向学生,业余爱好者,专业开发者以及老师解释如何使用HTML5创造。而最近我也一直纠结着是否应该将这些观点与所有人分享。


  为什么现在有这么多人对创造HTML5游戏感兴趣呢?因为今天的我们已经可以基于HTML5使用相同的代码而瞄准多种平台了:台式机(基于IE9/IE10,Firefox,Chrome。Opera&Safari),iOS和Android平板电脑与手机,Windows 8及其未来相关联的无数平板电脑与PC都欢迎HTML5游戏!我们也经常能够看到一些不费吹灰之力便移植到这些平台上的HTML5游戏项目。


  除此之外,现代的JavaScripy引擎性能以及GPU硬件加速图像层都让我们能够更有信心地创造HTML5游戏。


  Canvas和SVG:在屏幕上绘制的2种方法:

  

  canvas vs SVG(from webappers)


  你必须在创造第一款HTML5游戏前先理解如何在屏幕上绘制好看的对象。这里主要存在2种方法,而为了找出它们的区别,你可以先阅读Patrick Dengler(SVG W3C Working Group的成员)的文章《Thoughts on when to use Canvas and SVG》。


  我也在去年重新利用了Patrick的材料为微软的同事组织了一次45分钟的内部会话。

  

  overview(from webappers)

  这是当时的幻灯片。

  最后,你还可以下载我在视频Mix11SVGCanvas.zip中所证实过的源代码。

  你也可以参考来自MIX11的2次出色的会话:

  如何创造现代化的网站:SVG Meets HTML5


  深入研究HTML5

  当你研究了所有的这些内容后,你便能理解为何大多数HTML5游戏是使用Canvas而非SVG。Canvas为游戏开发者提供了一种清楚明白的开发模式(较低水平的绘图API),并且近来也获得大多数浏览器的硬件加速支持。而SVG及其向量式技术仍坚持着在不损失质量的前提下在不同设备间伸缩着。你只需要使用SVG的ViewBox属性便可,之后你的游戏资产便能够轻松地在3至80规格的屏幕上变化着了。


  有时候,我们能够使用这两种技术而创造出同样的游戏。例如这里便有一款先使用SVG后使用Canvas的简单游戏:SVG版本的壁球游戏与Canvas的壁球游戏。它们都是源于MSDN文件编制:使用Canvas或SVG编程简单游戏。


  在这个例子中,分析每种技术的性能将帮助你决定使用哪种技术去创造游戏。举个例子来说,这里有2个有趣的实验将分别使用SVG和Canvas在你的屏幕上呈现出1000个小球。在这一特殊的例子中,Canvas的性能更能有效地在屏幕上绘制许多对象。而这也是我们想在电子游戏中实现的目标。为了更加清楚地看到性能比较,我们可以着眼于以下图表:

  

  performance comparison(from webappers)

  但是却没有人能够阻止你去混合这两种技术。我们可以想象基于SVG而使用第一层去呈现游戏菜单,并基于canvas而使用第二层去呈现游戏本身的内容。随后你将使用所谓的浏览器合成引擎。不过你也必须关注于最终性能结果,因为在这一领域浏览器和设备是不相等的。并且不要忘记HTML5的主要优势便是瞄准所有平台。


  我的同事David Catuhe在几个月前注意到一款小小的摧毁砖块游戏便使用了这种合成原理。第一层使用SVG去打破砖块,然后使用canvas标签让背景呈现出隧道效果。你可以完美地模仿这一理念在背景中呈现游戏(如平台游戏或者射击游戏)而不是隧道中,而你的第一层也可以基于SVG而简单地呈现出菜单和配置选择。


  有用的程序库和工具

  图像

  手动编写SVG的XML节点或使用Canvas较低水平的API总是非常有趣,但却并不高产。以下我将列出一些能够帮助你创造HTML5游戏部分内容的工具和程序库。

  为了生成一些SVG,以下是一些很棒的工具:

  InkScape:免费的开放源桌面软件

  SVG编辑器:这是能够直接在你的浏览器上运行的在线软件

  Adobe Illustrator也支持将SVG当成一个输出目标,但这较为昂贵。


  如果你正在寻找游戏资产(面向菜单或控制),你便可以考虑这种免费的图标库:The Noun Project。如果你不幸未能得到设计师的帮助,这一工具便能拯救你。还有另一种带有一些免费SVG内容的程序库:Open Clip Art Library。


  最后你需要掌握的一种程序库便是RaphaelJS。这是一种JavaScript程序库,将帮助你通过几行代码而生成动态SVG。你将在网站上发现许多使用基于SVG元素的非线性动画功能以及动画图标的出色演示版本。但是如果你的目标是绘制图表的话,那么你最后需要掌握的便是HighCharts。这2种程序库都非常出色,它们甚至能够面向IE8或者更早的版本执行VML反馈。但是如果你正在创造HTML5游戏的话,这便不是你需要担心的问题。因为你需要瞄准的是IE9以上的版本。

  

  charts(from webappers)

  如果你想要使用Canvas去呈现图表的话,我便会推荐JavaScript InfoVis Toolkit程序库。

  

  charts(from webappers)

  让我们继续关于图像的内容。还有一种能够在JavaScript中简化3D使用的著名程序库—-ThreeJS。大多数情况下,它是用于渲染硬件—-通过WebGL去加速3D。我们曾使用这一程序库在IE Test Drive上创造过游戏的演示版本。使用“CanvasRenderer”后,你便可以在所有HTML5浏览器中创造3D场景。


  注:我们也可以使用CSS3 2D和3D的转换以及游戏的转场效果或动画去结合所有的这些图像效果。但是我已经决定在本篇文章中专注于阐述Canvas和SVG。


  物理引擎

  当然了,呈现图像并不是你在创造游戏中的唯一任务。你还需要通过编写AI代码而赋予角色生命。不幸的是你需要独自进行编写并发挥创造性。但也有开心的事,即你不需要担心游戏的物理和碰撞部分。你只需要学习如何使用Box2D JS便可。在接触了各种例子后你将会非常惊讶:


  

  amazed(from webappers)

  如果你对这个话题感兴趣的话,你便可以阅读Seth Ladd出色的教程系列:《面向JavaScript开发者的Box2D介绍》。Seth甚至使用了Web Workers去估算CPU的物理元素。如果你不知道Web Workers是什么的话,我写了一篇有关这些新API的介绍:《Introduction to the HTML5 Web Workers: the JavaScript multithreading approach》。希望这对你的游戏脚本设定有帮助。


  处理多点碰触事件


  如果你想要创造一款跨越多种设备的游戏,你就必须支持触屏。现在的碰触事件共有2种规格。所以并不存在官方的标准。如果你想要进一步了解具体原因,你可以阅读《Getting Touchy About Patents》这篇文章。


  你需要编写适用于IE10以及Windows 8的代码,并能够在苹果设备上有效执行。对此你可以着眼于这一样本,即列举一个能够同时支持两种碰触事件(手指绘画以及所有浏览器中的鼠标输入)的模式。但是如果你现在想要检查是否可以在IE10中处理多点碰触,你便可以测试这一演示版本:Browser Surface。你需要找到一个最新的IE10版本以及多点碰触硬件去运行它。


  Boris Smus开始致力于名为Pointer.js的程序库。该理念是关于整合所有碰触类型(IE10,iOS,纸和笔等等)去简化开发者的生活。你可以阅读他所写的相关文章《Generalized input on the cross-device web》。现在,该程序库仍只是个草稿,还不能支持IE10的MSPointer*。


  创造连贯的游戏

  如果你希望能够支持更广泛的用户,你便需要考虑创造一个能让那些不支持WebSockets或只支持早前版本的浏览器或设备可以依靠的东西。我们甚至幻想着解决方法能够自动放下早前的汇聚方法并为Web Sockets提供更多最新的浏览器,如IE10。是否存在一个独特的代码能够处理这种情况?


  让我们停止幻想,社区将去处理这一情况。而我则知道2种解决方法:

  • 面向Node.js的Socket.IO程序库
  • 基于IIS和ASP.NET的SignalR

  这两种程序库都将使用各种支持水平去处理所有浏览器和设备。


  有些游戏框架

  为了创造一款2D HTML5游戏,你需要牢记一些内容:

  1.处理你的精灵:将其分割成一个系列,让它生动化,并创造效果等等。2.处理你的声音和音乐(这在HTML5中并不简单!)3.分不同时间通过专用载入程序/资产管理器从网页服务器上加载资产。4.创造一个碰撞引擎,为游戏对象创造一个高水平的逻辑等等。


  你可以从头开始创造或者测试并回顾其他开发者所创造的内容。我会建议你使用第二种方法,因为JS游戏框架开始变得更加成熟,并且能够在游戏制作过程中进行测试。

  网上有许多JS游戏框架,以下是创造HTML5 2D游戏最为出名的一些框架:

   MelonJS  :一个带有许多有用服务的免费框架。它的最大优势便是能够与Tiled Map Editor工具同时使用。

   CraftyJS :很不幸,我并不是很了解这一框架。

   ImpactJS :这是一个具有很高质量和知名度的框架。虽然它不是免费的,但是价格也不贵。

   EaselJS :我最喜欢的一个!是由早前一名flash开发者所编写的。如果你曾经在Flash上编写过一些游戏,你便会对它一见如故。这是源自CreateJS组合。它非常完整,配备齐全,更关键的是它是免费的。

  显然EaselJS是我最熟悉的一个框架,所以我的看法并不是绝对客观。做出怎样的选择最终还是取决于你自己。

  一些初学者教程

  首先我想分享自己的教程。1年前,多亏了EaselJS,我将一款XNA C#游戏移植到HTML5/JavaScript。后来我决定编写3个教程去分享自己的那次经验:


  • HTML5游戏:在Canvas中使用EaselJS去创造精灵动画
  • HTML5游戏:使用EaselJS创造核心对象并处理碰撞
  • HTML5平台游戏:使用EaselJS将XNA游戏完全移植到canvas

  几个月后我又写了3篇有关加强/扩展同一款游戏的文章:

  盈利你的HTML5 Canvas游戏之第一部分:硬件比例和CSS3(你将在哪里使用CSS3 3D)

  通过转换,转场以及网格格局去加强游戏体验

  盈利你的HTML5 Canvas游戏之第二部分:脱机API,拖放和文件API(游戏邦注:你将能够在脱机模式下玩游戏)。你将能够创造自己的关卡并直接将它们拖放到游戏中。

  在遵循这些教程后,你将创造出这样的游戏:

  


  game(from webappers)

  多亏这6个教程,你将能够基于任何浏览器或设备而编写自己的HTML5游戏。

  你能在EaselJS网页(http://www.createjs.com/#!/EaselJS )以及上述所提到的框架网站上找到许多简单的样本和优秀的教程。

  HTML5游戏开发教程

  10款出色的HTML5游戏以及你该如何创造属于自己的出色HTML5游戏。

  最后,我还想推荐两篇具有启发性的文章。第一篇便是来自微软的David Catuhe所写的《Unleash the power of HTML 5 Canvas for gaming》。他分享了自己在创造演示版本时所发现的一些优化内容。他所提出的一些窍门能够帮助你更好地创造自己的HTML5游戏。第二篇则是谷歌的Boris Smus所写的《Improving HTML5 Canvas Performance》,其中也包含了许多有益的建议。


  一些有趣的在线游戏和体验的反馈

  不管你喜欢怎样的游戏,如果能够分析开发者是如何创造这样的游戏将会对你自身非常有帮助。多亏了网络,现在我们只需要右击便能够“查看源代码”了。即使你所获得的代码已经被压缩了,你仍能够通过了解游戏的整体结构而获益。


  让我们分析使用EaselJS框架所创造的一些内容。首先便是Grant Skinner所编写的《Pirates Love Daisies》:

  

  pirates love daisies(from webappers)

  Grant是在创造HTML5游戏时开始使用EaselJS框架。


  Windows 8注释:你会在Windows Store中找到面向Windwos 8的《Pirates Love Daisies》。的确,如果你拥有一款有效运行于IE9或IE10的HTML5游戏,那么创造它的Windows 8版本便像复制粘帖那般简单!但是如果你想要创造一款真正优秀的Windows 8游戏,你需要更加重视我们正在创造的独特Windwos 8体验。


  另外一款使用EaselJS的游戏便是《BKOM ROBOT GAME》,它还使用了我所喜欢的3D精灵:

  

  bkom robot game(from webappers)

  而现在最受欢迎的两款HTML5游戏无疑便是《愤怒的小鸟》和《割绳子》。

  


  angry birds(from webappers)

  你也能在Windows Store中找到《割绳子》的Windows 8版本。

  

  cut the rope(from webappers)


  你可以很轻松地将HTML5游戏移植到Windows 8。以下便是移植过程:

  1.复制/粘帖网页版本到HTML5 Metro Style App面向Windows 8的项目。2.添加支持触屏。3.添加支持贴边视图和暂停游戏功能。4.创造一些高分辨率的资产(1366×768和1920×1080)为之后的Windows 8平板电脑和PC穿增高更棒的体验。


  我也很喜欢有关《割绳子》的故事。这是一款面向苹果iOS设备且基于Objective-C而编写的成功游戏。它已经成功移植到HTML5/Canvas,开发商也在《Cut The Rope – Behind the scenes》这篇文章中做出了详细描写。我从《Wooga’s HTML5 Adventure》中也受益匪浅。


  我希望本篇文章所列出的所有资源都能够帮助你更好地创造自己的HTML5游戏。


更多
10

鲜花
1

握手

雷人
3

路过

鸡蛋

刚表态过的朋友 (14 人)

相关阅读

发表评论

最新评论

引用 codefarmers 2013-10-25 15:59
mark

查看全部评论(1)

HTML5中国微信

小黑屋|关于我们|HTML5论坛|友情链接|手机版|HTML5中国 ( 京ICP备11006447号 京公网安备:11010802018489号  

GMT+8, 2017-1-19 21:01

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

返回顶部