北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 45593|回复: 53

mush机器人框架设想

[复制链接]
发表于 2010-1-24 09:26:10 | 显示全部楼层 |阅读模式
  自进入北侠接受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(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-1-24 10:00:42 | 显示全部楼层
嗯,复杂
不过mud的机器人核心系统是走路系统,估计mud里面90%的时间都在走路,如果解决了这个问题,什么都简单。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-1-24 11:11:44 | 显示全部楼层
谁说lua不支持类的
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2010-1-24 12:41:02 | 显示全部楼层
原帖由 jason 于 2010-1-24 11:11 AM 发表
谁说lua不支持类的

lua支持类?
好象我查的资料都说不支持?jason给段代码看看?如果支持,那就太好了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-1-24 13:06:48 | 显示全部楼层
不懂!
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2010-1-24 13:10:36 | 显示全部楼层
原帖由 maper 于 2010-1-24 01:06 PM 发表
不懂!

晕,maper老大,直接就来句不懂....
dao
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-1-24 13:20:36 | 显示全部楼层
原帖由 lzkd 于 2010-1-24 01:10 PM 发表

晕,maper老大,直接就来句不懂....
dao

你可以写写看嘛!
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-1-24 13:31:56 | 显示全部楼层
Lua确实是支持类的。

Gammon论坛上已经有高手在做类似的东西了,如MWidget,不过最近一直没时间研究。

MVC确实是个好理念,不过理念是为目的服务的,做这么个框架,用来干什么呢?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2010-1-24 13:47:09 | 显示全部楼层
原帖由 maper 于 2010-1-24 01:20 PM 发表

你可以写写看嘛!

应该没这个写框架的本事,就算是动手写着玩,也要等蜡像以后了.......................
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2010-1-24 13:50:18 | 显示全部楼层
原帖由 ddid 于 2010-1-24 01:31 PM 发表
Lua确实是支持类的。

Gammon论坛上已经有高手在做类似的东西了,如MWidget,不过最近一直没时间研究。

MVC确实是个好理念,不过理念是为目的服务的,做这么个框架,用来干什么呢?

lua本身应该不支持类的吧?至少,应该没有直接的
  1. class test {
  2.     var abc
  3.     var aaa

  4.     function tt()
  5.     {
  6.           .....
  7.     }
  8. }
复制代码

用来干什么嘛,当然是写机器人.至于怎么做,及怎么做才好.上面的帖子已经写了一部分,其余我也没想好,或者说不知道.
这不提出来,大家讨论有没有可行性嘛.

[ 本帖最后由 lzkd 于 2010-1-24 01:51 PM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-24 02:59 PM , Processed in 0.010692 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表