forest0xia / dota2bot-OpenHyperAI

A beta Dota2 Bot Script aims to provide better bot game experience
https://steamcommunity.com/sharedfiles/filedetails/?id=3246316298
MIT License
53 stars 11 forks source link

Some suggestions #26

Closed huuuuum closed 1 month ago

huuuuum commented 2 months ago

May I your QQ number? I have some opinions about the bot that I would like to discuss with you.

forest0xia commented 2 months ago

Just post your questions here. Fell free to type Chinese. I prefer to speak English by default since it can help more people for their understandings, in case.

I almost never used QQ again since like 15 years ago. But I'm active in GitHub at least for now.

Hmm, I will consider to create a discord channel later, since more people seem to have something to discuss. Stay tuned if you have discord. I'm hesitated to do that just because I really don't have a lot of time to take care of many random questions from players.

huuuuum commented 2 months ago

部分技能比如pa的w和一些消耗性技能,比如赏金的飞镖,技能释放时不应该考虑cankilltarget,会导致bot技能释放很消极,这种技能也应该考虑farm时对于野怪释放;拉席克,兽,nec等英雄应考虑在aoe技能开启后向目标方向移动,尤其是拉席克,由于大招作用范围低于攻击距离,更应该向敌方移动保证输出;蝙蝠在大招拉到敌人的情况下应向队友移动;卡尔的suntrike应该加上拥有scepter后对自身释放;enigma tiderhunter拥有较长cd的英雄,大招判定应考虑对方是否为幻象,部分短cd技能则不需要考虑,需尽快清除幻象;增加大多数技能释放时机,附近有敌方英雄就释放;孽主大招增加释放距离的判定,有最小距离限制;娜迦海妖的捕捞应该在镜像不可用时才用;雷泽抽攻在有魔晶时应设置多样施法;应考虑增加bot防御base的设定(我没搞出来);发条的出装可以考虑3号位出晕锤,配合scepter效果很好;night stalker的hunter in night应删除前置条件farm,血蓝不到100%就吃周围的敌我小兵或野怪;出装方面A杖卷轴应尽早购买,防止物品栏溢出导致后续物品购买失败(要不要考虑我给你发一份全英雄出装);hoodwink、marci、primal beast muerta的ai由于value在npc_heroes文件内忘记添加bots,所以存在问题,可以通过vpk修改的方式来完善,但不建议推广;马格纳斯的冲撞应在周围200码有敌人时对己方的carry位置释放,不仅仅是突进;船长的tidal wave只需要考虑600码内有敌人对自己基地方向释放,撤退时对敌方基地方向释放;军团的Q是否需要增加决斗时释放;tinker的MarchOfTheMachines释放方向应该反转,出伤更快;树精卫士的树眼不应该在团战时才释放,而且应降低desire避免后期卡顿;spirit breaker的Q应增加冲兵线的设定(等级5级以上)

forest0xia commented 2 months ago

你的建议很不错,不过阅读起来太费劲了。我简单用chatGPT整理了一下你的建议。希望你以后可以更有条理的列举出来,方便逐条理解和交流。

以下来自你的针对一些英雄的技能释放和行为模式提出的改进建议,和我的 - [回复]

  1. 技能释放与目标判定

    • 对于部分技能(如PA的W或赏金猎人的飞镖),不应仅考虑canKillTarget(能否击杀目标),否则会导致机器人释放技能过于消极。这类技能应考虑在打野时也能对野怪释放。 - [回复] 现在的逻辑已经比你说的相对来说更加完善 ( https://github.com/forest0xia/dota2bot-OpenHyperAI/blob/main/bots/BotLib/hero_bounty_hunter.lua#L370 ),分很多情况都优化过了。你更具体的建议是什么? 注意,技能不停的用会有多个弊端:1,一直用肯定耗蓝多 可能导致关键时间没技能,2,给对方增加魔棒点数,3,进cd导致关键时间没技能。作为bot,只能做大概的取舍。很多时候bot就是蓝不够不能连招只能平A就看起来非常的蠢。尤其是没有开Fretbots模式时,中后期大部分时间都会处于空蓝状态。
  2. 移动与技能配合

    • 拉席克、兽王、Necrophos等英雄在开启AOE技能后,应朝目标方向移动,尤其是拉席克,由于大招的作用范围低于攻击距离,更应向敌人靠近以确保技能输出最大化。
    • 蝙蝠骑士在用大招抓到敌人后,应优先向友方队伍移动。 - [回复] 拉席克等英雄都有这个逻辑。至于有多少完善程度,一点点改善吧。蝙蝠骑士就更明显了,建议看看代码,他还会拉人用推推把自己往友方推。
  3. 技能释放细节

    • 卡尔的Sunstrike在拥有神杖后,应该允许对自身释放。
    • Enigma和潮汐猎人等大招冷却时间较长的英雄,在释放大招时应考虑对方是否为幻象,而对于短冷却时间的技能则不需要过多考虑幻象,应尽快清除幻象。
    • 大多数英雄的技能释放时机应增加优化,例如在周围有敌方英雄时,技能应尽快释放。
    • 孽主的大招应增加释放距离的判断,并设定最小释放距离限制。
    • 娜迦海妖的捕捞网应在镜像不可用时释放。 - [回复] 卡尔会用大天火的。https://github.com/forest0xia/dota2bot-OpenHyperAI/blob/main/bots/BotLib/hero_invoker.lua#L1311 有空的话先看看代码里面已有的逻辑,再提更加具体的改进建议。 - [回复] 至于考虑是否是幻象,还是建议先看看代码逻辑。几乎每一个的技能释放,我们都会在代码里面先判断是不是幻象。只是并不好判断的,或者说不能100%正确,只有在本体也在附近才能比较准确的判断出来。如果你有如何更好的判断是否是幻象的想法,也可以说。而且有时候反而不应该过多判断,因为有一些幻象尤其是后期太强了不能忽视。 - [回复] 技能不能随便释放。随便是否代表着你在该放技能的时候技能没蓝或者在cd中,机器人只会更弱。
  4. 技能与物品使用

    • 雷泽在拥有魔晶后,抽攻技能应设置更灵活的施法模式。
    • 夜魔的Hunter in the Night不应设置农兵条件,应在自身血蓝不到100%时优先击杀周围敌我小兵或野怪。
    • 出装方面,神杖卷轴应尽早购买,以防止物品栏溢出,影响后续物品购买。 - [回复] 雷泽魔晶有相关逻辑的。只是也许没那么灵活? 改天我再具体看看好了。 - [回复] 夜魔这个没有很懂,玩的不多最近 改天我再具体看看 - [回复] 神杖卷轴我自己都很少早买,相当于少了属性又多个格子,除非有另外一件东西能顶上那个格子,不然没什么好处还费钱。你的具体考虑是什么。
  5. 英雄行为与技能AI优化

    • 发条技师作为三号位时可以考虑购买晕锤,配合神杖效果非常好。
    • Hoodwink、Marci、Primal Beast和Muerta的AI由于npc_heroes文件内缺少对应的bots字段,因此可以通过修改vpk文件来完善这些英雄的AI,但不建议大规模推广这种方式。
    • 马格纳斯的冲撞应在周围200码有敌人时优先对己方Carry位置释放,而不仅仅是作为突进技能使用。
    • 船长的Tidal Wave应在600码范围内有敌人时朝自己基地方向释放,撤退时应朝敌方基地方向释放。 - [回复] 发条这个没有很懂,玩的不多最近 改天我再具体看看 - [回复] 马格纳斯的冲撞。有空的话先看看代码里面已有的逻辑,再提更加具体的改进建议。 - [回复] Hoodwink、Marci、Primal Beast和Muerta的AI由于npc_heroes,我已经知道他们出错的原因了就是哪儿没设置加上他们,虽然不知道是不是你说的那里。主要是你想推广也推不了,能有多少人知道怎么改vpk然后还会改呢。但是这些都没关系。我已经做到了不需要Valve的修复或者玩家自己改也能让脚本支持全部的英雄。 - [回复] 船长的Tidal Wave 有这个逻辑
  6. 技能行为微调

    • 军团指挥官的Q技能在决斗时应增加自动释放。
    • 修补匠的March of the Machines技能的释放方向应该反转,以更快造成伤害。
    • 树精卫士的树眼技能不应只在团战时释放,且应降低释放意愿以避免后期卡顿。
    • 裂魂人的Q技能应增加冲击兵线的功能(适用于5级及以上)。 - [回复] Q技能怎么自动释放?改版了? - [回复] 现阶段修补匠问题很多,现在只是能用,后续要改进的地方不是一点半点 - [回复] 裂魂人的Q 主要是不好控制它自己中断自己的技能。这个可以认为是bug,你有时间的话,我需要帮忙。帮我看看他为什么喜欢中断自己的Q
  7. 基地防御

forest0xia commented 2 months ago

我已经在上面每一条下都 [回复] 了。 总的来说,都是很中肯的建议,只是我觉得你视乎没有玩过足够多的次数或者没看过代码,很多问题其实早就已经解决了。至于有没有尽善尽美,只能说很多东西不是说做不到,而是说没有时间,毕竟下班后有空也需要自己玩玩游戏出去旅游,没多少时间免费干这些活。耐心等吧。或者帮我一起更新。 我在以前给别人的回复里也经常重申:

In general I think anything you wanted the bots to improve, I've put a lot of thoughts on it and a lot of features are not there or not very good because I do not have a lot of time and I do not care much since I have fun with this bot already.

If anyone is interested on contributing to the bots. Please help me build any feature/improvements on your mind first, create a [Feature Request] in Github for the details first.

forest0xia commented 2 months ago

以下是对各项建议的回复总结:

  1. 现有逻辑相对你宽泛的建议已经较为完善,尤其针对赏金猎人等英雄。技能频繁使用可能带来负面影响,如耗蓝过多、给敌方增加魔棒点数等,建议你提供更具体的改进意见。

  2. 拉席克等英雄已有相应逻辑进行技能后的移动。蝙蝠骑士会使用推推棒帮助拉人,代码中已实现。更好的改进有难度且费时,建议你提供更具体的改进方案,或者帮我一起改代码。

  3. 卡尔的Sunstrike在拥有神杖后已经可以对自身释放。关于幻象的判断在技能释放中已有考虑,但判断是否为幻象并不总是准确。如果有更好的判断方案,欢迎提出。技能随意释放会导致蓝量不足或技能在关键时刻无法使用,因此需要谨慎。

  4. 雷泽的魔晶技能逻辑存在,但可能不够灵活,之后会再进行具体检查。夜魔部分暂时不清楚,待进一步研究。神杖卷轴早买的益处不明显,除非能有效填补物品栏,否则增加成本不划算。

  5. 发条的出装建议还需进一步研究,代码中已有马格纳斯冲撞的逻辑。至于向己方carry身上冲,考虑欠妥,你是说把PA/拍拍熊/混沌等冲向火枪/小黑这类英雄?什么该推什么不该推,具体什么时候推,不能一概而论,不要坑了carry被玩家举报。至于某一些bug AI问题,我已经发现并修复,不需要依赖Valve修复或玩家修改vpk来支持新英雄。至于更进一步的优化,有空再做

  6. 军团指挥官的Q技能不清楚是否能自动释放,需进一步确认。修补匠当前问题较多,虽然可用,但还有很多需要改进的地方。裂魂人的Q技能问题可能与其自己中断技能有关,希望得到更多帮助查明原因。

  7. 机器人已经添加了防守基地的设定,并提供了相关代码链接。希望有更具体的建议来进一步优化。

huuuuum commented 2 months ago

1.技能释放细节 (1)enigma_demonic_conversion建议在血量健康、周围有敌方单位的情况下使用,而不是靠近地方防御塔时,以便更快的积累随从 (2)"BotLib>hero_lycan.lua"里应该增加“npc_dota_lycan_wolf5”、“npc_dota_lycan_wolf6”以便适配狼人新命石 (3)类似于axe的Q技能等关键技能的释放,应考虑bot是否携带bloodstone,radius应额外增加75 (4)熊猫酒仙一直在切换醉拳状态,释放大招以后不动 (5)常规技能,比如天怒的Q应改为CanCastOnMagicImmune,否则面对开bkb的敌人法师只能发呆,实际上依然有伤害 2.物品出装 (1)enigma可以考虑出卫士胫甲或者祭品来保证没有balck hole时团队的战斗力,后期更换成飞鞋 (2)tinker建议出智力型跳刀 (3)lina的black king bar出的过早 (4)dark seer、mars、muerta可以出refresher (5)jakiro出refresher的效果没有想象中的那么好,不如玲珑心 (6)斧王应该出bloodstone、以及建议wind_waker、清莲宝珠等作为回蓝装 3.团队决策 (1)有没有措施使bot在靠近防御塔时保持相对分散站位避免被玩家一锅端 (2)team_roam_generic中,Extra units应增加land_mine、tidehunter_anchor、visage_familiar、npc_dota_unit_roshans_banner、npc_dota_ignis_fatuus and “siege”(周围没有敌方英雄)

forest0xia commented 2 months ago

这次比上次有条理多了。感谢

1.1 下一个更新中会修改血量限制。其他条件以后有时间再加吧 1.2 下一个更新中会修改 1.3 radius的值大部分都是用valve的api获取的。所以如果api返回的准确,我目前没计划去给每一个地方都加一个判断去修改radius。毕竟这种改动很可能在下一个版本就失效了。版本更新可以随时增加或者减少某一些物品对技能的影响。而我目前没有计划针对以后的新版本专门去检查这些设置 1.4 确实,有待改善。大招释放不动的问题下一个更新中会修改 1.5 good point. 既然如此为什么不能直接让CanCastOnNonMagicImmune返回CanCastOnMagicImmune的结果,感觉更直接。你觉得有什么后遗症

2.1 以后找时间再改整体的出装思路。现在除了肯定能提高效果的,其他一概不会花时间去改。或者你可以发一个pr 2.2 为什么 2.3 确实,Pos1, pos2 都可以出的晚一点 2.4 待考虑。目前bot对有一些东西,比如refresher的使用其实没什么strategy,而且有的英雄可以马上refresh,比如周斯秒人,但是很多英雄不需要马上refresh因为前一个技能的效果不是马上结束的。这里需要更好的refactor并且调整绝大部分英雄的override,主要是没时间。如果只是随意加上去,很可能就是乱用刷新。 2.5 下一个更新中会修改 2.6 可能是我不了解新版本玩法?我更喜欢axe肉起来顶上去。没蓝的话肉起来顶上去,死了复活就满蓝了,也没所谓。

3.1 暂时没有计划。理论上可以做到。主要是没时间去修改调试 3.2 good point. land_mine、tidehunter_anchor、visage_familiar 可以。但是其他几个我甚至不知道它们是什么?比如 npc_dota_unit_roshans_banner, npc_dota_ignis_fatuus and “siege”

huuuuum commented 2 months ago

1.3 radius这个问题,之前的版本在评估castrange的时候不是已经判断是否携带“以太透镜”了嘛。这个原理一样照着加就行 1.5 英雄大招、控制技能等关键技能必须是CanCastOnNonMagicImmune 2.1 出装我只有中文版本,攻守兼备那种,比较适合持久战 2.2 tinker都出智力跳刀,团战不需要回泉水补 2.4 Inteamfight且大招冷却时间大于20s 2.6 首先你这个斧王出装没有mana恢复,其次斧王在A杖技能效果改变以后,法术吸血效果很好,斧王出dragon又不合适,斧王需要打第二波切入,而不是上去拼命然后死掉 3.2 banner是二代roshan的战旗,fatuus是keeper of light的scepter,siege是攻城车

有人建议让bot购买smoke进行gank

forest0xia commented 2 months ago

之前的版本在评估castrange的时候不是已经判断是否携带“以太透镜”

any link?

我建议你或者你的朋友们有时间的话可以发一个PR,一起更新。每一个人都有不错的想法。每一个想法都有优劣,都要花时间去思考,实现和验证。而我不想把时间免费花在实现别人的想法上,除非我自己感兴趣。所以我建议你们花一点时间来实现自己的想法,一起更新script

huuuuum commented 2 months ago

我建议你或者你的朋友们有时间的话可以发一个PR,一起更新。每一个人都有不错的想法。每一个想法都有优劣,都要花时间去思考,实现和验证。而我不想把时间免费花在实现别人的想法上,除非我自己感兴趣。所以我建议你们花一点时间来实现自己的想法,一起更新script 什么是PR

forest0xia commented 2 months ago

大致概念:https://blog.csdn.net/Supreme7/article/details/136813376

forest0xia commented 2 months ago

我让你们发PR,是希望等你们真的动脑子去改的时候能意识到更多问题。基本上大部分你们一拍脑袋想出来的优化,都是有问题的。但不是说没有价值,而是需要花时间去让你们意识到你们所提的建议有哪些问题,更好的方式是什么等等。而我希望你们可以在自己修改并且思考的过程中有更具体的见解。这样既不浪费你们的热情,也不浪费我的时间。

比如你之前的回复。首先请别用大号字体写正文,其次: 1.3,我并不知道你所说的”之前的版本在评估castrange的时候不是已经判断是否携带以太透镜“是什么。需要具体代码位置。其次即使知道了,优化这个也不会带来什么提升,我需要更具体的在哪儿改,改什么英雄先,的建议 1.5 ”英雄大招、控制技能等关键技能必须是CanCastOnNonMagicImmune“,这个可以说完全错误。如果目标还差0.5秒结束魔免状态,为什么不等一等,这样大大提高伤害效果。阻止他们呆住的办法有很多,建议你们再多想想各种情况和方案。而且你没有回答我的问题,我问的是”你觉得有什么后遗症“。多反向思考任何你的改动可能带来的问题。任何改动都可以在另一种情况下带来反面效果 2.2 回泉水补的更快啊。而且tk不能一直刷新物品了,意义不大。有什么更多的取舍,请细讲 2.4 ”Inteamfight且大招冷却时间大于20s“只适用于一小部分,对于很多英雄很多情况都不适用。比如虚空团战刚开了大,按照你的建议,这个虚空会马上用refresher刷新开第二个大,也就是0.1秒内刷新开大2次,你觉得合适吗?比如谜团,潮汐,蝙蝠,或者你提到的mars,等等都会显得很蠢很浪费。还有,比如火女一类别的技能也能造成伤害或者控制效果的英雄,或者有达贡之神力这类造成伤害或者控制效果的物品,如果只判断大招cd,那么很可能一些物品和技能都没用,就先用了刷新。

我希望你们能具体问题具体分析。不要只看到自己看到的那几个英雄的运行模式就提出宽泛的建议。如果你们发pr,会获得更多我的反馈,看到更多我的思考。

forest0xia commented 1 month ago

这个issue里有一些暂时没有采纳的建议,因为我暂时不想思考这其中的取舍利弊。感兴趣的朋友可以自己动手去改。

现在问题先关闭了,欢迎再提新的建议

forest0xia commented 3 days ago

特地来感谢你对special units的整理和反馈。我已经在新版中加上去了。其他的等有空再做修改