用Flash、HTML5和Unity开发网页游戏的现实

jopen 12年前
     <p> 今天对于全球的 Flash 开发者来说是黑暗的一天,因为 Adobe 宣布将不再对移动设备上的浏览器进行 Flash 技术支持。在这之前,Adobe 刚刚宣布了公司范围内的大幅度裁员。尽管这似乎并不是什么严重的问题,但是这却又使“Flash hate wagon”开始转动。</p>    <p> 首先,我只关心<strong>基于网页的游戏开发</strong>。因此,这篇文章只关注这个主题。这并不是一篇关于 Flash 和 HTML5 的争论文章, 也不是教你如何在移动设备上搭建应用程序。所以,这篇文章纯粹的是关注当今开发 web game 的现实。</p>    <p> 我比较了 Flash,HTML5,Unity,因为他们是当今唯一可行的 web game 开发平台。我列了10个主题来比较他们:</p>    <ul type="1">     <li>开发流程 – 用它来开发一个游戏有多容易?</li>     <li>平台稳定性 – 当你开始和结束开发游戏这段时间内,它会发生改变吗?</li>     <li>向后兼容性 – 用它开发的游戏10年后还能运行吗?</li>     <li>移动性 – 移动设备的支持</li>     <li>打包与分发 – 如何流通</li>     <li>安全性 – 代码和知识产权保护</li>     <li>货币化 – 如何运营赚钱</li>     <li>非死book – 社交游戏的角度</li>     <li>多少人会玩你的游戏</li>     <li>3D 支持 – Stage3D vs. WebGL vs. Unity</li>    </ul>    <p> 上述的方面我认为是所有游戏开发者在评估一个新的开发平台时都应该注意的。我希望这些建议对新老 Flash 开发者来说都会有所帮助。</p>    <p> <strong>1. 开发流程</strong></p>    <p> Flash:用 Flash 来开发游戏非常简单。因为关于它有无数的书籍,网站,教程,框架,视频和源代码。对于开发工具来说,Flex route 是免费的,Flash IDE 需要付费。Flash 拥有通用且强大的矢量渲染功能,这意味这你创建的动画的文件格式会非常小。它全面支持音频和大多数的 Adobe 应用程序,例如在 Flash IDE 中嵌入 Illustrator 和 Photoshop。而且 Flash 还有大量的内置功能。</p>    <p> HTML5:编辑器例如 JetBrains 的 Astella 会使编程变的不那么痛苦。有一些优秀的调试工具使浏览器调试也非常简单。有许多关于 HTML5 游戏开发的书籍,网站,在线资源和示例程序。开发 HTML5 游戏的工具是免费,但是也有商业的工具,例如 GameMaker HTML5 和 Game Salad。如果你想让程序效率更高,并且你不怎么关注底层运行机制,你可以使用特定的的库类似 ImpactJS。</p>    <p> Unity:有一个优秀的可视化编辑器,并且可以嵌入主流的3D 应用程序中。基础版本是免费供家庭使用的。也可以在公司里使用,每年需要交纳不到100K $ 的费用。专业版本带有各种插件,价格在1500$上下。一旦你有了 Unity,大量的教程和资源也随之提供,所以学习并不是问题。</p>    <p> <strong>2. 平台稳定性</strong></p>    <p> Flash:Flash 是跨平台的,它不在乎你用的操作系统和浏览器是什么,不管你是破旧的 IE 或是最新的 Chrome。只要你使用的平台上有 Flash Player,对于体验来说都是一样的。Adobe 每年都会发布一个新版本和许多现有版本的更新。</p>    <p> HTML5:HTML5一直处于变动中。基于此有2个副作用:第一,即便你什么都没有做,你的游戏仍然有潜在的崩溃可能。这是因为之前你已经升级或使用其他浏览器了。第二,你必须考虑多平台。在 Chrome 上可以运行只是第一步,你还必须处理 IE,Firefox,Safari 和各种操作系统。由此带来的维护成本也不能低估。另外,最大的技术挑战包括音频支持以及不一致的画布渲染速度等。</p>    <p> Unity: Unity 的 web player 拥有和 Flash 一样的优势。Unity 的插件也是跨平台的。Unity 本身也会定期的发布新功能。</p>    <p> <strong>3. 向后兼容性</strong></p>    <p> Flash:10年前,用 AS1 制作的游戏仍旧可以在现在的 Flash Player11 上运行。向后兼容性十分出色。</p>    <p> HTML5:对于 HTML5 来说,比较向后兼容性有点不公平,因为它还在发展中。这意味着,如果它不符合 W3C 标准,就会被废弃。</p>    <p> Unity:Unity 并不支持以前的插件,最开始我开期待它会像 Flash 一样,但似乎并不是这样。</p>    <p> <strong>4. 移动性</strong></p>    <p> Flash:直到今天前,我可以说,除了 iOS 平台,Flash 插件对于移动平台的支持是伟大的。 但是 Adobe 官方宣布已经不再对移动设备上的 Flash Player 插件继续支持了,你可以认为它已经完全死了。当然你可以通过 AIR 来创建移动应用程序,但是这些不属于 web game 的范畴,所以我们不在此进行深入讨论。Stage3D 对于移动的支持并不成熟,随着许多硬件厂商的合并,以及逐渐老化的 AVM,对于 Adobe 的开发者来说是一场艰难的战争。种种迹象表明,在重建过程中,Adobe 已经把 Oliver Goldman 从 AIR 团队中调到云项目。Oliver 在 AIR 中是核心人物,至于结果怎样,只能仁者见仁了。</p>    <p> HTML5:HTML5对于移动的支持力度越来越强,iOS5上已经看到了性能的明显提升。当移动浏览器开始介入这些新特性,例如触摸事件和加速度的支持,我对于 HTML5 的前景逐渐看好。当然,你必须处理不同的屏幕分辨率和画面比例,但是这个问题不是只有 HTML5 有。</p>    <p> Unity:Unity 并不支持移动浏览器上的插件。考虑到 Unity 的强项在于原生移动应用程序的编译,我能理解原因。</p>    <p> <strong>5. 打包与分发</strong></p>    <p> Flash:Flash 的游戏最终都压缩成一个 SWF 文件。SWF 文件可以简单地通过带有 HTTP 服务的网站进行传输。或者,它可以锁定到一个具体的 URL 上。Flash 游戏的门户网站完全基于 SWF 文件的流动方式。SWF 文件传播地越广,你挣的钱就越多。</p>    <p> HTML5:对于 HTML5 的游戏来说,没有跨平台或者统一的打包方式。那些最大的游戏门户网站都不允许开发者上传游戏。我认为是因为涉及到安全问题,它们不允许在站点上运行外来的 JS 程序。这就意味着传播 HTML5 游戏的唯一方式就是通过 URL 共享到一个目的站点,或者通过 iFrame 来嵌入。最终,是由开发者或赞助商来为给他们的游戏提供上传站点的主机费用买单。Flash 传播游戏的方式是从站点来取出 SWF 文件,然后 hosting 这些 SWF 文件。这听起来不那么臭名招住,因为这的确是 Flash 挣钱的方式。门户网站可以使用带有沙箱参数设置的 iFrame,但是这样做会阻止 HTML5 游戏需要使用的特性,例如本地存储和表单。</p>    <p> Unity:Unity 和 Flash 类似,因为它也会最终创建出一个单一文件,然后上传到游戏门户网站,例如 Kongregate。</p>    <p> <strong>6. 安全性</strong></p>    <p> Flash:SWF 并不完美,但至少它能打包你所有的资源和代码到一个单一的文件,这就需要对它本身的技术很了解或者第三方的软件才能破解它。市场上有很多 SWF 保护服务和代码混淆软件,基本上可以防止随意的黑客和盗贼。</p>    <p> HTML5: JS 代码可以混淆,但是不能被未加密的客户端加密。在内存中运行时,代码很容易被修改。图形和音频内容极容易被盗,可以通过 Chrome 或者 Firefox 的对象检查器,甚至通过浏览器的缓存文件夹。有人认为有一些保护 HTML5 资产的方式,并且认为 Flash 的资产一样容易被盗用。我不打算进入文件保护的辩论,我只想说,可以用来保护 HTML5 资产的方法都可以应用到 Flash 中。</p>    <p> Unity:和 Flash 类似。如果什么人有足够的决心来盗取它的资产,他会需要相当多的技术知识。</p>    <p> <strong>7. 货币化</strong></p>    <p> Flash:有许多很好的方式来挣钱,包括:游戏赞助,在游戏中的广告,与游戏门户网站的收入分成,广告分成,游戏中的交易,雇佣式游戏打工等等。我知道很多开发者完全不需要赞助商,只需要游戏和广告收入分成。网络中有大量为广告服务的 API,只需要简单的上传你的游戏,就可以等到长期收入分成。</p>    <p> HTML5: 存在一些游戏中的广告服务,也可以把 Google 广告放在游戏中。我还没看到任何 HTML5 的游戏赞助市场或者收入分成交易。在游戏中的交易服务,比如 Fortumo,已经存在和完善。</p>    <p> Unity:这里我不太懂,也许读者可以补充。</p>    <p> <strong>8. 非死book</strong></p>    <p> Flash:非死book 上最流行的游戏都是用的 Flash。The Sims Social 每个月3600万的玩家使用的都是 Flash。新的水果忍者同样使用 Flash,并且会用到 Flash 11 的新特性。绝大部分的 Zynga 游戏也都使用 Flash。之所以会这样,是因为 Flash 的受众,现有的技能(Flash 开发者众多)和简单的开发流程。同时在 非死book 上可以有很多方式来挣钱,因为它有大量的第三方服务和 API 接口。</p>    <p> HTML5: 我努力在 非死book 上寻找最流行的纯 HTML5 游戏。当然肯定会有一些,因此,如果你找到了请帖链接。Zynga 在2010年就收购了 Dextrose,但是我还没看到什么结果。一些公司已经发布 HTML5 游戏到 非死book 上,比如 OMGPOP 的 Gem Rush,每日用户10人。但是 Gem Rush 只是用了 HTML5 的 API,游戏本身还是 Flash 的!因此我的结论,目前为止,非死book 上最大的玩家群体还是使用 Flash。</p>    <p> Unity:看上去 Unity 游戏在 非死book 上也有一些赢利点。如 UberStrike (每个月83万玩家) 和 King’s Bounty(每个月2万玩家)。只要游戏内容足够吸引人,非死book 的用户也不方队安装 Unity 插件。</p>    <p> <strong>9. 多少人会玩你的游戏</strong></p>    <p> Flash:因为事实上,很多桌面用户都连接到互联网玩游戏,所以 Flash 的用户数量是巨大的。一个标准的 Flash 游戏在第一年通常有2-3百万次的访问量。好的 Flash 游戏当然次数更多。我们的游戏 Home Sheep Home 一上线就有每天1百万的访问量,在18个月内已经有1亿的访问量。这是一个惊人的数字。加上 非死book 巨大的用户群,一定会有成百上千的用户在玩 Flash 游戏,玩家完全不是你的问题。</p>    <p> HTML5: 老实说,我无法找到任何相关数据,可能这个技术太新了,也没有用它做出来的好游戏。从技术上讲,可以说,潜在的用户可以有10亿,但是究竟事实上能有多少,开发者可以试试。</p>    <p> Unity:虽然 Unity 官方声明了玩家的数量,但是并没有第三方的统计。Kongregate 上只有总共577000的访问量。而最好的 Flash 的游戏已经有2500万的访问量。事实上,排名前一百的 Flash 游戏没有低于250万的访问量。</p>    <p> <strong>10. 3D 支持</strong></p>    <p> Flash:Flash Play 11 引入了 Stage3D,它本质上是 OpenGL ES 2.0。Adobe 已经做了一个标准化的工作来实现它,但是也有一大堆注意事项。首先,游戏需要用 wmode=direct 来嵌入。而大多数的游戏门户网站还不支持,所以如果你的游戏放到一个不支持它的门户上,它根本不会运行3D 硬件。其次,不支持 GPU 的黑名单很令人丧气。任何2009年前的驱动程序无法工作;最常见的英特尔 GMAS(板载图形芯片)也无法工作。而在2007年,90%的个人电脑都用了因特尔 GMAS,这是个真正的大问题。当然 Adobe 必须要划一条线,但是 Flash 的吸引力在于它无所谓运行在什么样的硬件上。如果你用了 Stage3D,实际上你已经把巨大的潜在玩家抛弃了。所以必须非常小心的选择这条路,确保你能尽快的回收资本。</p>    <p> HTML5: 在这里我们谈 WebGL。它和 Stage3D 在技术层面上有很多相似点,但是在很多关键领域有缺陷:不能全屏,没有鼠标捕获(Flash Player11.2 支持),没有多重渲染目标,没有 instanced drawing 等等。在 Aut<a title="oDesk" href="/misc/goto?guid=4958198923990522170" rel="nofollow" target="_blank">oDesk</a> 的博客上有一片很好的文章说了这些问题。当然这些只是短期内的技术难点,并且最终将可以被克服。WebGL 最大的问题在于 Microsoft 目前的立场是不支持它。Microsoft 不是 WebGL 工作组的成员,而且不支持 WebGL 的任何格式。由于 IE 浏览器仍然有很大的占有率,所以这个不容忽视。</p>    <p> Unity:Unity 当然支持3D。在有限的测试中,Unity 结果完美。当然你需要安装 Unity 的浏览器插件。但是如果你知道你的游戏玩家足够,那么 Unity 仍然是目前最好的3D 游戏解决方案。Unity 宣称将支持导出 Unity 游戏成 Flash 格式,而且不会有 Stage3D 带来的 GPU 黑名单问题。我真想把钱给 Unity,让他们能够在不远的将来能够把 Unity 游戏导出成 WebGL 格式。</p>    <p style="text-align:center;"><a><img title="用Flash、HTML5和Unity开发网页游戏的现实" border="0" alt="用Flash、HTML5和Unity开发网页游戏的现实" src="https://simg.open-open.com/show/23c519ceab4de5118a0c373ba1dff4a5.jpg" width="608" height="264" /></a></p>    <p> <strong>提示:这篇译文翻译了大部分原文,</strong><a href="/misc/goto?guid=4958198924741859019" rel="nofollow" target="_blank"><strong>英文原文</strong></a><strong>后面还有有关“Adobe 将会多久支持 Flash 播放器”和“Flash 游戏开发人员该如何应对”的内容讨论。<br /> <br /> <br /> </strong>来自: <a id="link_source2" href="/misc/goto?guid=4958198925467910946" target="_blank">bbs.9ria.com</a></p>