Joel Webber谈向HTML5移植“愤怒的小鸟”

标签: joel webber html5 | 发表时间:2012-01-16 11:01 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

Joel Webber是Google Web Toolkit的创建者之一,他在GOTO Aarhus 2011大会上做了名为 ”HTML 5中愤怒的小鸟”的演讲,该演讲由InfoQ录制并发布。我们采访了Webber,想知道将“愤怒的小鸟”这款热门游戏移植到Google Chrome和HTML5上的更多细节。

InfoQ:关于将“愤怒的小鸟”移植到HTML5上,请您提供一些技术细节吧。

JW:在GOTO的演讲里面,涵盖了大多数广泛技术层面。简单说来,游戏是用Java写的,使用Google Web Toolkit转编译成了JavaScript。在移植过程中,我们开发了一个小程序库,叫PlayN,游戏开发者可以用其完全在Java环境中工作(相比在浏览器中调试,直接在JVM上调试要方便、强大得多)。经过转编译,PlayN程序库让同样的代码可以运行在Flash和Android上,尽管Rovio目前还没有使用这个功能。

InfoQ:您使用了哪些HTML5特性?

JW:要是说得迂腐一点,我用到了一些目前还不属于“HTML5”的规范,但常常被人们认为是其一部分。其中包括:WebGL、Canvas、CSS3(特别是仿射[affine]变换),LocalStorage、<audio>/WebAudio。在渲染上,有两种模式:WebGL和DOM。WebGL模式中,页面上只有一个大的<canvas>元素。在DOM模式中,我们对每个对象使用单独的DOM元素,这些对象包括鸟、猪、石块、背景元素等等。然后,我们使用CSS3变换来高效地给这些元素布局。之所以用这两种模式,是因为还有很多浏览器不支持WebGL,而且我们想保证所有可能的浏览器都能运行这个游戏,不仅仅是Chrome。

在音效方面,刚开始的时候,我们必须退而使用基于Flash的方法,因为一些浏览器对于<audio>标签的支持很差(包括Chrome)。后来这里修复了一下,Flash也就成为我们很少使用的倒退式方法。最终,我们相信WebAudio( https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html)才是游戏中应该使用的API。

InfoQ:移植这个游戏花了多少时间?

JM:很难给出精确答案。在Google,我们有三个人支持Rovio,但主要是用那20%的时间(有时还包括晚上和周末)。一个Rovio的工程师完成了移植的大部分主要工作。其他人后来辅助一些应用内支付工作,以及一些上线后的问题。

InfoQ:最困难的工作是哪些?

JW:游戏的逻辑很直接。我们已经有Box2D(Angry Birds和其他很多2D物理游戏使用的引擎)可以使用,用Java开发游戏让其更易于管理(某种程度上比较大的)代码库。不过还是有一些东西需要额外的工作:

  • 资源加载:不同于大多数本地应用,Web应用通常会按需加载资源,这样才能快速启动。一般来说这是好事,但是会让应用逻辑更复杂,因为我们希望需要的资源下载完成后,每个游戏场景马上就能显示出来。这还意味着你需要对资源的请求小心排序,这样就不会在还不需要的资源上耗费带宽。
  • 跨浏览器渲染:如前所述,没有什么“最好的”方式,能够在所有的浏览器中渲染游戏画面。抽象渲染逻辑,并实施两种完全不同的方法,需要大量精力和工作量。
  • 让游戏能够做到每秒60帧运行,这是一个很重要的目标。垃圾回收暂停让其变得很困难,尽管我们最后还是解决了这方面的问题。

在InfoQ提供的“HTML5中愤怒的小鸟”演示中,Web提到更多遇到的关于垃圾回收方面的难题,以及 PlayN程序库,还有该程序库在JVM上调试时起到的作用。

查看英文原文: Joel Webber on Porting Angry Birds to HTML5

译者 郑柯 InfoQ中文站总编。做过开发,当过PM,干过销售,搞过市场,最终还是回到媒体。实用的理想主义者,相信:每天改变一点点,这个世界会更好。

相关 [joel webber html5] 推荐:

Joel Webber谈向HTML5移植“愤怒的小鸟”

- - InfoQ cn
Joel Webber是Google Web Toolkit的创建者之一,他在GOTO Aarhus 2011大会上做了名为 ”HTML 5中愤怒的小鸟”的演讲,该演讲由InfoQ录制并发布. 我们采访了Webber,想知道将“愤怒的小鸟”这款热门游戏移植到Google Chrome和HTML5上的更多细节.

Joel Spolsky: 创业公司如何公平分配股权?

- 车东 - ShiningRay的Blog
编者按:本文来自Chance Jiang的投稿,翻译自onstartups.com问答社区的一个Joel Spolsky的回帖. Joel Spolsky是曾是MS Excel产品的核心开发,目前是纽约软件公司Fog Creek的老板. 他的博客Joel On Software是在业界流行了10多年的老博客,记录了Joel十几年行业经验,覆盖软件企业运作的点点滴滴,视为行业知识经典.

Paul Graham 与 Joel Spolsky 的10个不同点

- zou guangxian - 36氪
他的博客Joel On Software是在业界流行了10多年的老博客,记录了Joel十几年行业经验,覆盖软件企业运作的点点滴滴,视为行业知识经典. 这二人无疑都是想要在互联网创业的人们的楷模,今天让我们来看看他们二人的观念有哪些不同,哪些是更适合你的:. PG:找到可以支持3个月开销的种子资金,启动项目.

Joel Dos Reis Viegas罪恶之城风格暴力绘画

- Choope - 搜稀奇|So稀奇
超喜欢的《罪恶之城》据说有续集,可是一直都没有下文. 我们生活在一个阳光明媚的河蟹社会,处处被阳光杀的像无菌洁净手术室,看看CCAV的某雷打不动的xx联播就知道了. 也许在阳光下久了,总会对那些黑暗色彩产生一种迷恋,仿佛那才是真正的社会景象. 这是Joel Dos Reis Viegas跟《罪恶之城》风格类似的一种绘画作品,血腥暴力,还有那么一点儿大胆.

HTML5 logo 发布

- Greyby - 酷壳 - CoolShell.cn
2011年1月19日,W3C发布了HTML5的log,打开W3C的页面,下在的图片印入眼前. 我的第一感觉,就像是看到了小时候看的八一电影制片产的电影. 这分明是号召全世界的无产Web程序员们团结起来,不畏艰难,不怕牺牲,一定要把HTML5的革命事业进行到底. 所以,请各位Web程序员不但在你们的HTML5的网页上加上下面的徽章(关于各个徽章的含义,请参看这里).

html5 canvas入门

- - Marshal's Blog
可以把canvas看做div,不过,它的长和宽不能通过css来定义,要使用标签属性:. 或者javascript对象属性设置:. 使用canvas,只有一种操作方式,使用javascript. 获得canvas对象的上下文对象,该对象是操作canvas的主要对象:. 使用canvas画最简单的线, 点击运行示例,结果看起来是这样:.

HTML5新特性

- - CSDN博客推荐文章
 通过fillStyle和strokeStyle 属性可以轻松的设置矩形的填充和线条. 颜色值使用方法和CSS 一样:十六进制数、rgb()、rgba() 和 hsla. 通过 fillRect可以绘制带填充的矩形. 使用 strokeRect 可以绘制只有边框没有填充的矩形. 如果想清除部分 canvas可以使用clearRect.

【转载】HTML5 Messaging

- - HTML5研究小组
HTML5 的Message API能够让HTML5页面之间传递消息,甚至这些页面可以不在同一样域名下. 为了让消息能从一个页面发送到另一个页面,主动发送消息的页面必须拥有另一个页面的窗口引用. 然后发送 页面针对接受页调用 postMessage() 方法. postMessage() 方法中 origin 参数的值必须与页面所在的iframe的域名相匹配.

Adobe、标准和HTML5 -HTML5 and CSS3 开发

- - HTML5研究小组
“[提供商之间的]最激烈的竞争将与 标准密切相关. 大部分聪明人的眼睛将紧盯着技术标准. 但在计算机行业,新标准既可能是无限财富的源泉,也可能导致企业帝国的毁灭. 尽管存在着如此多的风险,标准仍然点燃了无限激情”. —The Economist, 1993年2月23日. 在编写这段有关标准化的话时,计算领域的主要争议是Unix是否是一个可行的操作系统(以及是否为IBM、DEC和HP的更多专用操作系统带来了挑战),以及哪个视窗平台(SUN/AT&T还是IBM/DEC/HP)将成为标准.