从cocos2d-x-2.x到cocos2d-x-3.x: lua项目配置

cocos2dx-x3.0的正式版出来也有一段时间了,现在最新的版本是到了3.2alpha,和2.x系列相比,能够找到的相关资料除了官网上的wiki,其他的也不见得多,遇到的一些和2.x的差异和问题在这里记录下来备忘。

和2.x的shell脚本相比,3.x系列的配置全部python化了,最大的好处当然是跨平台,在windows下面也可以脱离cywin进行android版本的编译,虽然ios版本还是离不开xcode,但是可以mac和win分别编译不同版本的感觉还是不错的,省时省力。

先从python开始,在3.x的lua项目中除了android版本的编译,还有一个更重要的部分是lua-binding的生成,与2.x要在tolua++中手写.pkg文件不同,3.x所采用的bindings-generator(位于cocos2d-x/tools下)基本上是全自动解析的,自己新加入的一些需要绑定的cpp类只需要添加(独立于cocos2d-x模块外的部分)或修改(修改cocos2d-x自身)一下cocos2d-x/tools/下的ini文件即可,确实方便了不少,但是相对的配置的麻烦也出来了。

想要通过执行cocos2d-x/tools/tolua/下的genbindings.py来生成对应的绑定文件(位于cocos2d-x\cocos\scripting\lua-bindings\auto,也可以通过修改genbindings.py文件来生成到不同路径下),就得先准备好python,python的两个插件,ndk。这里的python也可以用于3.x项目文件的生成以及android版本的编译,项目生成在后面再说,虽然有些因果倒置,但是还是提前从这里入手。

在cocos2d-x\tools\tolua下面的README.mdown以及官网的wiki上有记载怎么样安装,这里单独说一下windows版的配置,就windows版需要手动diy的部分比较多:

1.readme中说需要的是ndk:android-ndk-r9b,现在官网最新的版本是android-ndk-r9d,建议用最新版本,根据操作系统选择32位或64位的版本,要和后面的adt和jdk保持一致,但是如果用r9c和r9d的话,需要将tolua下的ini里面的android_headers中的4.7改为4.8,这也就是为什么readme中要求用r9b的原因,(另外提一句如果用r9c在生成的时候还会出错,需要根据报错的地方修改ndk中对应的math.h文件注释掉出错的那一行),下好后解压,然后将解压的路径新增到环境变量的NDK_ROOT中

2.安装python, (32bit) from (http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi). 这个就严格按照要求来,注意是32位版本的,64位版本的装不了所需的两个插件。装好后将python的安装路径加到环境变量PATH里,重开cmd命令行输入python看看有没有即可验证。接着装pyyaml: http://pyyaml.org/download/pyyaml/PyYAML-3.10.win32-py2.7.exe 以及pyCheetah :https://raw.github.com/dumganhar/cocos2d-x/download/downloads/Cheetah.zip, 下下来解压到 python路径的“Python27\Lib\site-packages”里

这样一来就万事俱备了,在cmd的tolua路径下运行python genbindings.py,然后就可以生成lua绑定了。

说完这个,回到开始的项目配置,python这个主角已经装好了,ndk也入住了,要通过cocos2d-x下面的setup.py生成新项目还需要一些其他的东西,基本都是用来编译android项目的:

adt:Android Development Tools,注意32位还是64位的版本,和ndk以及jdk保持一致,这个决定了android的api level,可以通过附带的skdmanager来下载不同版本android的api用于编译。下载好后解压,然后在环境变量中新增ANDROID_SDK_ROOT指向此路径下的sdk目录。以后可以用这个里面的eclipse来debug生成的android项目

jdk:Java SE Development Kit,依然注意32位还是64位版本,和ndk以及adt保持一致,一定是jdk,仅有jre是不行的。下载好后安装,安装完成后在环境变量中新增JAVA_HOME指向此路径,可以在cmd中输入java和javac都能有输出来验证

ant:Apache Ant,用于辅佐编译android项目(Apache Ant is a Java library and command-line tool that help building software),下载好后加压,在环境变量中新增ANT_ROOT指向此路径下的bin目录,然后再加入PATH中,可以在cmd中输入ant验证

最后,添加一个环境变量COCOS_CONSOLE_ROOT指向“cocos2d-x-3.x\tools\cocos2d-console\bin”这个路径,然后就可以在cmd中到cocos2d-x-3.x的路劲中运行python setup.py。这样一切都搞定了(?),在cmd中运行cocos,可以创建项目,编译项目等等一条龙服务。创建一个新项目:cocos new MyGame -p com.MyCompany.MyGame -l lua -d ./MyCompany ,-p后面接的是android的包名, -l可以选择cpp或者lua,-d就是目录了,这样实际上是根据不同的项目模板(cocos3.x/tests下面)来生成新的工程配置文件。

生成之后cmd进入该目录,可以输入cocos compile -h看看编译的参数表,3.2alpha新增了不少选项,有待尝试。-p android可以生成android项目,--ap 后面的参数就是adt里android的api level,还有一个比较有用的--ndk-mode,除了debug和release以外还可以选择clean作为参数重新编译项目。

cocos这个命令所用到的python文件都在cocos2d-x-3.x\tools\cocos2d-console下面,编译android的在plugin目录下的project_compile/build_android.py,如果要添加其他需要编译的路径(比如说自己要用的cpp库),就可以修改这个文件,加入新的路径到NDK_MODULE_PATH

相比cocos2d-x-2.x那个windows系统需要在cywin下运行的build_native.sh来编译android工程,新的基于python的配置文件要更加自动化,脚本化一些,虽然在最开始也感觉这个cocos命令一下集成了许多的功能让人不知道从何下手,还不如2.x时候一个文件来得直接(3.x也可以一个文件,就是build_android.py来搞定,稍加配置然后python build_android.py -p apilevel myGame即可),但是经过一段时间的使用,无论从lua的绑定还是自动编译的过程而言,3.x这套脚本配置确实要进化了很多,当然,3.x相对于2.x进化的不只是在这方面,还有许多新的feature(坑)加入,这个请听下回分解。

从cocos2d-x-2.x到cocos2d-x-3.x: lua项目配置

时间: 2024-10-13 00:23:26

从cocos2d-x-2.x到cocos2d-x-3.x: lua项目配置的相关文章

cocos2D(三)---- 第一cocos2d的程序代码分析

在第一讲中已经新建了第一个cocos2d程序,执行效果例如以下: 在这讲中我们来分析下里面的代码,了解cocos2d的工作原理,看看屏幕上的这个"Hello World"是怎样显示出来的. 这是HelloWorld项目的代码结构: 以下,我们開始分析项目中的这些源文件: 从程序的入口点開始 这么多源文件在这里,到底先看哪个呢?有些人可能会先挑内容少的来看,认为这样就能够轻松解决掉一个源文件了.事实上这是不正确的,这样看起来更加是一头雾水,根本搞不清楚每一个源文件之间的联系.正确的做法应

【Cocos2d入门教程一】Cocos2d下安卓环境的搭建

在进行Cocos2d游戏开发前 我们先来配置一下环境,我们先来准备一下工具,我们所需要的工具分别为: 1.Cocos2d引擎 2.JDK 3.SDK 4.NDK 5.ANT 6.ADT 1.下载Cocos2d-x引擎,目前最新版本为3.6,本教程的所有例子以3.4版本为例,下载完直接解压即可.点击下载Cocos2d引擎 2.JDK 检查自己电脑上是否已装好JDK环境 方法:打开终端,输入 java–version 如果没有安装过,点击下载JDK 效果如下: 3.ADT下载,ADT被称为安卓的集成

cocos2d::Vector

v3.0 beta加入 定义在"COCOS2DX_ROOT/cocos/base"的"CCVector.h"头文件中. template<class T>class CC_DLL Vector; cocos2d::Vector<T>是一个封装好的能动态增长顺序访问的容器. cocos2d::Vector<T>中的元素是按序存取的,它的低层实现数据结构是标准模版库中的标准顺序容器std::vector. 在Cocos2d-x v3.

cocos2d::Value

cocos2d::Value 于v3.0beta加入 定义在"COCOS2DX_ROOT/cocos/base"的头文件"CCValue.h"中 class Value; cocos2d::Value是许多基本类型(int,float,double,bool,unsigned char,char*和std::string)还有std::vector<Value>, std::unordered_map<std::string,Value>和s

小尝试一下 cocos2d

好奇 cocos2d 到底是怎样一个框架,正好有个项目需要一个游戏框架,所以稍微了解了一下.小结一下了解到的情况. 基本概念 首先呢,因为 cocos2d 是基于 pyglet 做的,你完全可以直接用 pyglet 达到你想要的效果.但是,没必要重复造轮子. cocos2d 的基本概念包括了 director.scene.layer.框架的作者认为,写游戏和排练电影动画片差不多.director 呢就是导演的意思,scene 就是场景,layer 就是层次.对此,我们可以简单理解为,一个游戏有且

Cocos2d之cocos2d::Value实例分享

于v3.0beta加入 定义在"COCOS2DX_ROOT/cocos/base"的头文件"CCValue.h"中.推荐教程Cocos2d-x从零开始视频教程 class Value; cocos2d::Value是许多基本类型(int,float,double,bool,unsigned char,char*和std::string)还有std::vector, std::unordered_map和 std::unordered_map这些类的包装类型. 你可以

cocos2d相关

vs的一些概念: 解决方案,一个解决方案包含一或多个项目,具体信息可以看vs帮助页上的介绍(里面的插图很形象),链接:https://msdn.microsoft.com/zh-cn/library/b142f8e7.aspx 在解决方案属性页可以查看和设置项目依赖关系.启动项目 附加依赖项,项目中所使用的源文件的路径,新建的cocos项目的默认路径是Classes目录,而在vs IDE中新建项时的默认路径是项目根目录 vs里没有cocos2dx的模板,需要从命令行用 cocos new命令创建

Cocos2d Lua 入门小例子 一个记忆力游戏

1.游戏说明 一个"记忆"类的比赛游戏.你和电脑对战,轮到谁的回合,谁翻两张牌,如果两张牌一样,就消掉这两张牌,得2分,可以继续翻牌,如果两张牌不一样,就换一个人.直到最后,看谁的得分高. 游戏设计思想可以看这篇文章<Cocos2d 游戏状态机> 2. Lua 简单面向对象 我们知道Lua是脚本语言,不是真正面向对象语言.但是面向对象好像能让代码结构更加合理,Javascript, Lua都可以模拟出面向对象.Lua面向对象还有超多种方式实现,这里当然不一一介绍.简单来看个

Cocos2d-x3.0模版容器详解之三:cocos2d::Value

1.概述 版本: v3.0 beta 语言: C++ 定义在 "COCOS2DX_ROOT/cocos/base" 路径下的 "CCValue.h" 的头文件中. ? 1 class Value; cocos2d::Valie 是一个包含了很多原生类型(int,float,double,bool,unsigned char,char* 和 std::string)外加 std::vector<Value>, std::unordered_map<s

【Cocos2D研究院之游戏开发】

http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发] 201211-19 Cocos2D研究院之打开全新ViewController与返回(八) 雨松MOMO [Cocos2D研究院之游戏开发] 围观5745次 17条评论          之前cocos2d的文章都是由魏凯同学维护,从今天开始我也会抽时间写点cocos2d的文章.最近在研究如何将IOS游戏与软件结合起来.通常游