HTML5游戏:忘记愤怒的小鸟吧!我们需要牛逼的WebGL!
最近HTML5游戏小有爆发之势。网页游戏如浪潮般流行开来,开发者也已经开始把寻找一套上手的API和其他开发工具列入日程。Rob Hawkes热衷于高歌赞颂HTML5和HTML5网页游戏。Rob是一名图形程序员,也是Mozilla的技术文章作者和布道师,目前正在负责Mozilla在游戏方面的工作以及开发社区。下面是他在于墨尔本举行的“Web Directions Code”大会上的演讲的核心内容,其中向我们展示了HTML5游戏是如何正在迅速的成为现实。
你好,Rob。告诉我们一些你的开发背景吧。
我从事于web开发已经快13年了。一开始我学习了一点HTML和CSS,因为当时我对网页设计更感兴趣,但是后来我转到了PHP,我学习了如何在服务器端开发出强大的程序。曾经我只知道如何创建一个表单,但是现在,我知道如何读取其中的数据。
每个人都是从表单开始学习PHP的……
是的!能向外发送数据真是一件非常酷的事情。然后我做了几年前端开发。我对多媒体开始感兴趣了,然后投入了很大的精力到JavaScript中,直到那时我才明白,相比较而言,我原来并不是很喜欢制作网站,我其实更喜欢学习新的技术并把它推向极限。我对游戏开发一直充满兴趣,总是喜欢做一些疯狂的事情去学习游戏开发,所以当我在大学期间就已经做了很多HTML5的东西,尤其是用Canvas。
一开始的时候你一定也被Canvas给搞昏头了吧。
实际上,在我开始之前Canvas就已经在发展了。Apple用它开发了仪表盘中的小工具。它过去一直是仅限于WebKit的,或者说在其他的浏览器里并不稳定——至少之前的Canvas一点也不讨人喜欢。没人真的用它做很多东西。但我第一次接触Canvas的时候,我觉得它相当酷。我突然想到——从来没有什么书籍是专门来讲Canvas的,那我就有机会去做了!当时我是少数的几个深入挖掘Canvas的人。从那时开始,我开始投入到JavaScript API的实验中去。
我觉得自己既不是一个设计师也不是一个工程师,应该是介于其中的一个角色吧。我喜欢图形编程。而像游戏开发或者Canvas编程对我来说是非常完美的一件事情,因为可以把高端程序开发和图形前端捆绑到一起。这就是我在Mozilla所关注的焦点:web端游戏开发,也就是上面说的;以及我们正在为移动设备开发的操作系统Boot2Gecko。
如果我对HTML5游戏开发非常感兴趣,那我在开始自学时的第一件事是什么?我应该超哪个方向前进?
掌握JavaScript,以及和语言标准相关的东西。如果你已经适应了JavaScript,那么就开始看一些图形API的东西,比如Canvas API。Canvas是一个非常好的API。在我接触它之前,我甚至也不太理解怎么可能在浏览器里绘制一些东西但却不需要创建任何图片呢。另外可以看一下Audio API。HTML5中的多媒体功能非常有趣。
接下来看一下游戏引擎。因为或许你不想从零开始学习这些引擎,而现在有大量的游戏引擎都允许你在不用完全理解的情况下来创建和运行游戏应用。比如Crafty,可能是个澳大利亚的引擎,而且是完全免费的。然后还有一个相当不错的售价99美金的引擎叫Impact,这是一个相当不错的引擎,配备完美的支持文档。如果你想用JavaScript开发游戏,而又不过于偏执于底层实现,那么使用这些引擎都是不错的开始。如果你想要深入研究游戏开发的内核,那么可以学习一下,比如说,如何使用requestAniamtionFrame制作动画,这是一个在JavaScript中实现优化的循环的函数。当你把这个函数和Canvas API结合在一起的时候,就可以制作出在屏幕上移动的效果。然后到处理键盘输入,其中的难度跨越并不大。要学习什么完全取决于你要做什么。
那么看来开发者必须要相当好的理解JavaScript的基础知识了?
是的!我想说,现在有很多JQuery型的游戏库,像Crafty和Impact这样的引擎就有点类似。但是他们并不是完全像JQuery那么抽象。如果你想要做更复杂一些的东西,你依然需要写JavaScript。但是如果你只是想做一些简单的动画,比如载入一张图片然后让它旋转,这样的东西你完全可以用Crafty来做。问题在于这样你完全不知道在场景背后发生了什么事情,是怎样的运作原理。在web之外,如果你想做一个游戏你可以使用Flash或Unity,为什么呢?很简单,就是因为他们抽象出了一个可以实现复杂动画效果和物理效果的方法。
对我来说,精通JavaScript可以让我从零开始制作一款游戏。是的,也许会很艰难,也许会很费时间,但是从长远来看是非常值得的。如果你能至少理解一些基础知识,比如for循环、数组、对象……这些知识,那么当你想要把产品推向更高的层次的时候,你会非常感谢它们的。
HTML5目前看来好像带来了一场复古游戏的大爆炸——战略游戏、平台游戏还有像Pong这种老游戏的复刻版。你认为HTML5还会向哪些方向发展?更复杂、交互性更强的方向?
其实怀旧这件事是相当酷的。HTML5游戏目前正处于一个相当单纯的阶段,而复古游戏在这一时期对于HTML5来说是非常完美的。它们不需要开发技术有太多的能力,而且主要都是2D游戏,并且开发起来非常轻松。这和Flash游戏在刚刚诞生之初是一样的。没有什么可以阻挡开发者使用JavaScript去开发更有沉浸感的游戏体验。现在我们正在从WebGL开始。很多人都开始利用硬件加速这一特性,开发接近于iOS原生应用体验的游戏——甚至是3D游戏。
Pong是一个伟大的游戏,但是并不能推动技术发展;甚至来说,愤怒的小鸟也没有推动技术向前发展。我见过有人使用WebGL开发了Quake 4的demo,并且运行起来非常流畅。我们需要看到更多类似于这种游戏,来帮助web顺理成章的成为现代游戏的平台。我们现在有这样一项技术,有这样的能力去开发合适的游戏。在这里,“合适的游戏”我指的是那些通常你在PC上看到的游戏。
我们现在已经可以看到一些公司和开发者正在朝这个方向努力。我们需要开发一些适用于web的游戏。现在我们只是看到一系列的复刻版的互动游戏,但是却看不到有什么游戏是专门为web来量身打造的。我想要看到能够很好地利用web的强项、而同时又不超越设备硬件机能极限的游戏。因为你可以在两个平台上开发同一款游戏,但是这并不意味着这两个游戏会完全一模一样。我相信web凭借着它自己独有的优势是有机会成为一个游戏平台的——一个独立的平台,而不是像现在这样仅仅是简单的直接复刻游戏的平台。一旦开发者意识到了这一点,那么我们会看到非常有趣的事情发生。
而在当下,web上的游戏只是简单的复制其他平台上的游戏,web版的游戏没有任何变化,它们没有利用到web所能提供的任何独有的优点和强项,比如社交功能、或者连接其他API。而这些东西都是web与生俱来所拥有的禀赋,我们把它们用到了网站上,那我们为什么不能把它们用到游戏中呢?
许多网页游戏的开发者都趋于去挖掘历史,当然这不一定是件坏事,但是你觉得有更具扩展性的概念和想法吗?
这正是我的梦想。在当下,我认为对于把HTML和web当做一个游戏平台来看是一件不公平的事。我们会拿它和之前的平台对比,比如说,我们会把iOS游戏移植到web上,比如愤怒的小鸟现在就有HTML5制作的网页版;但是它从来不是专门为web而量身打造的。这样一来,肯定是本地应用会更好一些,因为其中内置了触摸操作、使用了特定的编程语言和技术。我们从未允许过让web能够凭借自己的优势而繁荣兴旺,我们总是用我们之前做的事情来限制它。我们可以解脱施加在web上的束缚,让它释放自己的能量,去尝试一些不拘泥于我们通常玩的那些游戏的东西——比如说,我们现在看到的web游戏都是放在网站的一个方框区域里的。为什么web游戏必须要作为一个方框区域摆在网站中呢?它也可以成为web的一部分,玩家可以在网站之间玩游戏,没有理由说为什么不能在Twitter上玩游戏。
我希望看到人们能够开始喜欢web游戏这个概念,并出现一场新游戏的大爆发。JavaScript API因web而生。它是一项非常基础的技术;建立socket连接、一些事件、实时发送和接受信息到web服务器——这对于开发多人在线游戏来说并不是一个巨大的鸿沟。
你觉得你的这些想法会有市场前景吗?
这正是目前我们在Mozilla所做的事情。有一个我们从大众程序员中得到的最常见的问题就是——“听起来不错,但是如果我不想免费提供我的游戏该怎么办?”人们已经习惯于DRM(内容数字版权加密保护技术)和代码保护,当人们来到web上之后,发现这是一个完全开放的世界,所有的源代码都历历在目。我们应该从两个方面来讨论这个问题。首先,我们要如何去说服人们开放技术是一个好主意。我想这个问题很好解决,因为如果你非常担心你的游戏被偷走,那么我觉得web并不适合你。不是说你用HTML做游戏那么web就一定是你的游戏的最佳平台。另外,也有很多方法可以避免这些事情的发生,比如压缩代码(混淆)可以让开发者在发布他们花费了很长时间撰写的代码之后感到稍许安心一些。
第二个方面在于市场营销,也就是你如何销售你的游戏?如果你不能以此糊口,那么游戏开发的意义也就荡然无存,至少作为一家企业是这样的。如果你觉得你对于玩家如果不付钱就不能玩你的游戏不是非常在意,那么你可以采取捐赠模式。相反,如果你坚决要把不付钱的玩家拦在游戏之外,那么这也可以实现。我们目前正在Mozilla开发这样一个开放的Web App API,它允许你提供一个支付收据与游戏服务器做对比。我们的确正在寻找一条途径去拥抱代码的开放性,同时也并不阻止人们查看源代码;但尽管如此,你仍然可以对玩家说“你为这游戏付款了吗?”“如果没有,那么你将不能获得完整的游戏体验”。
但这不是一个能治百病的灵丹妙药。如果对于一个单机游戏,如果玩家付费之后,就阻止不了人们获取到完整的源代码,然后对源代码实施一些小伎俩。我高度质疑web游戏会比其他平台的游戏被盗版的更严重。比起获取源代码来说,盗版现象更加严重。如果你的游戏有服务器端,那么就能得到很好的保护,而且还可以加入支付收据系统。如果你清楚的知道除非通过了服务器验证否则没有人可以进入游戏,那么你就可以很好的来掌控这方面的玩家体验。即使有人偷走了前端代码,他们依然不能进行游戏,因为他们还没有服务器端代码。当然,如果他们侵入了你的服务器,那完全就是另外一个话题了。
我认为靠web游戏来挣钱是绝对没有问题的——问题在于目前我们还没有一个响当当的成功范例。这是一个先有蛋还是先有鸡的悖论——人们都在等待着第一个吃螃蟹的成功范例,而因为人们都在等待所以这个成功范例永远不会出现。我们需要有人站出来,先走一步。
因为是web,所以你不必像之前那样来销售游戏。你或许可以通过游戏内支付来获取收益,所以你依然可以提供免费游戏体验,然后通过控制游戏道具来盈利——比如到了哪个关卡,玩家就可以获得怎样的装备或属性提升。当完全明白哪些是可行的之后,我们就会以此来获得盈利。特别是现在那些上市的大公司,比如EA——如果说谁知道怎么用游戏挣钱的话,那就是这群人!然后独立游戏开发者可以跟随大公司的脚步。在iOS上这不是一件容易的事,但是也有人已经开始试水了。Web提供了新的出路。许多报纸媒体都开始寻找新的付费门槛……(译者注:此处是指多家报纸媒体开始使用HTML5向iOS用户提供内容,从而绕过苹果App Store。)
有没有什么事情是不需要做的?
有的,那就是是否应该采取内容保护?它是否并不与web背道而驰?是否有其他更好的方法既可以成功地商业化又可以适应web环境?也许答案是“没有”。与其考虑“我如何让玩家不付钱就无法进入游戏?”,不如想想“我如何利用web的优势在游戏之外获得盈利?”也许可以不从玩家那里收费,而从赞助商那里获得收入。我对于从现在开始的一年时间非常感兴趣,我们也许会看到一批成功的游戏范例获得巨大的商业收入。
原文地址: http://www.sitepoint.com/html5-gaming-forget-angry-birds-we-want-webgl-awesomeness/
作者:Tom Museth
由HiWebGL翻译整理,转载请注明出处!