使用 cocos2d-x 和 Lua 快速开发游戏(1)
cocos2d-x 提供了对 Lua 脚本的支持,让我们可以使用简单易懂的 Lua 语言进行游戏的快速开
发。在游戏中,涉及到用户界面构造与交互、场景管理、角色逻辑等内容,完全可以使用 Lua
完成,而不需要借助 C++。
实际上,与 Corona SDK 这样 100% 使用 Lua 进行开发的游戏引擎相比,cocos2d-x + Lua 不
但有显著的性能优势,而且在扩展能力上也不受任何限制。当然,最重要的是 cocos2d-x + Lua
可以完全发挥出 cocos2d-x 的功能,同时又保持了简单易用的特点,对于绝大多数游戏来说都
是首选的解决
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
。
我公司正在开发的项目全都使用 cocos2d-x + Lua 完成,即便是快节奏的动作类游戏,也只有虚
拟世界部分使用了 C++,除此之外的内容均由 Lua 脚本完成。
为了回报 cocos2d-x 社区,我打算以系列文章的形式展示如何使用 cocos2d-x + Lua 快速开发
游戏。不过由于日常工作非常繁忙,大概只能 1-2 周才能更新⼀一篇。
目前暂定的提纲如下:
搭建 cocos2d-x + Lua 快速开发环境
cocos2d-x + Lua 的基本使用方法和要点
用 Lua 游戏框架进⼀一步提高开发效率
导出自定义 C++ 对象到 Lua 中
在 C++ 和 Lua 间传递数据与对象
Lua 中的异步网络请求
编译并加密 Lua 脚本
发布游戏
文章中涉及到的开发工具及其下载地址:
cocos2d-x: https://github.com/cocos2d/cocos2d-x
ios-sim: 从命令行启动 iOS 模拟器(Mac 平台),https://github.com/appcelerator/ios-sim
搭建 cocos2d-x + Lua 快速开发环境
在 Mac 和 Windows 平台下,cocos2d-x + Lua 的开发环境有些区别。但基本思路完全⼀一致:
首先编译出支持 Lua 脚本的可执行文件,并将这个可执行文件视为⼀一个运行环境(后文简
称为 HOST)
然后直接修改脚本文件和资源文件,并重启 HOST 查看修改效果
下面就分别叙述不同平台下开发环境的搭建步骤。
搭建 Mac 平台的 HOST 运行环境
因为 cocos2d-x 对 Lua 的支持在不断改进中,所以最好从 github.com 下载最新 master 分支的
cocos2d-x 源代码来编译 HOST。拿到最新源代码后,⼀一定要记得执行 sudo install-templates-
xcode.sh -f 重新安装模版。
准备工作做好后,新建⼀一个 LuaHost 项目,使用 cocos2dx_lua 模版,并设置为在模拟器中运
行。由于 iOS 5.x 的模拟器有⼀一个 bug,会在游戏运行时输出大量无关的警告信息,影响我们调
试开发,所以还要在 Xcode 中设置运行目标为 iOS 4.3 模拟器。
接下来,修改 AppDelegate.cpp 文件,将 applicationDidFinishLaunching() 函数中载入 Lua 脚
本的代码做⼀一些修改。
改动前:
string path = CCFileUtils::fullPathFromRelativePath("hello.lua");
pEngine->addSearchPath(path.substr(0, path.find_last_of("/")).c_str());
pEngine->executeScriptFile(path.c_str());
改动后:
string path = CCFileUtils::fullPathFromRelativePath("scripts/");
pEngine->addSearchPath(path.c_str());
path = CCFileUtils::fullPathFromRelativePath("scripts/main.lua");
CCLOG("\nLOAD LUA FILE: %s\n", path.c_str());
pEngine->executeScriptFile(path.c_str());
代码改动的目的是让我们可以将 Lua 脚本放置在单独的目录中。因此代码改动完成后,还要在
Resources 目录中新建子目录 scripts,并将 hello.lua 和 hello2.lua 移动到 scripts 目录中,以及
把 hello.lua 改名为 main.lua。
最后,在 Xcode 中添加 scripts 目录到资源组中,添加方式选择“Create folder references for
any added folders”:
添加完成后,在 Xcode 的 Resources 组中会看到⼀一个蓝色的 scripts 项,如下图:
现在编译并运行项目,如果没问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
就可以看到游戏画面了。如果有问题,请仔细检查上述步骤 :)
提取 HOST
⼀一旦 HOST 编译成功,我们就可以抛弃 Xcode 了。找到
~/Users/dualface/Library/Developer/Xcode/DerivedData/LuaHost-……../Build/Products/Debug-
iphonesimulator/ 目录,即可发现编译出来的 LuaHost.app 文件。
将这个文件(实际上是⼀一个目录)复制到其他位置(例如桌面上)。
编译 ios-sim 工具
从 https://github.com/appcelerator/ios-sim 下载源代码,编译成功后,将 ios-sim 执行文件复制
到 LuaHost.app 所在位置。
创建启动脚本
在 LuaHost.app 所在目录,创建名为 testapp.sh 的脚本文件,内容如下:
#!/usr/bin/php
$mtime)
{
if (!isset($lastState[$path]) || $lastState[$path] != $mtime)
{
$isUpdated = true;
break;
}
unset($lastState[$path]);
}
if (!empty($lastState)) { $isUpdated = true; }
}
$lastState = $state;
return $isUpdated;
}
现在打开命令行窗口,切换到 LuaHost.app 所在目录,输入命令:
./testapp.sh LuaHost.app
顺利的话可以看到 iOS 模拟器启动,并显示出游戏画面:
至此,我们的开发环境就搭建完成了。
开始快速开发
在 LuaHost.app 文件上右键点击,选择菜单“查看包内容”就可以看到 LuaHost.app 中的所有文
件,其中就有资源文件和 scripts 目录。使用任何编辑器,打开 LuaHost.app/scripts/ 目录对其
中的 Lua 脚本进行修改,修改保存后模拟器会立即重新启动。
为了进⼀一步简化开发步骤,可以对游戏源文件目录中的 Resources 目录进行规划,将所有图片
放入 images 目录。脚本中用到图片的地方加入 “images/” 前缀。在编译出来的 LuaHost.app
里,则将 images 和 scripts 目录替换为符号连接,这样只需要修改源文件目录中的文件即可。
搭建 Windows 平台的 HOST 运行环境
与 Mac 平台没有本质区别,只是编译出来的 LuaHost.win32.exe 文件在脱离 Visual Studio 环境
运行时,需要和相关 .dll 放置在⼀一起。
运行目录中需要有如下文件:
LuaHost.win32.exe
*.dll
images 和 scripts 子目录
Windows 平台下,最新的 cocos2d-x 已经做了特别处理,提供了两个热键:
CTRL+X: 退出 HOST
CTRL+R: 重启 HOST
如果需要查看游戏运行时的调试输出,可以修改 main 文件,将 #define
USE_WIN32_CONSOLE 这⼀一行的注释删除掉。这样编译后的 HOST 执行时会显示⼀一个命令行
窗口,其中包含所有的调试输出。
如果要在没有安装 Visual Studio 的 Windows 环境中运行 LuaHost.win32.exe,需要安装
DirectX 9.0c,以及 Visual C++ 2010 Redistributable 或 Visual C++ 2008 Redistributable(两者
之⼀一即可,以编译 LuaHost.win32.exe 的 Visual Studio 版本为准)。
上述文件下载地址:
DirectX 9.0c: http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=2da43d38-
db71-4c1b-bc6a-9b6652cd92a3
Visual C++ 2010 Redistributable: http://www.microsoft.com/downloads/zh-cn/details.aspx?
familyid=a7b7a05e-6de6-4d3a-a423-37bf0912db84
Visual C++ 2008 Redistributable: http://www.microsoft.com/downloads/zh-cn/details.aspx?
FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2
步骤概要
1. 获取 cocos2d-x 最新源代码
2. 安装模版
3. 创建 cocos2d-x + Lua 项目
4. 对项目进行修改,调整载入 Lua 脚本的目录,以及打开调试输出窗口(Win32 版)
5. 将生成的 HOST 执行文件提取到独立目录中
6. 使用脚本启动 HOST(Mac 平台)
本篇内容结束,预知后事如何,请听下回分解 :-D