噩梦难度,从2.0升级到3.0

仅以此片献给 打算/正在 把cocos2dx2.0升级到3.0的程序员们!
从网上看,3.0,好处多多,尤其是性能有很大的提升!
本人经不住诱惑,也打算把项目从2.0升级到3.0,万万没想到,唉,不说了,想想就泪崩!

第一坑:编译。
2.0到3.0改动那个大,项目编译,没有一个文件能通过,全是大片大片的Error。好吧,慢慢改,总会清理掉了。
花了4天时间,总算清除了error,当然剩下成吨的warning,就是那个否决警告,直接略过(这里要说下,如果警告过多的话,vc最后连接会失败,提示pdb文件无法访问之类的)。
不要以为编译通过,就能运行了,下面碰到更大坑。
第二坑:lua脚本
我们项目中,现在不用脚本的很少,大多数项目都会用到脚本,我们项目中也用到了lua。
2.0到3.0,lua导出方式变化非常大,一个要写pkg,一个自动。没用过3.0的,想想自动导出类给lua,太牛叉了。
笔者也一下子被忽悠了。
先安装环境,你丫的,一定要xxx版本ndk,一定要xxx版本python。我们项目已经用到最新的ndk,你还要
我回退版本,ok,从被墙的google上下了ndk。
这里特别吐槽python版本要求,丫丫的,咱项目中也用到python做工具(x64版本),你丫的一定要32版本,好吧
为了导出C++类,忍了。
按说明,配好导出工具环境,太他妈的厉害了,果然自动导出。一运行程序,操,到处都是lua的错误。
这位写工具的兄弟只实现了类和类成员函数导出,真tmd的牛叉,这样子的完成度也好意思拿出来,一年多还只是这个程度。
2.0版本虽然要写pkg,怎么说,功能上,它是一点折扣都没打。
好吧,开源的好处就是,能亲自操刀。
第三坑:自动导出C++类工具
没有最坑,只有更坑。
工具是用python+cheetah+libclang写的。你丫的,一个导出功能,在python、cheetah和conversions.yaml三个里面转来转去,
这代码怎么维护!!!!
花了1个星期,总算能支持全局函数、枚举和类成员变量导出。
如果函数的参数和返回值,有类对象指针,会有bug,导出文件编译不通过。那绕过。
如果函数参数或者返回值是结构,更操蛋的,编译通过,实际不能用…

到这里了,感觉所有的坑都填完了吧,那你就大错特错了。居然 居然,lua回调函数不支持自动导出,需要手动写。
你丫的,文档里为什么不写,为什么不写,为什么不写,写了,老子绝对不用3.0

总结:
3.0对lua脚本的支持很不成熟,如果项目中用到lua,那么建议你用2.0,不要自己改自动导出工具。
至于3.0 C++方面的引擎,没有用过不做评价(没法用,升级失败了)。

建议:
3.0既然类名和方法名都有很大变动,就甭在向下兼容了,实际上那个所谓的向下兼容,根本就不可用。

C++导出给lua,搞cocos2dx的这位仁兄,似乎你只知道tolua++,难道你不知道这世界上还有个luabind吗,
用它绝对会让你自动导出工具简单N倍。至于luabind用到了boost,只需要把那几个文件copy出来就行了。

这里要吐槽tolua++,lua脚本里大量用到了tolua.cast,你丫的,我用一个函数,还要知道这个函数是子类还是父类,或者父父父子子子类,操蛋的东东。

本人用过luabind和tolua++,luabind功能上不比tolua++差,导出方式简单(就是要手动写),写lua脚本也方便,相对于tolua++,不需要用丑陋的tolua.cast

楼主消消气:7::7:版本升级确实挺蛋疼的,我当初也是2.X入门的,现在转3.X,Lua我没用过,用得是C++,感觉其实用习惯了就还行。
而且很多新功能都是在新版本里面才有的!像3D有关的,2.X根本就不会有。而且部分Bug的改动也是放在新版本里面,如何取舍还是看自己吧!

其实,现在我碰到的问题,主要是lua脚本这块!
当然后面的没机会,现在已经放弃升级了!

只是不爽的是,lua脚本这块,太坑爹了。
现在自动导出工具问题很严重,至少lua回调函数这块,自动导出工具是无解的。
建议,最好回退到pkg版本。不能用的功能,相当于没有功能!

3.0的向下兼容太坑爹了,还不如不兼容!因为,那个兼容根本没用!

已经把此贴转给lua相关开发者

1.枚举和类成员变量以及一些warning的去除,已经支持,但暂未合并
2.lua回调函数的去除是为了让cpp和lua脚本的耦合尽量少,目前-x已经支持lambda,后期会考虑实现lambda支持
3.对于指针对象,用pkg的形式绑定,也是会有问题
4.3.x版本中已经不用在脚本中使用tolua.cast就可以得到实际对象类型

目前bindings-generator确实还有很多不足,也希望大家能一起来帮忙完善,自动绑定比手动写pkg生成绑定肯定是更好的。

sorry,之前语气太重了,升级版本花了快3周,还搞不定,挺让人郁闷的!
你们弄开源也不容易,咱是只拿来用,没做啥贡献!
如果有啥需要帮助的,咱也可以帮忙的。

— Begin quote from ____

引用第5楼scholarman于2015-01-29 17:37发表的 :
sorry,之前语气太重了,升级版本花了快3周,还搞不定,挺让人郁闷的!
你们弄开源也不容易,咱是只拿来用,没做啥贡献!
如果有啥需要帮助的,咱也可以帮忙的。 http://www.cocoachina.com/bbs/job.php?action=topost&tid=283660&pid=1232702

— End quote

楼主,认真说,你根本就弄错了,2.0和3.0压根就不是向下兼容的关系,3.0的很多类名字都变了,建议你还是开新项目的时候再上3.0吧

我3.0项目还是用pkg 的方式导出。。。你用那自动导出的,简直就是摆设来的,坑爹的垃圾货