- 浏览: 406921 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (325)
- 神经网络 (1)
- javascript (11)
- 数据结构 (2)
- 计算机图形学 (11)
- 模式识别 (1)
- 前端开发 (14)
- 机器学习 (11)
- ios开发 (50)
- Python (9)
- HTML5 (4)
- 计算机视觉 (9)
- 数字图像处理 (7)
- 架构设计 (19)
- 数据库设计 (9)
- 算法设计 (59)
- Java (37)
- 其他 (3)
- 游戏开发 (5)
- c++ (17)
- Linux (3)
- TCP/IP (2)
- Flex (41)
- 健康 (6)
- AI (2)
- 工具 (1)
- 数据挖掘 (1)
- 性能优化 (6)
- 综合 (2)
- 网络通信 (12)
- Android (2)
- UML (3)
- 软件设计 (11)
- 编程经验 (7)
- J2EE (1)
- 多媒体技术 (3)
- 数学 (7)
- php (4)
- 设计 (1)
- CS (2)
- 计算机理论 (1)
- 信息安全 (1)
最新评论
-
ahead_zhan:
good good good
flex3控件_ModuleLoader -
lonerzf:
好样的。非常感谢楼主
OpenCV视频教程整理 -
lonerzf:
好样的。谢谢~
OpenCV视频教程整理 -
coding1688:
博主说的不错,我在实现瀑布流布局时也用的masonry插件,有 ...
Javascript 瀑布流式布局及其动态效果的实现 -
snowolf:
除非玩游戏,不然没啥win的事情,或者用win的银行客户端,通 ...
macbook安装操作系统的机理分析
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格式。
发表评论
-
phonegap js 和 本地代码 调用原理
2013-09-03 11:52 749转自:http://www.cnblogs.com/coms ... -
Flash 3D的相关文章推荐
2012-10-12 15:18 0Flash ActionScript 3.0的3D效果处 ... -
JS原型对象通俗"唱法"
2012-08-23 16:52 717参考:http://www.cnblogs.com/gn ... -
Javascript 瀑布流式布局及其动态效果的实现
2012-08-18 21:24 2319参考:http://test.yvlou.c ... -
常用前端开发工具合集
2012-08-18 10:07 770参考:http://www.cnblogs ... -
玩转html5<canvas>画图
2012-08-06 09:09 1372参考:http://www.cnblogs.c ... -
学好JavaScript Web开发必备技能
2012-06-09 18:57 776参考: http://hi.baidu. ... -
javascript编程技巧_模块化编程(匿名函数)
2012-06-07 09:56 2588参考:http://blog.csdn.net/lxp ... -
JavaScrip防止代码被阅读
2012-06-02 23:16 900参考:http://www.mscto.com/JavaScr ... -
BlazeDS的架构和工作原理简介
2012-06-02 14:09 881参考:http://hi.baidu.com/whlxj ... -
前端性能优化
2011-06-04 11:22 674图片篇: http://www.pin5i.com/showt ... -
Flex性能优化常用手法总结
2011-06-04 10:29 855参考:http://www.webgamei.com/c ... -
FLASH/ActionScript 性能优化
2011-05-31 21:41 1192一. 图形方面的优化 1. 减少同时在屏幕上物体的个 ... -
20个最新jQuery插件震撼登场(多图)
2010-11-17 11:41 1633参考:http://developer.51cto.com/a ...
相关推荐
Unity是一款广泛使用的跨平台游戏引擎,不仅用于制作游戏,也常用于创建交互式3D内容,如虚拟现实(VR)、增强现实(AR)以及互动式的多媒体应用程序。 描述中的“奉贤互动拍照操作说明”指出,这个项目可能包含一...
综上所述,“Flash VR AR Cube”项目展示了如何利用ActionScript3和Flash技术来探索虚拟现实和增强现实的交集,提供了一种在Web环境中实现3D互动的新方式。尽管Flash现在已经不再主流,但这个项目仍然对理解早期Web...
然而,市场上的Web3D格式多样,包括Atmosphere、Blaxxun3D、Cult3D、Fluid3D、Java3D、Viewpoint、Superscape、ShockWave3D、Vecta3D、Unity3D、HTML5和EON等,它们各自拥有独特的特性和应用场景,但缺乏统一的标准...
Flash是由Adobe公司开发的一种交互式矢量图形和多媒体平台,主要用于创建网页动画和应用程序。而Flash 3D则是在二维平面上模拟三维空间效果的技术,它可以创建出动态的、交互式的3D图形和动画,使用户能够体验到更为...
在IT行业中,"舞厅效果"通常指的是在数字媒体领域,特别是视频制作和游戏开发中,模拟真实舞厅中的灯光动态和人物投影的一种技术。这种效果的实现涉及到多个技术层面,包括图形渲染、光照计算、粒子系统以及动画设计...
7. **游戏开发**:通过Unity或Unreal Engine等平台,学习游戏引擎的使用,理解游戏逻辑和物理系统,以及游戏关卡设计。 8. **新媒体艺术**:探索数字艺术和装置艺术,了解新媒体在当代艺术中的应用和影响。 9. **...
9. 前端开发:HTML、CSS和JavaScript基础,用于构建响应式和交互式的网页内容。 10. 数字版权管理:学习如何保护数字作品的知识产权,了解相关法律和协议。 黄亚喃同学的压缩包文件很可能包含了上述一个或多个方面...
5. 多媒体集成:探讨如何在同一个项目中整合多种媒体,例如使用HTML5的Canvas和Audio/Video标签,或者使用Flash、Unity等开发平台。 6. 互动设计:讲述如何创建用户交互功能,如按钮、滑块、下拉菜单,以及如何利用...
Flash虽然已不再主流,但它曾是创建互动内容和动画的重要工具,尤其在网页设计中。不过,现在更多使用HTML5和现代动画工具,如Adobe Animate,来实现类似的功能。 总之,虚拟效果的创作涵盖了多个技术层面,从建模...
4. **网页设计与开发工具**:实习可能使用Dreamweaver、Fireworks和Flash等Adobe产品进行网页设计。Dreamweaver用于创建和编辑HTML/CSS代码,提供可视化界面;Fireworks则用于图像编辑和优化,可以快速生成网页元素...
5. **游戏开发**:可能包括使用Unity、Unreal Engine或Cocos2d-x等游戏引擎进行游戏设计,涵盖了游戏逻辑、物理系统、AI编程等内容。 6. **项目管理**:可能涉及到敏捷开发方法,如Scrum或Kanban,以及版本控制工具...
9. **多媒体应用开发**:掌握如何使用编程语言(如Java、C++、Python等)和框架(如Unity、Unreal Engine等)进行多媒体应用开发,包括游戏开发、虚拟现实、增强现实等。 10. **版权保护与数字水印**:理解多媒体...
在现代娱乐产业中,这些技术被广泛应用,如游戏开发、电影特效、虚拟现实(VR)体验等。 【压缩包子文件的文件名称列表】:6.fla - 这个文件名可能是Adobe Flash动画的工作文件。FLA文件是Flash Professional用来创建...
- **Unity C#**:对于游戏开发和虚拟现实应用,C#是不可或缺的编程语言。 #### 4. 用户体验与交互设计 - **界面设计原则**:学习UI/UX设计的基本原则,确保多媒体应用对用户友好。 - **响应式设计**:使多媒体内容...
同时,还要熟悉Flash、SVG等动画技术,以及HTML5、CSS3等网页交互技术。 二、软件设计与开发 设计和开发多媒体应用需要编程基础,尤其是对面向对象编程的理解。如Java、C#、Python等语言的应用,以及了解如Unity、...
3. **多媒体积件管理库的开发与应用**:涵盖多媒体处理技术、数据库管理和Web应用开发,可能涉及Flash、JavaFX、HTML5或Unity3D等。 4. **基于WEB的多媒体素材管理库**:需要理解HTTP协议、Web服务器配置、...
9. **开发技术**:可能涉及编程语言(如Java、Python、JavaScript等)和框架(如HTML5、Flash、Unity等)在多媒体项目开发中的使用。 10. **未来趋势**:探讨虚拟现实(VR)、增强现实(AR)、混合现实(MR)等新兴...
2. **编程技术**:可以涉及到Web开发(HTML、CSS、JavaScript)、移动应用开发(Swift、Java、Kotlin)、游戏开发(Unity、Unreal Engine)或者脚本语言(Python、Ruby)来实现互动元素。 3. **3D建模和打印**:...
- 开发工具与平台:如Adobe Flash、Unity、HTML5等。 - 编程语言:JavaScript、ActionScript、C#等在多媒体应用中的应用。 - 应用场景:教育、娱乐、广告、游戏、虚拟现实等。 8. **多媒体网络传输**: - 流...
3. 多媒体应用开发:开发多媒体应用涉及到编程语言(如Java、Python、JavaScript等)、多媒体开发工具(如Adobe Flash、Unity、Director等)和框架(如HTML5的Canvas、Web Audio API等),开发者需要掌握这些工具和...