基於 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 多個平台, 一方面用它生成的程序可以跨平台部署, 另一方面它本身也可以跨平台部署, 本文后面會演示如何編譯 OSX 和 iOS 下的 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.cpp 和 LuaBinding.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.ios 和 proj.mac 就是我們本次打算編譯的, 用 XCode 7.3.1 打開項目文件, 直接編譯即可, 在編譯 proj.ios 時如果連接了真機並且選擇了它則可以把生成的目標文件安裝到真機上, 這樣你就可以在 iPad 上運行 Dorothy 了.
- 注意: 在編譯
proj.ios時請把XCode的Build Setting中的bitcode選項關閉, 否則會因為一個第三方庫文件./lua/lib/ios/libluajit.a沒有支持bitcode而導致鏈接錯誤.
運行界面
主界面:
截圖:

最上面一行是4個編輯器
中間是用 Dorothy 生成的一些例子
Action Editor
截圖:

Body Editor
截圖:

Effect Editor
截圖:

Scene Editor
截圖:

現在完成度比較高的是 Action Editor, Body Editor 和 Scene 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/Sprite 和 Graphics/Model 打開大多數情況下都是空的
如何把示例編譯成獨立的應用程序
參考
感謝軟件作者提供的幫助
