我比较了Flash,HTML5,Unity,因为他们是当今唯一可行的webgame开发平台。我列了10个主题来比较他们:
上述的方面我认为是所有游戏开发者在评估一个新的开发平台时都应该注意的。我希望这些建议对新,老Flash开发者来说都会有所帮助。
Flash:用Flash来开发游戏非常简单。因为关于它有无数的书籍,网站,教程,框架,视频和源代码。对于开发工具来说,Flexroute是免费的,FlashIDE需要付费。Flash拥有通用且强大的矢量渲染功能,这意味这你创建的动画的文件格式会非常小。它全面支持音频和大多数的Adobe应用程序,例如在FlashIDE中嵌入Illustrator和Photoshop。而且Flash还有大量的内置功能。
Unity:有一个优秀的可视化编辑器,并且可以嵌入主流的3D应用程序中。基础版本是免费供家庭使用的。也可以在公司里使用,每年需要交纳不到100K$的费用。专业版本带有各种插件,价格在1500$上下。一旦你有了Unity,大量的教程和资源也随之提供,所以学习并不是问题。
Flash:Flash是跨平台的,它不在乎你用的操作系统和浏览器是什么,不管你是破旧的IE或是最新的Chrome。只要你使用的平台上有FlashPlayer,对于体验来说都是一样的。Adobe每年都会发布一个新版本和许多现有版本的更新。
HTML5:HTML5一直处于变动中。基于此有2个副作用:第一,即便你什么都没有做,你的游戏仍然有潜在的崩溃可能。这是因为之前你已经升级或使用其他浏览器了。第二,你必须考虑多平台。在Chrome上可以运行只是第一步,你还必须处理IE,Firefox,Safari和各种操作系统。由此带来的维护成本也不能低估。另外,最大的技术挑战包括音频支持以及不一致的画布渲染速度等。
Unity:Unity的webplayer拥有和Flash一样的优势。Unity的插件也是跨平台的。Unity本身也会定期的发布新功能。
Flash:10年前,用AS1制作的游戏仍旧可以在现在的FlashPlayer11上运行。向后兼容性十分出色。
HTML5:对于HTML5来说,比较向后兼容性有点不公平,因为它还在发展中。这意味着,如果它不符合W3C标准,就会被废弃。
Unity:Unity并不支持以前的插件,最开始我开期待它会像Flash一样,但似乎并不是这样。
Flash:直到今天前,我可以说,除了iOS平台,Flash插件对于移动平台的支持是伟大的。但是Adobe官方宣布已经不再对移动设备上的FlashPlayer插件继续支持了,你可以认为它已经完全死了。当然你可以通过AIR来创建移动应用程序,但是这些不属于webgame的范畴,所以我们不在此进行深入讨论。Stage3D对于移动的支持并不成熟,随着许多硬件厂商的合并,以及逐渐老化的AVM,对于Adobe的开发者来说是一场艰难的战争。种种迹象表明,在重建过程中,Adobe已经把OliverGoldman从AIR团队中调到云项目。Oliver在AIR中是核心人物,至于结果怎样,只能仁者见仁了。
HTML5:HTML5对于移动的支持力度越来越强,iOS5上已经看到了性能的明显提升。当移动浏览器开始介入这些新特性,例如触摸事件和加速度的支持,我对于HTML5的前景逐渐看好。当然,你必须处理不同的屏幕分辨率和画面比例,但是这个问题不是只有HTML5有。
Unity:Unity并不支持移动浏览器上的插件。考虑到Unity的强项在于原生移动应用程序的编译,我能理解原因。
Flash:Flash的游戏最终都压缩成一个SWF文件。SWF文件可以简单地通过带有HTTP服务的网站进行传输。或者,它可以锁定到一个具体的URL上。Flash游戏的门户网站完全基于SWF文件的流动方式。SWF文件传播地越广,你挣的钱就越多.
HTML5:对于HTML5的游戏来说,没有跨平台或者统一的打包方式。那些最大的游戏门户网站都不允许开发者上传游戏。我认为是因为涉及到安全问题,它们不允许在站点上运行外来的JS程序。这就意味着传播HTML5游戏的唯一方式就是通过URL共享到一个目的站点,或者通过iFrame来嵌入。最终,是由开发者或赞助商来为给他们的游戏提供上传站点的主机费用买单。Flash传播游戏的方式是从站点来取出SWF文件,然后hosting这些SWF文件。这听起来不那么臭名招住,因为这的确是Flash挣钱的方式。门户网站可以使用带有沙箱参数设置的iFrame,但是这样做会阻止HTML5游戏需要使用的特性,例如本地存储和表单。
Unity:Unity和Flash类似,因为它也会最终创建出一个单一文件,然后上传到游戏门户网站,例如Kongregate。
Flash:SWF并不完美,但至少它能打包你所有的资源和代码到一个单一的文件,这就需要对它本身的技术很了解或者第三方的软件才能破解它。市场上有很多SWF保护服务和代码混淆软件,基本上可以防止随意的黑客和盗贼。
HTML5:JS代码可以混淆,但是不能被未加密的客户端加密。在内存中运行时,代码很容易被修改。图形和音频内容极容易被盗,可以通过Chrome或者Firefox的对象检查器,甚至通过浏览器的缓存文件夹。有人认为有一些保护HTML5资产的方式,并且认为Flash的资产一样容易被盗用。我不打算进入文件保护的辩论,我只想说,可以用来保护HTML5资产的方法都可以应用到Flash中。
Unity:和Flash类似。如果什么人有足够的决心来盗取它的资产,他会需要相当多的技术知识。
Unity:这里我不太懂,也许读者可以补充。
Flash:Facebook上最流行的游戏都是用的Flash。TheSimsSocial每个月3600万的玩家使用的都是Flash。新的水果忍者同样使用Flash,并且会用到Flash11的新特性。绝大部分的Zynga游戏也都使用Flash。之所以会这样,是因为Flash的受众,现有的技能(Flash开发者众多)和简单的开发流程。同时在Facebook上可以有很多方式来挣钱,因为它有大量的第三方服务和API接口。HTML5:我努力在Facebook上寻找最流行的纯HTML5游戏。当然肯定会有一些,因此,如果你找到了请帖链接。Zynga在2010年就收购了Dextrose,但是我还没看到什么结果。一些公司已经发布HTML5游戏到Facebook上,比如OMGPOP的GemRush,每日用户10人。但是GemRush只是用了HTML5的API,游戏本身还是Flash的!因此我的结论,目前为止,Facebook上最大的玩家群体还是使用Flash。
Unity:看上去Unity游戏在Facebook上也有一些赢利点。如UberStrike(每个月83万玩家)和King’sBounty(每个月2万玩家)。只要游戏内容足够吸引人,Facebook的用户也不方队安装Unity插件。
Flash:因为事实上,很多桌面用户都连接到互联网玩游戏,所以Flash的用户数量是巨大的。一个标准的Flash游戏在第一年通常有2-3百万次的访问量。好的Flash游戏当然次数更多。我们的游戏HomeSheepHome一上线就有每天1百万的访问量,在18个月内已经有1亿的访问量。这是一个惊人的数字。加上Facebook巨大的用户群,一定会有成百上千的用户在玩Flash游戏,玩家完全不是你的问题。
Flash:FlashPlay11引入了Stage3D,它本质上是OpenGLES2.0。Adobe已经做了一个标准化的工作来实现它,但是也有一大堆注意事项。首先,游戏需要用wmode=direct来嵌入。而大多数的游戏门户网站还不支持,所以如果你的游戏放到一个不支持它的门户上,它根本不会运行3D硬件。其次,不支持GPU的黑名单很令人丧气。任何2009年前的驱动程序无法工作;最常见的英特尔GMAS(板载图形芯片)也无法工作。而在2007年,90%的个人电脑都用了因特尔GMAS,这是个真正的大问题。当然Adobe必须要划一条线,但是Flash的吸引力在于它无所谓运行在什么样的硬件上。如果你用了Stage3D,实际上你已经把巨大的潜在玩家抛弃了。所以必须非常小心的选择这条路,确保你能尽快的回收资本。
Unity:Unity当然支持3D。在有限的测试中,Unity结果完美。当然你需要安装Unity的浏览器插件。但是如果你知道你的游戏玩家足够,那么Unity仍然是目前最好的3D游戏解决方案。Unity宣称将支持导出Unity游戏成Flash格式,而且不会有Stage3D带来的GPU黑名单问题。我真想把钱给Unity,让他们能够在不远的将来能够把Unity游戏导出成WebGL格式。