mush机器人框架设想
自进入北侠接受mush之后,一直有一个想法——将机器人编程框架化,模块化。经过一段时间的思考,有了一个不怎么成熟的想法,现在拿出来,大家讨论一下,看看是否有可能。
其实,说到运用框架,最好的选择应该是php或者别的支持类的语言,lua不支持类,这是一个很致命
的硬伤。不过,考虑到mush对lua的支持和契合度最好,并且在机器人编程中也实在没有太多非常复杂的东
西,就还是选择了lua。
下面对MVC框架做一个简单的介绍,熟悉的人可以直接跳过。看不懂的可以去找一些相关资料来看,真
看不懂也没关系,我会在分析的时候尽可能的不使用电脑语言。
所谓MVC框架,就是把任何一个程序都分割成三部分,模型(M),视图(V),控制器(C),很简单吧?那么
MVC是什么工作的呢?任何一个动作(或者效果)都需要通过控制器(C)来调用模型(M)中的东西,来达到显
示视图(V)的结果。
好了,简介到这里就结束了。真要讲可以写一本书出来,大家只要记得在MVC的世界中,任何结果都不
能直接得到,都必须通过调用。
我们回到机器人编程。我们在说一下,如果运用MVC写机器人,会有什么好处。
1、代码不用重复编写。mud里的机器人所需要的资料,无非是这几种,自身状态(血,内力,有无受伤,
有无busy等),外部状态(是否战斗,在地图的哪一个位置等),任务状态(任务是哪一个,任务NPC是大
概在哪里等)。反正,需要得到的就这么几种,不是很多。每一个机器人都可能用到其中的一个或者数个。
把这些整合到模型(M)部分,以后就可以直接调用了。
2、方便检查,一般我个人习惯是在控制器(C)部分进行检查(好象一般的MVC也都如此)。数据必须经过
检查后才能进入模型(M),模型(M)内的数据一定是完整及安全的。这样可以节省许多精力。许多时候,错误
就是产生在一些细小且想死了也想不到的地方。
3、方便共享。一般情况下,个人写机器人都有自己的风格,架了MVC之后,许多代码就可以通用了。这
样很方便就可以得到别人的代码中,你所希望的那部分功能。
4、方便阅读。其实MVC是不方便阅读代码的。但按照三部分分开后,至少不要满机器人找函数了。
说说缺点。
1、相对比较复杂,对于不熟悉的人来说,MVC的编程结构跟一般的编程结构完全不同,熟悉起来需要一个
过程。
2、破坏了代码的完整性,造成理解上的困难,这一点是说的最多的。
说说我认为的mush机器人编程中的MVC划分。
先说模型(M)。这部分是最难的部分,但也最好分。所有资料的获得,如气血、内力、地图都可以归入这
部分。
再说视图(V)。这部分也比较好理解,所有在mud中得到的结果,就是视图(V),如发起dazuo命令后的打坐、
发出kill命令后的杀人等。
余下的部分,就是控制器(C)。一般来说,这部分需要我们经常调整,根据不同的任务做出不同的变化。
大体上就这么多,我还没能根据这个理论给出一个完整的MVC框架。先把这些说出来的目的,是希望各位高
手、大牛能够帮看一下,这种想法是否可行。如果哪位觉得可行,就此写了一个框架出来,那就太幸福了。
小刀(lzkd)
2010.1.24 嗯,复杂
不过mud的机器人核心系统是走路系统,估计mud里面90%的时间都在走路,如果解决了这个问题,什么都简单。 谁说lua不支持类的 原帖由 jason 于 2010-1-24 11:11 AM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
谁说lua不支持类的
lua支持类?
好象我查的资料都说不支持?jason给段代码看看?如果支持,那就太好了 不懂! 原帖由 maper 于 2010-1-24 01:06 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
不懂!
晕,maper老大,直接就来句不懂....
daottk_39 原帖由 lzkd 于 2010-1-24 01:10 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
晕,maper老大,直接就来句不懂....
daottk_39
你可以写写看嘛! Lua确实是支持类的。
Gammon论坛上已经有高手在做类似的东西了,如MWidget,不过最近一直没时间研究。
MVC确实是个好理念,不过理念是为目的服务的,做这么个框架,用来干什么呢? 原帖由 maper 于 2010-1-24 01:20 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
你可以写写看嘛!
应该没这个写框架的本事,就算是动手写着玩,也要等蜡像以后了....................... 原帖由 ddid 于 2010-1-24 01:31 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
Lua确实是支持类的。
Gammon论坛上已经有高手在做类似的东西了,如MWidget,不过最近一直没时间研究。
MVC确实是个好理念,不过理念是为目的服务的,做这么个框架,用来干什么呢?
lua本身应该不支持类的吧?至少,应该没有直接的class test {
var abc
var aaa
function tt()
{
.....
}
}
用来干什么嘛,当然是写机器人.至于怎么做,及怎么做才好.上面的帖子已经写了一部分,其余我也没想好,或者说不知道.
这不提出来,大家讨论有没有可行性嘛.
[ 本帖最后由 lzkd 于 2010-1-24 01:51 PM 编辑 ]