炉石兄弟吧 关注:41,904贴子:576,986

修复XD发现机制只会选择最右边卡牌的问题

只看楼主收藏回复

话不多说,先直接上最终修复的点,其实是一个非常简单的修改,如图,打开DefaultRoutine.cs,调整makeChoice方法里面的HasReferencedTag为HasTag就行了。
虽然最终很简单就修复了这个问题,但是定位这个问题的过程还是比较曲折,有兴趣的吧友,可以往下看,我会在后面的楼层更新定位这个问题的过程。


IP属地:四川来自Android客户端1楼2021-01-07 12:50回复
    1、用VS创建一个控制台应用,将HB复制进去,然后根据图片添加依赖项。这样才能查看HB封装编译的接口方法,并在引用间跳转。


    IP属地:四川来自Android客户端2楼2021-01-07 12:54
    收起回复
      话说 我手里的版本是加了DNG的。。


      IP属地:四川3楼2021-01-07 12:57
      收起回复
        2、目标是修复发现机制,所以我全局搜索了很多关键字,比如:“发现”、“discovery”、“discover”,过程比较曲折,还有各种看代码。分析代码,就不一一表述了,最后在如图的地方找到了比较符合预期的代码。


        IP属地:四川来自Android客户端4楼2021-01-07 12:58
        回复
          3、然后就是定位问题点了:首先阅读代码,聚焦到了关键方法makeChoice, 由于没有办法断点调试,所以只能采用原始技能,各个代码分支输出日志锚点。




          IP属地:四川来自Android客户端5楼2021-01-07 13:02
          回复
            4、然后是重启兄弟,开始执行并查看输出的日志,这里我用牧师组了一个全是发现卡牌的卡组,然后找旅店老板进行了切磋,旅店老板还是比较靠谱,没有倒计时


            IP属地:四川来自Android客户端6楼2021-01-07 13:06
            回复
              5、根据日志的输出,发现没有打印ee、ff(截图中的gg分支是后面补的,开始的时候没有这段),choiceMode没有赋值DISCOVER,从而导致没有进入后面的nn分支


              IP属地:四川来自Android客户端8楼2021-01-07 13:07
              回复
                6、核心问题找到了,大概率就是 sourceCard.GetEntity().HasReferencedTag(Game_TAG.DISCOVER) 这一段有问题了。
                然后就是各种折腾,希望能把这个判断通过,尝试了通过序列化将entity转为JSON,查看有哪些属性,结果不支持转换-_-||
                各种进入EntityBase查看成员方法,各种尝试,日志打印,最后确认了HasTag方法可以完成此判断。然后HB的发现机制就好了。


                IP属地:四川来自Android客户端9楼2021-01-07 13:09
                回复
                  7、此外,为了增加不同策略下发现卡牌的附加逻辑,我在Behavior增加了getDiscoverPriority方法,也就是5楼图2中ai.botBase.getDiscoverPriority方法。还在完善中,后续完善了再更此贴。


                  IP属地:四川来自Android客户端10楼2021-01-07 13:12
                  收起回复
                    膜拜大佬 学习一下


                    IP属地:四川11楼2021-01-07 13:14
                    回复
                      收藏了,大佬加油


                      IP属地:湖南来自Android客户端12楼2021-01-07 13:40
                      回复
                        膜拜大佬 。。


                        IP属地:河南13楼2021-01-07 13:42
                        回复
                          厉害了


                          IP属地:吉林来自Android客户端14楼2021-01-07 13:44
                          回复
                            你做的事,已经有人做过了......可以看这个http://blog.wjhwjhn.com/archives/18/


                            IP属地:安徽15楼2021-01-07 13:55
                            收起回复
                              学习了,这就动手修改


                              IP属地:河南来自iPhone客户端16楼2021-01-07 14:02
                              回复