北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
楼主: szybd

渡深百M留念,共享藏经阁任务机器人制作全过程

[复制链接]
发表于 2014-1-3 19:36:39 | 显示全部楼层
回复 11# pizzagoo


    膜拜技术帝。求分享。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-1-3 21:51:47 | 显示全部楼层
上贴说到了地图,要实行自动藏经阁,识别地图是必不可少的步骤。
具体要设别地图哪些信息呢?
1、地图的长和宽。还好,这个地图是个矩形,有了长和宽,就把地图范围定下来了。
2、地图的入口和出口,要识别地图的入口和出口,就需要颜色触发,这个我昨天刚向别人请教后学会。
3、地图的具体内容,哪个位置有巡逻僧兵,其实这个不重要,因为30秒它就变了,如果你开始的时候记住它了,前30秒的行走可以不必瞎子摸象。但30秒过后,还是两眼一抹黑。从简化处理考虑,先不记忆地图内容,在具体行走是用look 方向的命令进行探索,以统一处理,以后优化再考虑对起始地图的掌握。
有了地图的信息,就要考虑如何行走了。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-1-3 21:56:44 | 显示全部楼层
由于前文提出简化处理,不记忆地图的内容,那么行走的时候就要探路,怎样探路和当前的位置有关,自身位置是必须记录的一对全局变量,有了它,就知道自己和出口的相对位置。同时知道自己在地图的相对位置。比如自己在地图的左下角,那么探索时只要向look north和look east了。其他位置的探索办法类似可知。
站在特定位置,知道目标位置在哪里,也通过探索得知了周边情况,同时,为了防止走回头路,我们还记录了上次是从哪里来的。
下一步如何走呢?采用什么算法呢?这是一个关键问题。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-1-3 23:17:17 | 显示全部楼层
最简单的处理办法是:永远只走接近目标的路,走一步近一步。如果有巡逻僧兵阻挡,只要不被识破,继续走,走不动时,等待地图更新继续走。
这种方法的好处是:最少步数到达出口,触发战斗的概率最小。
坏处就是不巧的时候要等,想都吸引敌人时肯定不能 用。
从让机器人尽快跑起来的角度出发,先采用此算法,根据效果再优化
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-1-4 09:30:44 | 显示全部楼层
采用前述行走策略,还有一个小小的技巧要考虑,一般情况下有两个方向可走的时候,如果有两个方向都没有巡逻僧兵,走哪个呢?
应该选择走自己和出口作为对角顶点构成的长方形的长边方向。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-1-4 09:34:18 | 显示全部楼层
前排围观渡深技术帝讲解,最好把全自动都讲解一遍,你弄完了,SG肯定得忙起来,这样就没精力折腾其他了,侠之大者,兑子拉仇恨~~
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-1-4 10:37:19 | 显示全部楼层
现在地图的行走策略有了。那就走起!
这是就要解决一个非常重要的问题了:战斗。目前我对藏经阁战斗的了解主要靠论坛的资料,因此机器人初步考虑采用最简单的战斗处理办法,暂不考虑识别特定技能的对手,针对性进行攻击。
我是纯少林,战斗的基本思路就是先加buff,再busy,再燃木刀,再罗汉。对于长老可以考虑燃木刀前先千叶手debuff一下。为啥不在busy前debuff呢?因为debuff自身会产生busy,一般情况下,第一时间busy对手是最佳选择。
由于对手是到达该位置后随机产生的,过去前,并不知道对手是否存在。如果过去后,发现了敌人再出招,就落了后手了。所以采用预先出招的策略,管你有没有敌人,我反正当有敌人打。
好在敌人的ID是预知的:husi zhanglao和husi sengren
过去时先盲打一招一指禅群体busy:perform finger.jingmo husi zhanglao 5;...perform finger.jingmo husi zhanglao 1;perform finger.jingmo husi sengren 10;..;perform finger.jingmo husi sengren 1
这里未知的敌人最多5个长老,10个僧人。
这招发出后,也就来到了目的地。看到了具体多少敌人。用触发得到具体敌人的数目:就可以有针对性的攻击敌人了。
考虑到自己身穿天木和天炎的天套,普通僧人对子自己基本不会造成致命伤害。因此优先对付长老。
前面busy的效果可以通过触发一一获取。这时就知道了是否所有长老都已经被busy了。如果没有被busy,就针对长老再放一次busy,护寺僧人先不管他,直到所有长老都busy了。用燃木刀和罗汉招呼长老,长老招呼完了,再用燃木刀和罗汉招呼僧人。都招呼完了,就执行hpbrief,检查自己的状态,恢复自己到最佳状态后,走下一步。直到到出口。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-1-4 10:42:05 | 显示全部楼层
前面的方案,基本上解决了第一个地图的问题。实现了机器人就可以跑起来了,至于怎样提升战斗的成功率和行走的效率,需要逐步优化。其他可能碰到的意外情况的处理,也在后续机器人遇到意外情况时逐步增加处理办法。
现在假设我们通过了第一个地图,即将进入第二个地图。第二个地图似乎是一个随机生成的固定地图。我们暂时就把它当做一个未知的固定地图来处理。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-1-4 12:04:42 | 显示全部楼层
处理未知的地图有很多种办法。我们采用最简单的一种:随机踱步,总会走到目的地的。不是吗?
为了提高效率,做一个小小的优化:除非只有返回一条路,否则绝不返回上一步。另外,走之前看一下所有方向,如果能看到目的地,就直接过去。
这样处理可能走一些冤枉路,不过还是本着先让机器跑起来的原则,把优化工作放在后面。或许根本不需优化,直接够用了呢?!
第二个地图的战斗和第一个地图没有本质区别,同样处理即可。
第二个地图中会产生陷阱,busy 3秒。如果陷阱位置有敌人,怎么办?简单处理的办法就是先不管,碰上了看看具体情况再考虑如何处理。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-1-4 12:07:09 | 显示全部楼层
假设第二个地图发现了藏经阁,进去发现了黄眉僧,就自动交任务吧。至此,全自动机器人的初始方案就确定了。下一步就是做一个原型系统来直接操练了,操练过程中再逐步求精和优化。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 07:49 AM , Processed in 0.010787 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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