cocos-lua 整体设计思路简介

最近对cocos-lua框架进行了一次整理,将文件重新划分文件夹存放,并对核心思路也做了框架化整理,这里记录下设计这套逻辑框架里的主要几个思路:

1. 这个框架除了提供对cocos2d进行一系列的Lua封装之外,还提供一套逻辑构建解决方案。

2. 画面渲染部分与游戏逻辑部分要区分开,最严格的标准就是逻辑代码里不应该有一行与cocos2d相关的代码。

3. 模块之间的协同工作的模块尽量通过事件通信,以此降低耦合。这就要求使用者在设计模块层面将此考虑进来,不然会很痛苦。事件名采用字符串(可采用一定规则来凸显,如“模块名.事件名”这种),契合Lua高效的字符串比对。

4. 模块内部采用消息机制,对一个模块发送消息,模块会将消息层层分发下去,除非中途有某个子模块处理完后宣布需要独吞此消息。

5. 尽量使用小模块的拼装组合来实现更大的模块,并借助消息机制来处理各自的问题。

6. 所有的逻辑都是由一个个的小逻辑节点层层堆叠出来,尽量避免大而全的自顶向下的逻辑设计。

一套基于Cocos2d-x的Lua快速开发框架

   最近半年一直都在研究cocos2d-x的开发,由于自身对Lua的喜好,所以基本从一开始都是使用Lua作为主要开发语言,在开发过程中,也对cocos2d-x有了一定了解,但是说实话cocos2d-x对Lua的支持还是不太友好,基本还是停留在“能”使用Lua开发的阶段,只是使用了tolua++将API都导出来了而已,没有对lua开发者做更进一步的帮助,这样其实并没完全体现Lua的优势。

    其实开发初期就听闻有一个“quick cocos2d-x”的项目,也是采用的Lua,顾名思义目的就是为了提高开发者的效率。对这个项目使用了一番,觉得它做的那个模拟器机制是个不错的想法,虽然还有很多bug。对它这个框架的有些核心思想不是太认同,主要是这个框架对cocos2d的源码进行过修改,而不是一个纯粹的lua级框架,这样做势必自己必须要有一个cocos2d-x的分支,这样会带来一个很要命的问题——在cocos2d-x进行功能增加或者bug修复的时候,需要做大量的工作来将他们合并入自己的分支,所以也就没太关心它的架构实现了。(另模拟器提供的重载不是脚本级的,而是重启进程这点也不是很满意)

    所以最后还是选择了自己来写一套基于cocos2d-x的纯粹的Lua级的框架,针对开发过程中开发者一般都会遇到需要解决的问题做了框架级的封装,使我们可以将更多的心思花在项目的逻辑上,而不用关心太多cocos2d的细节。(比如屏幕的拖拽,缩放,UI资源的加载管理这些等等)

    目前这个框架也在公司的项目里开始运用,表现的还不错,而且也在不断的完善中,但是要把它使用起来还是要花上几分钟来配置,所以今天花了点时间写了个python脚本来做配置。另这个项目本身就是寄放在github上的开源项目(https://github.com/yestein/cocos-lua),打算最近花些时间对这个框架写些说明文档将其正式开源出来,也希望它可以接受更多的检验,成长的更好。未来我也会在这里专门开辟一个专栏来对其进行说明。