cocos2d-lua 与 quick 的未来

目前问题确实不少,无形中增加了我们开发的时间成本,希望独立出来的团队能够把quick做的更好:870:

— Begin quote from ____

引用第20楼zhuangzaiku于2014-11-28 16:42发表的 :
目前问题确实不少,无形中增加了我们开发的时间成本,希望独立出来的团队能够把quick做的更好:870: http://www.cocoachina.com/bbs/job.php?action=topost&tid=272354&pid=1185288

— End quote

一定的!

:10::10:都是1群传说级的人物啊

必须顶~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

来顶廖大:2::2::2::2:

感谢廖大团队对quick的每一步推进!
感谢开源!

cocos2d-x lua感觉都没什么存在的必要,触控这么做算是做对了,下一步直接融合两者形成最终的quick才是极好的!

期待~
廖大有几个问题请教下哈

  1. 现在cocos 1.0 preview还没有集成lua,以后集成后是不是直接就包含quick了?(就是quick==cocos lua)
  2. 现在一直没找到100%顺手的lua编辑器。以前一直用xcode感觉这是我用到的最好的代码编辑器/IDE了,VS之流简直没法比呀… 可是用lua还是没找到真正顺手的编辑器,Coco Code IDE感觉就是一款残疾产品…首先基于Eclipse,那就是各种慢!卡!slow!同样一个代码提示有时能弹出,有时弹不出,有时过了好几秒才弹出… 有些永远也弹不出… 用时间长了产品没做完 自己就被气死了!sublime是款非常好的工具,但毕竟不是cocos官方出的,与cocos lua集成度非常有限。希望廖大能给指出一条明路。

赞一个!努力加油,共同进步

这个一定要支持
期待尽快发布

意思是,quick被边缘化了,主力cocos2d-lua

太好了!我一直都不知道我改进的一些cocos2d-lua的部分(比如LuaStack这样
)应该提交到哪儿去,这下子好了(虽然还是不知道该提交到哪儿去= =)

另外,我想说一下关于tolua的绑定的问题,有机会我想另外在issue里面单独开
一个详细讲这个,但是现在不知道cocos2d-lua的仓库到底在哪儿啊= =所以现在
这里先说说。

我是10年的时候在自己的项目里面用tolua++的,当时用的是一个带插件的版本
,插件支持了虚函数调用。后期的时候在开发中随着对lua的了解,一直想把
tolua给换掉。

主要的一些动机是这样的:

  • tolua生成的代码太难看了
  • tolua直接生成函数调用来注册函数,而不是通过标准Lua的luaL_Reg注册表机制
  • tolua的文件分离,接口不好查询
  • tolua的lua方面的接口功能过于简单。
  • tolua不支持enum绑定

等等的一些原因,反正让我产生了重新发明轮子的想法。但是一个C++ -> binding
的生成器本身让我反复犹豫,因为可以采用的技术太多,而C++本身的语法又是
比较暧昧不清的。在几年的时间里面,我分别考虑了几种不同的绑定方法:

  • 通过一个接口文件导出(tolua的方案)
  • 通过一个编译器产生的xml文件导出(现在的cocos的方案)
  • 通过手写一个合法的lua文件(但格式是DSL形式的)来导出(LuaNativeObject方案)

这么多不同的生成方法,各个都有各自的问题,其实主要的问题在于,C++的接
口语义是不清晰的,而定义清晰语义又需要对C++本身理解透彻。因此我暂时放
下了这部分的开发,并开始开发一个最适合被绑定生成器使用的运行时(
runtime),这个运行时就是lbind项目目前的成果:

http://github.com/starwing/lbind

lbind项目目前真正完全经过了数个项目实践的是它的runtime部分。lbind.h和
lbind.c,它们共同实现了一套解离的Lua辅助库,主要的特性是:

- 清晰、现代的Lua C库代码风格,方便修改、增强。
- 一套独立的错误处理机制,完善的保护运行机制。
- 下面的各项功能都是可选的,如果不选择,就不会影响效率
- 利用lbind_Reg注册表的多模块注册机制。
- 一套元表增强机制,通用的__index,__newindex函数。
- 轻量级的userdata支持(带uservalue的lightuserdata)
- 一套完整的类型系统,支持多重继承的绑定。
- 通过void*而不是类型名的查找,按照lua-l的测试,能提高30%左右的性
  能。
- 注册udbox,能通过对象void*找到对象本身(关键是,这个特性是可选的
  ,因此对于一些非常频繁使用又没有这种需求的对象,能通过禁用这个特
  性提高性能)
- 一套十分完善和清晰的对象操作接口,而且在Lua层面也可以得到几乎一
  样的功能(require "lbind"接口)
- 可选的对枚举的绑定,支持字符串枚举值解析,支持枚举bitmask解析。

这套接口被特意设定为,即使是手写绑定也会写起来很舒服的接口。我已经利用
这套runtime实现了多个手写绑定,充分验证了它的可行性。

我希望,在这样的一个时候,我们可以考虑替换掉binding-generator,让其生
成绑定lbind的代码,彻底扔掉lua5.0风格的tolua运行时,而改进成lua5.2风格
的lbind运行时。

在这个过程中,lbind本身可以积攒一套实际可用的绑定生成器代码,而cocos也
可以获得一套稳定、清晰、小巧的lua绑定代码。我想这是对两个项目都很好的
一件事。我本人目前在上海工作,业余时间不是特别的多,但是也很高兴能够提
供我自己的业余时间,来做适配、bug解决、新特性等等方面的工作。

谢谢!

这个非常棒!必须支持:2:

看了介绍觉得很眼熟,再一点仓库,发现果然是自己已经收藏过的了。之前在考察各种 luabinding 库的时候,已经初步筛选出来了一些项目,其中就有 lbind :smiley:

tolua++ 早在 2009 年就没有再更新了。tolua++ 本身存在不少问题,也不支持 Lua 5.2 新版,所以我们今年上半年就打算换掉 tolua++ 了。但因为 quick 团队以前很难向 cocos2d-lua 提交这么大的改动,所以做了一些测试后没有付诸行动。而现在这些障碍消除后,换掉 tolua++ 是必然的。

只是选择一个新的 luabinding 库,需要满足一些基本要求:

  • 支持 Lua/LuaJIT
  • 支持足够的 C++ 特性,例如重载、虚函数、多重继承等等
  • 类型安全
  • 高性能

从 lbind 的介绍看,应该是没有大问题的。

so, 我们一起把这个事情搞起来吧,double win !

31楼,这个非常棒!

廖大辛苦了…大力支持…~~~~:2::2::2::2:

刚选择quick两个月,看到quick的活力和进步,感觉当时的选择是对的,quick加油!

廖大威武!!!

是否考虑加入WebView支持呀?

quick团队辛苦廖大辛苦顶一个~

很是期待,尤其是好用的文档工具。