Flash、HTML和Unity开发网页游戏的现实比较

 2011-11-21 这一天对于全球的flash开发者来说是一个黑暗的日子,因为Adobe宣布它将停止对移动浏览器上flash的支持。在此之前一天,Adobe刚刚宣布大规模裁员,这看起来似乎不是什么大事。但是,它已经使整个“闪黑之车”再次开动了,所以我觉得是时候在这个博客上说说我的想法了。
现在来关注网页游戏的开发,这篇文章的主题仅限于此。这不是一篇《flash VS Html5》的文章。也不是一篇讨论开发移动端本地应用的文章,这是彻头彻尾的网页游戏开发现实。

以下十个主题比较flash、HTML5和Unity,因为它们是我们现在开发网页游戏唯三的选择。
1、工作流——创造一个网页游戏的容易度
2、平台稳定性——你开发游戏的始末会产生哪些变化
3、向后兼容——你的游戏十年后还能继续运行吗?
4、移动领域——你的游戏究竟能不能运行
5、发布——做一个没人玩的东西没啥意思
6、安全性——代码和知识产权保护
7、盈利能力——做游戏能不能赚到钱
8、facebook——社交游戏之角
9、多少人会玩你的游戏
10、3D 支持 – Stage3D vs. WebGL vs. Unity
所有这些,都是我认为一个游戏开发者在选择游戏平台时需要考虑的问题。我觉得这不管对新手还是老鸟都是有意义的。

文章很长,关键是我将尽我所能的阐述事实和统计,而不是哗众取宠。所以,你会做出明智的判断。
技术拆解
1、工作流
flash:
用flash做游戏very easy,书、网站、教程、游戏框架、类库、视频和示例代码不计其数。如果你选择使用flex,开发工具是免费的;使用flash IDE则需要付费,flash有通用并且功能强大的矢量渲染能力,因此你可以制作很小的动画。它全面支持音频和大部分adobe应用程序。比如AI,photoshop都与flash IDE实现了很好的整合。经过多年的发展,拥有种类繁多的内置功能。
HTML5:
象JetBrains Astella这样的编辑器可以减少编码的痛苦。有一些很好的debug工具可以让你通过浏览器进行调试。有很多HTML5游戏开发的书籍、网站、在线资源和一堆示例代码。开发HTML5游戏的工具是免费的,但也有一些商业开发工具——比如GameMakerHTML5和Game Salad,还有游戏特效库——ImpactJS,如果你想更快捷的开发,你可以使用他们,而不用顾忌引擎之下的运行机制。
Unity:
Unity有一个优秀的可视化编辑器,并支持主流的3D应用程序。针对个人用户的基础版是免费的,如果公司用户使用的话,你需要每年付费少于100美刀,专业版附加了各类组件,最低价格为1500美刀。一旦你的软件有了大量的资源和书籍,学习起来并不是什么问题。

2、平台稳定性:
flash:运行flash游戏的flash虚拟机是跨平台跨浏览器的。它在过时的IE浏览器版本和最新的Chrome上运行起来都没有问题,flash player能够提供相同的用户体验。Adobe通常每年会通过几次更新来发布一个新的flash版本。
HTML5:
平台飘忽不定且不断变化。这可能产生两个副作用:1、你的游戏可能忽然间无法运行了,而你其实啥也没干,只是浏览器升级到了新的版本。2、你不能只考虑一个平台,老鼻子多呢。让你的游戏在Chrome上能跑起来只是一个开始,你还需要考虑IE、FF、safari,发布跨平台的版本。这所涉及的维护工作不容低估。不同的音频支持和canvas渲染速度也是最大的挑战。
Unity:
Unity的网络播放器提供了和flash一样的好处。平台插件的方式提供了安全保障,你能确保游戏能跑起来,不会因为浏览器的更新而挂掉。Unity本身也在不断发展,定期的发布新的功能。

3、向后兼容:
flash:
AS1时代制作的游戏至今能再flash11上跑得很好,这已经过去十年了。Flash的向后兼容是做得最好的。
HTML5
在向后兼容性的比较上这有点不公平,因为技术正在不断的发展。有价值的东西可能很快贬值,就是因为他们不支持W3C标准。
Unity:
Unity游戏不能很好的兼容之前的主要版本,起初我以为这是为了更好地向后兼容flash,但现在看起来似乎不是这样。

4、移动领域
flash
直到今天,我都会说,撇开iOS不谈,flash对移动浏览器的支持是很棒的。但adobe已经宣布停止了针对手机和平板电脑的flash插件的继续开发,这宣布了它的完全死亡。你可以通过air创建本地应用,但它已经不是网页游戏了,这超出了本文的探讨范围。Stage3d在移动领域目前还不顶用,因为还没有那么多的硬件支持,还有老掉牙的flash虚拟机。这对flash开发者来说是一场艰苦的战斗。此外,adobe已将Oliver Goldman从air项目调入了云项目,他在AIR项目中是绝对的关键人物,创始元老。如果你有兴趣,读一下吧。
HTML5
在这一点上,HTML5正变得日益强大。在iOS5上,我们看到了HTML5性能的显著提高。随着浏览器对触摸事件和加速器的支持,它正渐入佳境。当然你仍然要处理不同的屏幕分辨率和长宽比,但这不是针对HTML5的。
Unity
目前还没有用在手机浏览器上的unity插件,鉴于unity在开发本地应用上的能力,我可以猜到原因。

5、发布
flash:
flash游戏被包成一个单独的swf文件,容易控制,代码易于保护。这个文件可以很简单的被任何主机通过http协议来访问(如果他作为一个游戏被发布出来的话);或者它也可以被锁定在一个特定的URL上。Flash游戏门户就是给予这种swf文件的网络旅行之上的。事实上,它旅行得越远,你赚的钱就越多。

HTML5:
目前还有一个跨浏览器的统一方式来打包HTML5游戏。最大的游戏门户还不允许开发者上传自己的HTML5游戏。我猜想这是因为在他们的网站运行外部js可能引起的安全问题(你可以在技术上破坏一切),这意味着传播的唯一方式是通过一个html的网址分享到目标网站或者通过一个iframe来嵌入。最终开发者将不得不为这些方式支付托管的费用,或者可能让你的赞助者来付。Flash游戏很多时候会通过这样一些站点来进行传播,他们从大型的门户网站上“搞到”swf文件,然后托管它们。这并不象它听起来那么邪恶,事实上,大部分flash游戏都靠这个赚钱。门户网站可以通过设置安全沙箱的参数来使用iframe,但是这也会禁用很多在HTML5游戏中可能用到的功能,比如本地存储和访问表单。
Unity
Unity和flash类似,它也能被打包成一个单独的文件然后被上传到支持的游戏门户,比如 Kongregate.

6、安全性
flash:
swf文件并不完美,但至少它把你的代码弄到一个文件里,要破解它需要有几把刷子或者借助第三方的软件才行。市面上大量的服务和软件可以对swf文件进行加密保护,这至少可以阻止非专业的破解和偷窃。
HTML5:
JS代码可以被混淆。但是在未加密的客户端,任何东西都不可能被加密。代码在内存中运行的时候很容易被获取。图形和音频文件很容易被盗取,比如通过chrome/firefox的对象检查,或者干脆通过缓存文件夹来快速的找到它。这对你是否是一个问题完全取决于你的游戏和客户(是付钱的那些人而不是你的浏览器客户端!)下面有个评论提到如何保护你的HTML5资源,在他看来,flash的资源和HTML5资源一样容易被窃取。我不想加入关于文件保护的辩论,我只想说,什么都可以做,保护HTML5的方式,你同样可以用来保护flash。

Unity:
类似于flash,如果有人决心够大,他能够窃取到你的资源,但这需要他专业技术上足够牛X。总体而言,你面对半吊子黑客和小偷是安全的。
7、盈利能力
flash:
有很多很好的方式可以通过flash来赚钱,包括游戏赞助、游戏植入广告、与游戏门户网站的分成、广告共享模式、游戏内置交易和为客户开发flash游戏。获取一个广告分享也能增加你的收入。有很多广告网络的API可以使用,甚至简单的将你的游戏上传到Mochi也能增加你的长期收入。

HTML5:
游戏内置广告市场已经存在,在你的游戏中加入google的广告。我不能确定游戏赞助市场是否存在,或者游戏分成模式是否已经形成。游戏内置交易的模式已经存在,并且得到了很好的完善,比如 Fortumo 。当然,你也可以通过为客户开发HTML5游戏来赚钱。
Unity:
这方面我知之甚少,如果有那位读者知道,敬请指教。我期望能有几个广告API.虽然他们的目标市场更倾向于移动领域而非web领域。
8、Facebook
flash:
facebook下大部分游戏都是在flash下运行的。每月拥有3600万玩家的《The Sims Social》是flash做的。Half Bricks的新版《水果忍者》将在flash下运行。他们报道说他们将很快采用先进的flash player11。Zynga的大部分游戏,不管你是不是喜欢,都是flash做的。这些的原因在于受众范围、现有技能(可以聘请到大量的flash开发人员),有优势的工作流,以及在facebook上有各种第三方的服务和API可供选择用来赚钱。
HTML5
我在facebook上尽力寻找纯粹用HTML5开发的游戏。一定会有一些,因此如果你知道,请回贴。Znyga在2010年为开发facebook上的HTML5游戏收购了 Dextrose ,但至今为止我没有看到任何结果,原文说:“一些公司已经在facebook上发布了他们的HTML5游戏,比如OMGPOP和他们的游戏《 Gem Rush .
》,每日用户数量?仅仅是10人”,但有一位读者正确的指出这款游戏仅仅是使用了HTML5的API,游戏本身是flash做的。这为我的结论提供了支持,在facebook的游戏市场上,大部分玩家还是坚定的站在flash一方的。

Unity:
Unity看起来在facebook上找到了自己的利基市场。这部分游戏不象flash一样无处不在,但同样获得了很好的支持。比如 UberStrike(每月用户83万)和King’s Bounty (每月用户2万),这都表明如果你的内容足够吸引人,facebook上的玩家并不介意安装插件。
9、多少人会玩你的游戏

flash :事实上,因为每个从桌面链接到互联网的玩家都可能会玩你的游戏,游戏的播放数量是惊人的。你会看到一个正常的flash游戏一般一年的播放次数在200-300万左右,优秀的游戏比这牛逼的多。我们的游戏《Home Sheep Home》发布后已经获得了每天至少100万的播放次数。并一直直线上升,18个月共获得1亿500万次播放。这是一个惊人的数字。再加上facebook上榜游戏惊人的玩家数量——我该猜测,就在刚才的一秒种里正有数以10万计的玩家正在玩flash游戏。受众不会是你的问题。
HTML5:
事实上,我无法找到任何数字。也许是因为这项技术是这么新,以至于还没有什么好游戏是用他开发的。还希望读者能说出些什么。技术上说,你可以说这一领域的潜在用户有10亿以上,但我是想努力提供现实情况一共开发者选择。
Unity
尽管unity官方宣布了他们的播放器使用率,但实际情况并不是这样。 看一下Kongregate 上的TOP Unity Game,你就会知道他们的总次数只有577,000次。上面最好的flash游戏有2500万次。其实Top100之外的flash游戏的播放次数也不会少于250万次。

10、3D支持
flash
flash11引入了stage3d,它本质上是OpenGL ES 2.0,adobe已经做了大量的工作。但是还有一些情况需要注意。所有的游戏在嵌入时都需要写wmode=direct.大部分游戏门户还不支持这个。但如果一个网站没有这个设置,它根本不会启动硬件加速的功能。其次,不支持的GPU黑名单太多,2009年之前的显卡驱动?过时了,最常见的英特尔GMAS?他们也不行。鉴于英特尔GMAS在2007年**的电脑中占有90%,这问题很严重。当然,adobe不得不画这样一条线,但是flash最大的吸引力就是它不在乎你是用什么硬件,都能很好的跑起来。如果stage3d的市场不再是这样的话,这意味着他放弃了很大一部分休闲玩家。所以如果选择这条路线,并确保你最后能够成功的商业化,如果你需要商业化的话。

HTML5:
在这儿我们有WebGL,与stage3D非常类似,他也属于OpenGL家族,但是缺乏很多关键性的功能。无法全屏、无法鼠标捕获、不支持多重渲染目标,不支持实例绘制等等,这方面在autodesk博客上有很多很好的文章。这不过是短期的技术挑战,最终会被克服的。最大的问题是微软和他们的立场——不支持它。微软并非webGL工作组的成员,并且目前还没有提供对该格式的支持。如果他想这些统计信息现实的那样,这将很成问题,这意味着IE在今后几年仍然是一个不可忽视的力量。
Unity:
Unity当然盯准了3D,在我们有限的运行中,我们看到Unity在stage3d无法支持的GPU上运行的很好。当然,你有浏览器插件的问题需要克服。但是如果你你足够了解市场,那么unity仍然是开发3D游戏目前最好的解决方案。Unity宣布他们很快将支持输出为swf格式,但是这将不能规避stage3d的显卡兼容问题。我打赌在不远的将来,unity也将支持输出为webGL格式。

你可能感兴趣的:(Flash)