`
thinkry
  • 浏览: 39655 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

OpenFL引擎使用总结

阅读更多

我们使用OpenFl引擎开发了手机网游《超级足球》,已经在删档内测了,估计是国内第一款用OpenFL引擎做的手机网游了。本文就来总结下使用OpenFL引擎的心得。

一、OpenFL的特色

OpenFLOpen Flash Library的简写,从名字能看出它的目标是兼容Flash  API,实际也正是如此,具体来说有以下特色:

    1、它实现了Flash as3绝大部分的API(不包括Stage3D部分);

    2、它跨平台性好,能编译出Flash、Android、iOS、Windows等不同平台的产品;

    3、编译出来的Android、iOS、Windows产品是原生C++语言,比Flash虚拟机有更高的性能;

    4、OpenFL是用haxeC++编写的,haxeas3语法非常接近,比as3更强大。

另外,OpenFL说它还支持HTML5BlackBerryFireFox OSTizen,但HTML5本身的性能有限,BlackBerry几个平台目前比例很低,我们基本无视了。

 

正是因为haxe类似as3OpenFL实现了Flash绝大部分API,我们招聘的as3程序员看半天就能上手开始写代码,之前的经验得到复用。

而在Flash上积累的库代码也比较容易移植到haxe上来,在haxe官网上列出从Flash移植过来的库有:box2dflambeflixelflashpunk等等。

我们花了5人日就把Flash as3上的骨骼动画库DragonBones移植到了haxe上,并修复了原版的一些bug,这些都离不开haxeOpenFL

 

二、我们的改进

虽然OpenFLshowcase列举了近100个游戏,但基本都是单机游戏,而且轻度小游戏居多,用来做复杂些的手机网游,还需要加强火力,我们对OpenFL引擎、相关库和工具做了一系列的改进。

2.1新增对压缩纹理的支持

Android平台在2.3版本后都支持ETC1压缩纹理,就像iOS都支持PVRTC压缩纹理一样。使用压缩纹理,图片的文件大小只有PNG30%左右,内存占用一般只有PNG20%不到,还省了PNG解码的CPU消耗,在iOS上通常都会使用压缩纹理,但OpenFL引擎在Android平台上未支持。

我们在OpenFL引擎的C++部分增加了对压缩纹理ETC1的支持,在《超级足球》中,场景切换一般都在0.5秒内完成,游戏中很少出现loading画面,体验更流畅。

2.2新增对图片缓存的支持

在引擎的C++部分增加了对图片缓存的支持,应用层加载同一图片时,会复用之前已加载的资源,减少了图片的重复读取和内存占用,让应用层无需关注图片缓存管理。

2.3优化空指针错误的处理方案

Flash页游开发时期,空指针是最常见的错误,只不过Flash Player默认不崩溃,容错性处理了这类错误。

OpenFL对空指针错误的默认处理是崩溃,这个在实际应用时体验不好,我们像Flash那样处理,让空指针错误只是抛异常,并在应用层捕获输出日志,这样既让程序容错性更好,又能查出是哪里出问题,方便fixbug

2.4对swf库的优化

我们还修复了haxe swf库的一些bug,使OpenFL直接解析并播放swf文件,美术同学能复用Flash编辑工具和swf资源,减轻了团队学习成本和资源浪费。

 

2.5对UI编辑的改进

我们UI库主要使用的是stablexui,增加了帧动画、数字的BmpFontTable、支持记录条数很多的ListView等控件;

实现了直接把PSD文件导出为stablexui文件的脚本和编辑器,极大减轻了从美术资源到UI界面比较琐碎的对坐标工作;

还实现了基于stablexui库的UI查看器;

以上的改进使得我们做UI功能比较轻松了。

2.6其他

haxe支持条件编译,能够用一套代码编译出不同平台的安装包,在多平台运营时,这个特性很重要。

我们还实现了自动生成配置文件、自动处理图片(缩小、拼图、压缩)、每日自动构建不同平台的安装包

 

三、OpenFL的风险

最大的风险是,OpenFL稳定性还需进一步提升。从OpenFL版本更新记录来看,近一年的更新比较积极,但整体的稳定性和社区氛围还需要持续加强。目前我们使用OpenFL在个别Android手机上出现崩溃情况,这是相对严重的问题。

2D游戏的技术选型来说,cocos2d-xOpenFL更稳定些,如果团队熟悉C++,优先选择cocos2d-x。另一方面如果有大公司对OpenFL进行支持,相信会极大的促进Flash开发者迁移到OpenFL,毕竟OpenFL不仅能做Flash,还能做AndroidiOS应用。

分享到:
评论
1 楼 javaichiban 2014-10-31  

博主厉害!希望分享更多细节!
欢迎加入我们的Haxe群 30373020!

相关推荐

    openfl-bitfive, 针对OpenFL的可选blitting面向后端.zip

    openfl-bitfive, 针对OpenFL的可选blitting面向后端 openfl-bitfiveibm bitfive是一个面向OpenFL-html5的备用后端,用于与canvas驱动应用程序( 如用 HaxePunk插件或者 HaxeFlixel插件框架) 进行使用。 它主要是...

    away3d-examples-openfl:Away3D 3D引擎的OpenFL端口-示例

    ## Introduction Away3D for Flash是Flash Away3D引擎的端口,可为OSX,Windows,iOS,Android和其他应用启用OpenFL C ++本机版本。 ##安装 haxelib install away3d-examples 或者,如果您想安装特定的示例,请...

    前端项目-openfl.zip

    1. **跨平台兼容性**:OpenFL使用Haxe语言编写,这使得代码能够在多种操作系统和设备上编译和运行,包括Windows、MacOS、Linux、Android、iOS、HTML5等。 2. **性能优化**:OpenFL基于C++的NME库,利用硬件加速,...

    haxeui-openfl:HaxeUI框架的OpenFL后端-

    例如: haxelib git haxeui-core https://github.com/haxeui/haxeui-corehaxelib dev haxeui-openfl path/to/expanded/source/archive用法创建支持OpenFL的新OpenFL应用程序的最简单方法是使用。 这些模板将允许您...

    OpenFL-SWFAction

    OpenFL-SWFAction 主要关注的是使用OpenFL框架与SWF动作相关的开发技术。OpenFL是一个开源的跨平台开发工具,它允许开发者使用Haxe语言编写代码,然后编译成不同平台的应用,如桌面应用、网页游戏、移动应用等。SWF...

    generator-openfl:基于OpenFL NPM的项目的Yeoman生成器

    首先,使用安装和 generator-openfl(我们假设您已经预先安装了 )。 npm install -g yo npm install -g generator-openfl 然后生成你的新项目: yo openfl 认识约曼 约曼有一颗金子般的心。 Yeoman 是一个有...

    openfl-snapsvg:基于 Snap.SVG 的 OpenFL 的 HTML5 后端

    对于“openfl-snapsvg”库,您可以使用这样的开发版本: haxelib git openfl-snapsvg https://github.com/ngrebenshikov/openfl-snapsvg 导航到您的项目的 application.xml 并在包含 OpenFL 和所有依赖于 OpenFL ...

    flixel:由Haxe和OpenFL支持的免费,跨平台2D游戏引擎

    Flixel是一个强大的,免费的,且开源的2D游戏引擎,主要由Haxe编程语言和OpenFL框架提供支持。这个强大的组合使得开发者能够轻松创建跨平台的游戏,无论是桌面、移动设备还是网络平台,Flixel都能提供一致的性能和...

    haxegon:面向初学者的haxe编程库。 由OpenFL和Starling提供支持

    OpenFL允许开发者使用Haxe编写原生应用,提供了丰富的图形、音频和输入处理功能,特别适合游戏开发。 **Starling框架** Starling是基于AS3的2D游戏开发框架,但在Haxe环境中,它是通过HaxeFlixel或OpenFL实现的。...

    openfl-tiled-flixel:使用带有 HaxeFlixel 的 openfl-tiled 的实验胶水

    openfl-tiled-flixel 使用带有 HaxeFlixel 的实验胶水报告问题如果您想报告问题,请使用安装 openfl-tiled-flixel haxelib install openfl-tiled-flixel请注意,这个包依赖于 openfl-tiled。如何安装开发版? 要安装...

    openfl-samples:基于 Haxelib 的 OpenFL 示例项目

    您可以浏览项目目录,但使用以下命令列出可用的 OpenFL 示例通常更简单: openfl create 创建样本 找到要创建的样本后,可以使用“create”命令生成副本: openfl create PiratePig 这将在当前目录中创建一个...

    OPFL-Project:[OPENFL]我正在学习openfl

    5. **物理引擎集成**:OpenFL可以与Box2D等物理引擎无缝集成,用于实现游戏中的物理模拟,如重力、碰撞检测等。 6. **事件驱动编程**:OpenFL遵循事件驱动模型,允许开发者响应用户输入、帧更新和其他系统事件,这...

    openfl.org:OpenFL网站

    OpenFL.org 这是的来源。 您可以使用构建站点。 它应该在Linux,macOS或适用于Windows的Ubuntu Bash Shell的Unix环境中工作。 确保已安装Ruby,然后安装Bundler( gem install bundler ),... 感谢您使用OpenFL!

    openfl-examples:我在Haxe中的OpenFL示例

    OpenFL是一个强大的开源框架,它使得开发者能够使用Haxe语言创建跨平台的2D游戏和应用程序。Haxe是一种多平台的静态类型编程语言,以其高效、类型安全和广泛的库支持而闻名。在本文中,我们将深入探讨如何利用openfl...

    openfl-sockjs:跨平台的SockJS客户端库,用于在OpenFL应用程序和SockJS Websocket服务器之间进行实时远程处理

    OpenFL SockJS客户端库 跨平台的SockJS客户端库,用于与OpenFL应用程序和SockJS Websocket服务器进行实时远程处理。 该库允许OpenFL / Haxe应用程序连接到SockJS服务器。 它已经在iOS,Android,C ++(在Mac上进行...

    StablexUI:Haxe OpenFL的UI引擎旨在在自定义UI时提供尽可能多的自由

    稳定版UI Google网上论坛: : 用于Haxe OpenFL的宏驱动的ui引擎它旨在为开发人员提供自定义UI方面的尽可能多的自由。 支持的目标:cpp(iOS,Android,Blackberry,webOS,Windows,Linux,MacOS),Flash,html5,...

    horror:基于 OpenFL 的底层 GPU 框架

    恐怖 关于 如果您打算使用 GPU 渲染器开发 2d 游戏,但您不知道哪种框架更适合您的目的,或者您仍然需要 Flash 支持。 Horror 是一个用于在 Haxe 中开发 2D 游戏的中级... 现在为 OpenFL/Lime/Snow 库实现并支持他的

    Openfl-Box2d-Demos:已将 box2d 演示移植到 haxe openfl

    Box2D是一款广泛使用的2D物理引擎,它为开发者提供了模拟真实世界物理现象的能力,如重力、碰撞检测和刚体动力学。OpenFL则是一个强大的开源框架,用于创建高性能的跨平台应用程序,尤其适合游戏开发,它基于Haxe...

    3D引擎核心_Haxe_Python_下载.zip

    结合使用,开发者可以构建出功能强大且灵活的3D引擎。 总之,Haxe和Python在3D引擎开发中都有其独特的价值。Haxe以其高性能和跨平台能力处理核心计算,Python则以其易用性和生态系统支持工具链和外围系统。通过深入...

    minimalcomps-openfl:最小组件的OpenFL端口,作者Keith Peters

    要使用haxelib的最新版本: $ haxelib install minimalcomps要使用GitHub的最新开发成果,请执行以下操作: $ haxelib git minimalcomps https://github.com/jasonsturges/minimalcomps-openfl.git要将本地副本用作...

Global site tag (gtag.js) - Google Analytics