`
xidajiancun
  • 浏览: 454454 次
文章分类
社区版块
存档分类
最新评论

从 Flash 到 Cocos2d-x

 
阅读更多

前言:写这篇文章的原因是朋友公司打算将一个页游产品转为手游,邀请我过去做了两天培训。所以我根据 Flash 团队反映的一些问题做了有针对性的阐述。


Flash 团队转入 cocos2d-x 架构,面对的大部分问题实际上都是“实施”细节,语言根本不是障碍。为了让整个内容更有条理性,我以 Flash 团队提出的问题整理了一个提纲。然后我会按照这个提纲逐步完善文章内容。


阅读索引:

  • cocos2d-x 架构介绍,以及与 Flash 架构的主要差异
  • 如何创建、编译、发布 cocos2d-x 项目
  • Lua 与 ActionScript 的主要差异
  • Lua 里如何实现面向对象
  • 如何创建一个游戏架构,分离数据、逻辑、表现
  • cocos2d-x 里出现的各种事件,例如触摸、重力感应等
  • cocos2d-x 如何与服务端交互
  • 资源的整合与优化
  • 画面渲染和内存优化
  • 创建自适应多种分辨率的 UI 界面

从 Flash 体系转到 cocos2d-x 在技术上没有太多问题,更主要的门槛还是在工具链和具体实践上。


本文尽可能从 Flash 开发者的角度阐述如何转入 quick 体系。


项目地址:https://github.com/dualface/quick-cocos2d-x


从 Flash 的角度看 quick-cocos2d-x 体系

Flash 实际上是一个工具链,包含了从设计、开发、生成、运行的全套工具。主要由几个部分组成:


  • Flash Professional:制作 Flash 动画的工具
  • Flash Builder:一个基于 Eclipse 的 IDE,以及 Flex SDK
  • Flash Player:在浏览器中运行 SWF 文件的播放器
  • AIR:在桌面和移动设备上运行 SWF 文件的播放器

在开发基于 Flash 的游戏时,不管使用什么框架,最底层都是 Flash Player 提供的一系列 API。这些 API 完成了图像绘制、音乐播放、用户交互等功能。


而 quick-cocos2d-x 则由以下部分组成:


  • quick-cocos2d-x Runtime:游戏引擎
  • quick-cocos2d-x Player:播放器,负责在不同平台上初始化运行环境和游戏引擎,然后载入 Lua 脚本执行
  • tools:一些辅助工具,例如编译 Lua 脚本、创建自定义的 tolua++ 模块等等

quick-cocos2d-x Runtime 结构:


from_flash_to_quick_architecture.png


  • 最底层是操作系统提供的 OpenGL 库,可以利用硬件加速完成图像绘制(音乐在不同平台会使用不同 API,这里没有单独列出)。
  • 中间一层,首先是 C++ 编写的 cocos2d-x 引擎。这个引擎提供一个高性能的游戏开发基础架构,让开发者从不同平台的图像渲染、音乐播放、用户交互等细节中解脱出来。接下来用 tolua++ 这个辅助工具,将 cocos2d-x 引擎的 C++ 接口导入 Lua 环境,让 Lua 脚本可以调用 cocos2d-x 的 API。最后,LuaJIT 提供了一个高性能的 Lua 虚拟机,在支持 JIT 的平台上,可以以接近 C 语言的速度运行 Lua 脚本。
  • Lua Objc/Java Bridge 则是 quick-cocos2d-x 专为游戏集成各种第三方库提供的便捷工具,可以大大降低游戏接入渠道的成本。
  • 顶层的 quick framework 是在 cocos2d-x 接口基础上进行的封装,简化了大部分游戏开发时的常用功能。


虽然 quick 已经提供了 iOS/Android/Windows/Mac 平台的 Player,但如果需要添加自己的第三方库,或者对 quick 做一些扩展,那么就需要安装各个平台自己的开发工具,才能够完成自定义 Player 的创建工作:


from_flash_to_quick_build_toolchain.png


准备构建环境

只有准备自己构建 Player 时才需要准备构建环境。quick-cocos2d-x 提供了功能完善的 Windows 和 Mac 平台下的 Player,可以满足绝大多数情况下的开发需要。具体内容请参考本文下一小节。


第一步自然是获取 quick-cocos2d-x 的源代码。


  • 安装 git 工具,然后下载 quick-cocos2d-x 仓库:

    [size=0.9em]git clone git://github.com/dualface/quick-cocos2d-x.git
  • 完成后,在 quick-cocos2d-x 目录执行命令(由于要下载几百兆的 cocos2d-x,所以耗时较长):

    [size=0.9em]git submodule initgit submodule update

注意:不能使用官方版 cocos2d-x,因为 quick-cocos2d-x 为了加强 Lua 执行,对 cocos2d-x 做了许多改进。


配置 Mac 下的开发环境

准备工作:


  • 从 Apple 网站下载安装最新版 Xcode(已经包含 Mac SDK 和 iOS SDK)
  • 启动 Xcode,选择菜单“Xcode -> Preferences”,打开 Preferences 对话框。切换到 Locations 选项卡,选中“Source Trees”选项卡。并添加一个名为 QUICK_COCOS2DX_ROOT 的变量,其值为 quick-cocos2d-x 所在目录:

    from_flash_to_quick_set_xcode.png

  • 进入命令行,输入:

    [size=0.9em]open -a TextEdit ~/.profile

    添加内容(将其中的 [PATH TO] 替换为实际目录):

    [size=0.9em]export QUICK_COCOS2DX_ROOT=/[PATH TO]/quick-cocos2d-xexport COCOS2DX_ROOT=$QUICK_COCOS2DX_ROOT/lib/cocos2d-x

注意:必须使用绝对路径。


设置完成后,打开 quick-cocos2d-x/samples/CoinFlip/proj.ios/CoinFlip.ios.xcodeproj 项目,如果编译成功,那么构建 Mac 和 iOS 平台应用的环境就搭建好了。


  • 从 Google 网站http://developer.android.com/sdk/index.html下载最新的 Android SDK(强烈建议下载 ADT Bundle 版本)。
  • 解压缩以后,运行 tools/android 程序,打开 Android SDK 管理器:

    from_flash_to_quick_set_android_mac.png

  • 由于 quick-cocos2d-x 最低支持 Android 2.2 版,所以选中 Android 2.2 SDK,然后下载安装即可。

  • 下载 Android NDK r8b 版本并解压缩(由于 NDK 的特殊性,所以对版本有特定要求),Mac 版下载地址:http://221.176.14.87/dl.google.com/android/ndk/android-ndk-r8b-darwin-x86.tar.bz2,Windows 版下载地址:http://221.176.14.96/dl.google.com/android/ndk/android-ndk-r8b-windows.zip

  • 再次修改 ~/.profile 文件,加入以下内容:

    [size=0.9em]export ANDROID_SDK_ROOT=/[PATH TO]/android-sdk-macosxexport ANDROID_NDK_ROOT=/[PATH TO]/android-ndk-r8b
  • 在命令行模式下进入 quick-cocos2d-x/samples/CoinFlip/proj.android/ 目录,执行命令 build_native.sh,如果最后输出以下内容就表示创建成功:

    [size=0.9em]SharedLibrary: libgame.soInstall : libgame.so => libs/armeabi/libgame.so

配置 Windows 下的开发配置

quick-cocos2d-x 要求安装 Visual Studio 2012(Express 版或者更高级版本都可以),以及最新的显卡驱动(否则可能出现 Player 无法运行的问题)。


  • 打开系统对话框,添加一个环境变量 QUICK_COCOS2DX_ROOT,指向 quick-cocos2d-x 所在目录:


    from_flash_to_quick_set_windows.png


  • 打开 quick-cocos2d-xsimulatorproj.win32LuaHostWin32LuaHostWin32.sln 工程,进行编译。


用 quick-cocos2d-x 的 Player 打造最简开发环境

只需要从https://github.com/dualface/quick-cocos2d-x网站直接下载最新版本的 Windows 或 Mac 平台下的 Player 执行文件,我们就可以开始进行游戏开发了。


以 Windows 环境为例:


一切正常的话,点击 Open Project 按钮后就可以看到 CoinFlip 示例程序的画面了:


from_flash_to_quick_run_luahostwin32_ok.png


quick-cocos2d-x 的 Player 提供了创建运行项目、动态切换分辨率、实时调试窗口、一键重启等功能,在开发实践中可以显著提高开发效率。


使用 quick-cocos2d-x 的典型开发流程:


  • 对于一个团队中的大多数开发人员来说,只需要使用 Player 就能完成大部分开发工作。不需要他们安装诸如 Xcode、Visual Studio 等任何开发工具。

  • 如果游戏包含 C/C++ 的扩展代码,由具备完整开发环境的开发人员构建一个自定义 Player ,并分发给整个团队即可。

  • 需要真机测试或发布时,由具备相应开发环境的开发人员编译并输出 .ipa 或 .apk 文件。配合 TestFlight 等第三方 SDK,可以轻松实现错误日志、崩溃记录等功能,为调试提供详细数据。

分享到:
评论

相关推荐

    cocos2d-x 动画工具 Flash2Cocos2d-x 1.3

    cocos2d-x 动画工具 Flash2Cocos2d-x 1.3

    Cocos2d-x 3.2 自动更新 -- 使用AssetsManager更新游戏资源包

    Cocos2d-x 3.2 自动更新 使用AssetsManager更新游戏资源包

    FlashToCocos2d-x

    COCOS2D-X 直接支持 FALSH, 支持ANDROID、IOS

    cocos2d-x播放flash序列帧示例

    cocos2d-x播放flash序列帧示例 可参考博文 http://blog.csdn.net/piao_polar/article/details/12765621

    十字消除 cocos2d-x

    素材取自网上的Flash游戏,逻辑及算法自己实现,第一次写游戏,写的会比较粗糙,使用的Cocos2d-x版本为2.0.1,不同的版本可能会编译不了,需要进行一些稍微的改动,压缩包已经包含了运行文件。 博客地址:...

    cocos2d-x 转node c++

    cocos2d-x c++ flash转成node对象,利用骨骼做动画。

    DragonBones2.2.1修改版,支持cocos2d-x

    使用DragonBones制作Cocos2d-x支持的骨骼动画。 DragonBones绝对比CocoStudio和CocosBuilder好用太多! 基于Flash CS6开发,在FlashCS6时间轴中调整动作,直接输出! 教程:http://zengrong.net/post/1911.htm

    CCHierarchiesSpriteX:在 cocos2d-x 中渲染 flash 动画,cocos2d-x 的动画精灵扩展,基于像骨骼这样的层次结构节点

    render flash animation in cocos2d-x, a animation sprite extension for cocos2d-x, base on hierarchies node like bone. Sprite类 CCHierarchiesSprite类更注重动画播放性能,通过缓存动画数据获得更高的运行...

    QuickSWF:quick-cocos2d-x开发UI导出工具,将swf中的元件布局信息导出成图片和json配置文件

    quick-cocos2d-x开发UI导出工具,将swf中的元件布局信息导出成图片和json配置文件。 使用flashdevelop开发的AIR程序 目录说明 release 工具安装文件,支持 Mac,Win QuickSWF 工具ActionScript源代码 scripts quick-...

    CocoStudio

    CocoStudio是一套基于Cocos2D-X引擎的工具集,包括UI编辑器、动画编辑器、场景编辑器和数据编辑器四个工具。 UI编辑器,主要是便于编辑UI,支持碎图合并,自定义UI; 动画编辑器,可以合并碎图,导入Flash,设置参考...

    CSArmature+DragonBones

    实用于解决cocos2d-x动画实现,可以在少量关键帧,资源,内存的情况下实现平滑的动画,自动补间,从此以后动画实现就交给美术吧,因为只需要flash上编辑动画就可以在cocos2d-x上运行。这个包里面是CSArmature喝...

    FlashToCocos2d cocos2d关节动画工具

    在网上找的Cocos2d 版 关节动画工具(类似 国内的Cocos2d-x 版) 英文参考: This tool provides a fast way of reusing animations made in Flash CS in Cocos2D projects. A minimaly tweaked version of the ...

    CocoStudio v0.2.4.0

    CocoStudio是一套基于Cocos2D-X引擎的工具集,包括UI编辑器、动画编辑器、场景编辑器和数据编辑器。UI编辑器和动画编辑器主要面向美术,而场景编辑器和数据编辑器面则面向游戏策划,这四个工具合在一起构成了一套...

    CocoStudio v0.2.4.0.zip

    CocoStudio是一套基于Cocos2D-X引擎的工具集,包括UI编辑器、动画编辑器、场景编辑器和数据编辑器。UI编辑器和动画编辑器主要面向美术,而场景编辑器和数据编辑器面则面向游戏策划,这四个工具合在一起构成了一套...

    CocoStudio 0.2.4.1

    CocoStudio是一套基于Cocos2D-X引擎的工具集,包括UI编辑器、动画编辑器、场景编辑器和数据编辑器四个工具。 UI编辑器,主要是便于编辑UI,支持碎图合并,自定义UI; 动画编辑器,可以合并碎图,导入Flash,设置...

    GAFSlotMachine:使用 GAF 的最简单演示

    Windows - Cocos2d-x v3.3 iOS - Cocos2d-x v3.3 安卓 - Cocos2d-x v3.3 Windows Phone 8 - Cocos2d-x v3.3 即将到来的 Linux 项目 好处 GAF Converter 分析每个 SWF 文件的字节码并创建一个 GAF 文件,该文件...

    CocoStudio V 0.1.7

    更新场景编辑器,适配新版cocos2d-x 2.1.4,支持cocos2d-x全部组件。 增加:场景编辑器解析 JsonReader。 增加:加载场景例子。 UI编辑器: 将UI,场景,动画三个编辑器的打开路径使用不同节点保存在配置文件中;...

    CocoStudio(cocos2dx编辑器,集合动作,UI,等)

    About CocoStudio is a game development tool kit based on Cocos2d-x. It breaks down tasks in game development into different roles, it includes: UI editor for UI graphic artists, Animation editor for ...

    cocos2d骨骼动画说明

    这是一个骨骼动画,支持flash导出,这是一个PDF文档,上传为了方便以后找到

    godot_sam:用于加载 SAM(超级动画格式)的 GoDot 引擎模块

    GoDot Engine 模块,用于加载 SAM(超级动画格式)代码从 cocos2d-x 加载器移植到 GoDot 引擎。 这是在行动: : #Super Animation:Super Animation Format 是一种自定义的 Flash 动画导出格式。 该格式的 cocos...

Global site tag (gtag.js) - Google Analytics