基于 Cocos2d-x-lua 的游戏开发框架 Dorothy 简介

概述

Dorothy 是一个在 Cocos2d-x-lua 基础上发展起来的分支, 它去掉 Cocos2d-x-lua 那些过多的扩展, 并且做了一定程度的优化, 目前提供了以下4种编辑器:

  • Action Editor: 2D骨骼动画编辑器
  • Body Editor: 物理编辑器
  • Effect Editor: 特效编辑器(目前只有粒子系统编辑器)
  • Scene Editor: 场景编辑器(用于组织游戏逻辑)

它支持 Windows/OSX/iOS/Android 多个平台, 一方面用它生成的程序可以跨平台部署, 另一方面它本身也可以跨平台部署, 本文后面会演示如何编译 OSXiOS 下的 Dorothy.

下面是作者对软件的说明:

Dorothy是Cocos2d-x-Lua的另一个分支,基于原始版本2.1rc0版再次开发的框架。之所以开始在这个版本上做自定义的开发,是因为我在跟随原版的更新,持续做开发的过程中,发现它的功能渐渐变得又多又杂,吸纳了各式各样的扩展,光是骨骼动画的扩展就重复增加了两套代码。并且它的扩展的开发我觉得定制得也不够深入,除了引入更多bug坑以外,并没有简化太多的开发工作。此外原版的Lua接口是几乎完全依赖tolua++自动生成的,导出了很多没有意义的接口,并生成很多冗余的绑定代码,并且tolua++的绑定机制也太过于通用化,没有很好地利用Cocos2d-x的特性。

所以一方面为了精简核心框架,另一方面又提供更加深度定制的辅助框架,优化Lua绑定代码,我渐渐地竟然写出了这样一个分支版本来。

这个分支提供了更加精简的API接口。移除了原版中不是特别核心的扩展功能,添加了更有用的特性,修复了原版的一些bug,并且改善了Lua绑定的核心代码和tolua++生成的绑定代码。

更详细的介绍可以参考作者的博客 Dorothy是什么

下载编译

克隆代码

Dorothy 全部开源, 代码托管在开源中国的码云平台 Dorothy, 可以通过如下命令来克隆到本地:

git clone https://git.oschina.net/pig/Dorothy

操作记录如下:

Air:GitHub admin$ git clone https://git.oschina.net/pig/Dorothy
Cloning into 'Dorothy'...
remote: Counting objects: 18984, done.
remote: Compressing objects: 100% (9631/9631), done.
remote: Total 18984 (delta 12342), reused 14253 (delta 8531)
Receiving objects: 100% (18984/18984), 74.15 MiB | 306.00 KiB/s, done.
Resolving deltas: 100% (12342/12342), done.
Checking connectivity... done.
Checking out files: 100% (1783/1783), done.
Air:GitHub admin$
  • 注意: 克隆地址要写成 https:// 的形式, 否则会出错

执行编译前脚本

接着要执行一下 ./Dorothy/tools/tolua++ 目录下的 build.sh 命令, 以便生成编译所需要的 LuaCode.cppLuaBinding.cpp 文件, 操作记录如下:

Air:tolua++ admin$ ./build.sh
Binding files generated!
Air:tolua++ admin$ pwd
/Users/admin/GitHub/Dorothy/tools/tolua++

编译

项目文件保存在 ./Dorothy/project 目录下, 如下所示:

Air:Dorothy admin$ cd project/
Air:project admin$ pwd
/Users/admin/GitHub/Dorothy/project
Air:project admin$ ls -al
total 16
drwxr-xr-x 9 admin staff 306 7 18 14:10 .
drwxr-xr-x 25 admin staff 850 7 18 14:10 ..
-rw-r--r--@ 1 admin staff 6148 7 18 18:55 .DS_Store
drwxr-xr-x 4 admin staff 136 7 18 14:06 Classes
drwxr-xr-x 11 admin staff 374 7 18 15:33 Resources
drwxr-xr-x 17 admin staff 578 7 18 14:06 proj.android
drwxr-xr-x 12 admin staff 408 7 18 14:18 proj.ios
drwxr-xr-x 5 admin staff 170 7 18 14:11 proj.mac
drwxr-xr-x 10 admin staff 340 7 18 14:06 proj.win32
Air:project admin$

其中 proj.iosproj.mac 就是我们本次打算编译的, 用 XCode 7.3.1 打开项目文件, 直接编译即可, 在编译 proj.ios 时如果连接了真机并且选择了它则可以把生成的目标文件安装到真机上, 这样你就可以在 iPad 上运行 Dorothy 了.

  • 注意: 在编译 proj.ios 时请把 XCodeBuild Setting 中的 bitcode 选项关闭, 否则会因为一个第三方库文件 ./lua/lib/ios/libluajit.a 没有支持 bitcode 而导致链接错误.

运行界面

主界面:

截图:

最上面一行是4个编辑器

中间是用 Dorothy 生成的一些例子

Action Editor

截图:

Body Editor

截图:

Effect Editor

截图:

Scene Editor

截图:

现在完成度比较高的是 Action Editor, Body EditorScene Editor, Effect Editor 中还有一个帧动画模块没完成.

经过一番研究, 终于明白如何做骨骼动画了, 下一篇介绍如何用 Action Editor 生成一个2D骨骼动画.

示例

在目录 ./project/Resources/Dev 下保存着示例的代码, 如下:

Air:Resources admin$ tree Dev/
Dev/
├── Entry.lua
├── Sample
│   ├── Body.lua
│   ├── BodyEditor.lua
│   ├── DorothyXml.xml
│   ├── Moon.moon
│   ├── Sensor.lua
│   ├── Unit.lua
│   ├── Unit1
│   │   ├── bk.jpg
│   │   ├── boy.lua
│   │   ├── girl.lua
│   │   └── miku.lua
│   └── Unit1.lua
└── Test
└── TestBase.lua 3 directories, 13 files
Air:Resources admin$

如果已经编译好了, 那么应用程序会读取 /Applications/Dorothy.app/Contents/Resources/Dev 下的资源, 比较一下, 发现完全一样.

Air:Dev admin$ pwd
/Applications/Dorothy.app/Contents/Resources/Dev
Air:Dev admin$ tree
.
├── Entry.lua
├── Sample
│   ├── Body.lua
│   ├── BodyEditor.lua
│   ├── DorothyXml.lua
│   ├── DorothyXml.xml
│   ├── Moon.lua
│   ├── Moon.moon
│   ├── Sensor.lua
│   ├── Unit.lua
│   ├── Unit1
│   │   ├── bk.jpg
│   │   ├── boy.lua
│   │   ├── girl.lua
│   │   └── miku.lua
│   ├── Unit1.lua
│   └── myXml.xml
└── Test
└── TestBase.lua 3 directories, 16 files
Air:Dev admin$

所以如果想要修改编译好的 Dorothy 里的例程, 比如新增一个 myXml.xml, 直接把新文件拷贝到该目录下的 Sample 文件夹中即可.

使用中发现的问题

因为本项目还在持续更新中, 所以用起来还存在一些小问题

主要是移动端版本的问题

移动端如何导入/导出文件, 比如 Action Editor 如何导入资源文件, 如何导出模型文件

场景编辑器里的 Grapics/SpriteGraphics/Model 打开大多数情况下都是空的

如何把示例编译成独立的应用程序

参考

感谢软件作者提供的帮助

Dorothy官方文档

基于 Cocos2d-x-lua 的游戏开发框架 Dorothy 简介的更多相关文章

  1. 基于C++/Lua的游戏服务器如何实现?

    1.首先要自己实现一个网络库,或者选择已经开源的网络库.比如:muduo.libevent.boost的asio等.2.实现核心功能:连接管理,消息管理,定时器,事件机制,Lua脚本引擎,程序模块管理 ...

  2. Atitit 游戏的通常流程 attilax 总结 基于cocos2d api

    Atitit 游戏的通常流程 attilax 总结 基于cocos2d api 加载音效1 加载页面1 添加精灵1 设置随机位置2 移动2 垃圾gc2 点击evt2 爆炸效果3 定时生成精灵3 加载音 ...

  3. 基于Lua的游戏服务端框架简介

    基于Lua的游戏服务端框架简介 [转]https://gameinstitute.qq.com/community/detail/106396 基于lua的游戏服务端框架简介 1. 引言 笔者目前在参 ...

  4. CosmosEngine - Unity3D /2D 轻量级游戏开发框架

    CosmosEngine https://github.com/mr-kelly/CosmosEngine 快速入门 简介 特性 约定 整体架构图 使用经验 工作流 未来功能 快速入门 1.将NGUI ...

  5. 一个简单的游戏开发框架(四.舞台Stage)

    首先是StageManager类: class StageManager : public Singleton<StageManager> { friend class Singleton ...

  6. 初识phaser框架——开源的HTML5 2D游戏开发框架

    背景: 在网上看到,65行实现flappy bird,感到很好奇.原来是使用开源的2D游戏框架 phaser开发的. 什么是phaser2D游戏开发框架呢? 借鉴与网上的资料: 1.    Phase ...

  7. [Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘终结篇:UniLua热更新全然解读

    ---------------------------------------------------------------------------------------------------- ...

  8. Lua与游戏的不解之缘

    本文转载自秦元培博客:blog.csdn.net/qinyuanpei 一.什么是Lua? Lua 是一个小巧的脚本语言,巴西里约热内卢天主教大学里的一个研究小组于1993年开发,其设计目的是为了嵌入 ...

  9. [Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(下)

    ---------------------------------------------------------------------------------------------------- ...

随机推荐

  1. Leetcode题库——34.在排序数组中国查找元素的第一个和最后一个位置

    @author: ZZQ @software: PyCharm @file: searchRange.py @time: 2018/11/12 19:19 要求:给定一个按照升序排列的整数数组 num ...

  2. 第五次作业——python效能分析与几个问题(个人作业)

    第五次作业--效能分析与几个问题(个人作业) 前言 阅读了大家对于本课程的目标和规划之后,想必很多同学都跃跃欲试,迫不及待想要提高自身实践能力,那么就从第一个个人项目开始吧,题目要求见下. 阅读 阅读 ...

  3. JDBC连接数据库代码和步骤

    JDBC连接数据库 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序  在连接数据库之前,首先要加载想要连接的数据库的驱动,这通过java.lang.Class类的静态方法 ...

  4. iOS- Exception Type: 00000020:什么是看门狗机制

      1.前言    前几天我们项目闪退之后遇到的一个Crash,之后逛了许多论坛,博客都没有找到满意的回复  在自己做了深入的研究之后,对iOS的看门狗机制有了一个基本的了解  而有很多奇怪的Cras ...

  5. 解决tomcat登录需要给角色授权

    1:编辑/usr/local/tomcat/conf/tomcat-users.xml文件,在没有注释的内容中添加: <role rolename="manager-gui" ...

  6. 软工网络15团队作业8——Beta阶段敏捷冲刺(Day6)

    提供当天站立式会议照片一张 每个人的工作 1.讨论项目每个成员的昨天进展 赵铭: 数据库整理. 吴慧婷:我的世界界面完成部分. 陈敏: 我的世界功能--学习情况功能完成. 吴雅娟:我的世界功能--学习 ...

  7. pygame学习笔记(1)——安装及矩形、圆型画图

    pygame是一个设计用来开发游戏的python模块,其实说白了和time.os.sys都是一样的东东.今天开始正式学习pygame,下载地址:www.pygame.org.下载后安装完成即可,在py ...

  8. 事件ID:7026(“下列引导或系统启动驱动程序无法加载: cdrom”)的解决方法

     电脑没有安装光驱,而是使用USB光驱/虚拟光驱软件,每次开机后"事件查看器"都显示错误:"下列引导或系统启动驱动程序无法加载: cdrom"(事件ID:7 ...

  9. Java代码中谁拿到了锁?

    我们都知道当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须释放锁.这些基础也许大家都知道,但是很多人还是搞不清哪个对象才是锁?如果你能正确回答以下问题,那么才算你彻底搞明白了哪个 ...

  10. 将javaweb项目部署到阿里云服务器

    主要步骤:1. 购买阿里云服务器2. 远程连接3. 在云服务器上配javaweb环境:jdk,tomcat,MySQL4. 将项目的war文件放到Tomcat下关于云服务器ECS:如果还想在买服务器之 ...