Facebook版《愤怒的小鸟》为何选用Flash

译文
新闻 前端
你是不是想知道为Facebook开发《愤怒的小鸟》的首席Flash程序员究竟是何方神圣?不妨会一会来自《愤怒的小鸟》游戏开发商芬兰Rovio公司的Ville Koskela。他在这篇独家采访中披露了Rovio的开发团队幕后采用的一些开发技巧。

 【51CTO外电头条】你是不是想知道为Facebook开发《愤怒的小鸟》的首席Flash程序员究竟是何方神圣?不妨会一会来自《愤怒的小鸟》游戏开发商芬兰Rovio公司的Ville Koskela。他在这篇独家采访中披露了Rovio的开发团队幕后采用的一些开发技巧。

问:Ville,你好!看到Facebook版《愤怒的小鸟》拥有种种新颖而出色的社交功能,真是让人惊叹。

Ville:确实如此!过去的几周忙得不可开交,因为对于像《愤怒的小鸟》这样广受欢迎的品牌,我们确实不得不确保第一个版本极其稳定。

问:这款游戏使用了Flash Player 11中新的Stage3D应用编程接口(API),之前你为这款游戏使用的是哪种2D框架?

Ville:我们现在使用Starling框架,它既提供了界面等Flash显示对象,又提供了相当好的性能。

问:你是Starling直接就拿来使用吗?还是说针对具体的使用场合,对某些方面进行了调整?

Ville::我们一开始使用的初始版Starling的性能不如我们想象的那么好,但是由于它是采用简化的BSD许可证来发行的,所有源文件都随时可供使用,因而我们得以在诸多方面对它进行了优化。我一直在自己的博客中撰写这些优化方面的文章;现在大多数优化包含在最新版的Starling中。Daniel也添加了另外几处调整。

问:软件渲染方面又怎么样?能不能透露几招,以便开发人员可以充分发挥软件渲染的功能?

Ville:从我们的游戏收集而来的性能数据表明,就软件渲染而言,最大帧速率预计只有硬件渲染的三分之一。这意味着,如果你的游戏要求很高的帧速率,那么使用软件渲染时,可能会丢失一些图形细部。就Facebook版本的《愤怒的小鸟》而言,我们现在丢弃了最后面的背景层,还调整了渲染质量,如果游戏使用软件渲染来运行的话。

问:你是否为每一个元素使用不同的图像,或者精灵图(sprite sheet)?为什么?

Ville::我们使用自己实施的精灵图,我们在同一张图上合并尽可能多的精灵:2048×2048像素纹理大小方面的限制允许可以使用多少个精灵,我们就使用多少个精灵。这加快了Stage3D渲染速度,因为之后,共享同一基本纹理的Starling精灵就可以成批渲染。

[[61777]]

Ari(Rovio高级Flash程序员)和我在Rovio公司总部

问:你是否把DisplayList元素覆盖到Stage3D上,还是说整个游戏就用Stage3D?如果这样,你覆盖什么?

Ville:只有游戏界本身才使用Stage3D图形。我们决定使用传统的Flash显示对象来开发用户界面的所有元素,因为使用我们的图形设计师们熟悉的Flash集成开发环境(IDE),就很容易为它们赋予动画效果。Flash 11也能很好地处理显示对象覆盖,它们其实并不影响帧速率。

问:你如何处理设备丢失(借助Stage3D来处理)?这是否意味着,如果有人玩游戏时去吃午饭,PC就会锁住屏幕?

Ville:我们为这个事件实施了自己的处理程序,因为Starling本身在默认情况下并不支持。渲染设备丢失后,Context3D的driverInfo字符串就会变成“Disposed”(释放),那样针对每次帧更新,我们就能进行这方面的检查。要是设备丢失了,我们可以立即从渲染返回。当Flash能够创建新的渲染上下文时,就会发送 Event.CONTEXT3D_CREATE事件。我们只要侦听这个事件,然后下一次渲染调用时,对所有当前的纹理及其顶点和索引缓冲器进行重新初始化。幸好,即将发布的Starling版本也可以处理设备丢失问题,那样开发人员再也不需要自行实施这种检查机制了。

问:你能不能对我们讲讲你与Starling结合使用的粒子引擎?

Ville:我们使用的是经过调优的Starling粒子引擎扩展。眼下,它用于“Suft and Turf”这一集中的海浪动画。粒子引擎本身结合了操作脚本代码和基于图形处理器(GPU)的Stage3D渲染。

问:你使用哪种物理引擎?你使用默认的设置还是某些特别的设置?

Ville:与其他所有版本的《愤怒的小鸟》一样,Facebook版《愤怒的小鸟》同样使用Box2D,只是某些方面作了细微调整。

问:你是否用某种代码混淆软件为最终的SWF文件确保安全?

Ville:是的,的确如此。

问:你在开发这款游戏时,是不是要考虑到Facebook的某些独特方面?

Ville:首先,就Flash 11和Stage3D而言,你必须使用窗口模式(wmode)为“direct”,这意味着在一些浏览器上,HTML覆盖会在Flash内容下面可以得到渲染。为了处理这个问题,Facebook提供了javascript API,我们把Flash内容换成了在网页上屏幕截取。我们还想让初始游戏下载的速度尽可能快,以确保用户不至于还没有运行游戏、就关闭了游戏。为此,只有在需要时,我们才为关卡实时下载额外的游戏资产。

问:你总体上觉得Facebook版《愤怒的小鸟》如何?有没有计划为游戏增添新的功能特性?

Ville:我认为,这个项目取得了很大的成功,我们从Adobe和Facebook都得到了大力支持,这给我们的这个项目帮了大忙。在最终用户看来,连初始版都没有太多的软件缺陷(bug);就算那些软件缺陷现在大部分也得到了修复。说到将来,其他的我确实讲不出太多,只能每周至少一两次回过头来关注游戏,看看有没有新的功能。

原文:http://www.flashrealtime.com/interview-angry-birds-rovio-ville-koskela/

【编辑推荐】

  1. HTML 5游戏终现曙光 Facebook推社交游戏动态信息流
  2. 10个超炫的、激发灵感的HTML 5游戏
  3. 如何在ASP.NET网站中使用HTML 5拖放功能
  4. 阐述2012年HTML 5游戏的发展机遇和盈利方式
  5. 8个非常有用的HTML 5工具你值得拥有
责任编辑:陈贻新 来源: 51CTO
相关推荐

2012-03-21 14:27:12

技术周刊

2011-09-06 14:26:26

2012-08-29 09:50:05

愤怒的小鸟免费

2012-12-11 15:33:52

2012-03-26 21:31:24

愤怒的小鸟

2011-05-12 09:04:32

愤怒的小鸟RovioChrome

2012-04-11 17:02:46

愤怒的小鸟

2012-03-22 21:00:58

愤怒的小鸟

2012-03-27 10:36:29

诺基亚WP愤怒的小鸟

2013-12-12 11:22:22

愤怒的小鸟GoiOS游戏

2011-05-16 13:46:56

Angry Monst愤怒的小鸟父子开发组合

2011-09-26 16:25:53

HTML 5

2011-05-04 10:53:46

打印机技巧

2012-03-23 10:10:10

智汇云客户端

2012-12-10 14:36:57

手机移动通信网络

2012-03-26 21:27:48

愤怒的小鸟

2012-03-12 16:14:51

愤怒的小鸟太空版

2012-02-29 09:42:25

2011-05-23 08:59:36

愤怒的小鸟Rovio

2012-03-09 17:26:07

愤怒的小鸟愤怒的小鸟太空版
点赞
收藏

51CTO技术栈公众号