Page 5 of 5 FirstFirst ... 3 4 5
Results 41 to 48 of 48

Thread: [BUG?] Are bots able to see invisible heroes?

  1. #41
    Quote Originally Posted by Cornbane View Post
    There are 2 possibilities I'm leaning towards. The latter being the more favored.

    • That the trees created with Sprout aren't treated the same way the normal trees are since they are created via the ability. So the bots internally treat a hero blocked by it as if it's not blocked at all, but another part of the internal programming is going loopy because the target can't actually be seen in game, so no action is taken.
    • That the defaults do have an internal trigger if the target leaves "view" of the area either via teleport, blink or invisibility. Which I don't think the bots have an exact knowledge of where the target is, as I've managed to escape close chases by slipping into a small corner of trees. There is more evidence of this by them using dust if you go invisible in view or not use dust if you go invisible when around a corner while chased.


    So I'd either all it an oversight in the ability, or a half-cheat if a cheat at all.
    My guess is that they are able to get (at least) the location of a hero in FoW for a few seconds after they lose sight (and no, this is definitely not just a movement prediction), unless the unit becomes invisible (my current guess is around 3 seconds), and this is, by any definition I can think of, a cheat. Using dust can be hard coded when a hero becomes invisible in sight, so I'm not sure about that one.

  2. #42
    Valve Developer
    Join Date
    Sep 2011
    Posts
    1,704
    In general, the default bots don't intentionally cheat. Because they're written entirely server-side and aren't written through a narrow/controlled API like bot scripts, they always theoretically have access to all data, and have to be written to never take advantage of that.

    So it's entirely possible that bots do cheat in certain cases, it's never intentional. They have the notion of "last seen position", and keep track of whether a unit is capable of going invisible, for example, so when they use dust they do it because the "lost sight and might have gone invisible" score is high enough, not because they know an Invis Sword was used. Basically, I consider any actual cheating they do bugs, but it's actually kind of hard to keep track of what they should and shouldn't know at every step in their logic, when you have all the data available to you. If I was writing them now, even in C++ as they are now, I'd definitely write them against the bot scripting code layer because it's so much easier to keep them honest.

    There's only one place where they knowingly use data they shouldn't: they know what the enemy FoW looks like, not only from unit vision but also wards. They use this when pathing around to stay out of sight of the enemy team. It would be pretty complicated/expensive to keep track of a whole additional copy of FoW that is "what the Radiant think the Dire FoW looks like right now", so we just punted on it and let them query the actual FoW of the opposing team when pathfinding.

    Also I swear on my life that they know absolutely nothing about Sunstrike and do not intentionally dodge it.

  3. #43
    I don't think bots can see you invisible; they only use dust of appearance if you went invisible near them.

    The only bots I've seen cheat (kind of) is Timbersaw and Furion; using non-target-table abilities on heroes like the 'Q' and 'E' for Timber and Furion's 'W' (I think it's 'W').

    I had a game earlier and noticed Furion following Bounty Hunter, even though he was invisible (could have just been them both heading to the same lane though, but they were in each other's fog of war, only BH was invisible).

    I'm curious to see if Furion and Zeus know you're on low health with their ults, even when no wards are near you; in the jungle and let the neutrals attack you.

    Oh yeah, proof of them knowing is when Furion was being chased by Bounty Hunter once; Furion trapped him (while invisible), ran then tped away lol.

    The weakest one is Prophet, because he seems to like walking through towers recently.

    Overall, these bots are pretty godly and I can't beat them with default bots lol.

  4. #44
    Quote Originally Posted by ChrisC View Post
    In general, the default bots don't intentionally cheat. Because they're written entirely server-side and aren't written through a narrow/controlled API like bot scripts, they always theoretically have access to all data, and have to be written to never take advantage of that.
    Thanks a lot for this clarification I think this answers all the questions regarding bots cheating. So basically everything which looks like a cheat, is actually a bug (which completely makes sense IMHO).

    For enemy vision: I have implemented a safe path finding function (Utility.MoveSafelyToLocation) to avoid enemy vision, which mostly uses the friendly side of the map to navigate. It doesn't use or keep track of enemy vision, but it still works decently (it occasionally makes the bots dive and die, but it is rare enough that I'm fine with it). It also requires O(1) computations in each frame (except the initialization which just happens once per bot)

    For Sunstrike: I believe you, we (players) usually want to blame someone (in this case something) else for our poor judgements/bad plays but I'm (almost) sure they can see projectiles (stuff like hook/arrow) and react to them, which from the previous discussions in this forum I think will be available to us as well. It may be useful to hide those projectiles (if they are not hidden already) when the source is not visible (arrow form FoW or while being smoked for example).
    Last edited by Platinum_dota2; 02-03-2017 at 03:37 PM.

  5. #45
    Quote Originally Posted by DreadedGhoul575 View Post
    I don't think bots can see you invisible; they only use dust of appearance if you went invisible near them.

    The only bots I've seen cheat (kind of) is Timbersaw and Furion; using non-target-table abilities on heroes like the 'Q' and 'E' for Timber and Furion's 'W' (I think it's 'W').

    I had a game earlier and noticed Furion following Bounty Hunter, even though he was invisible (could have just been them both heading to the same lane though, but they were in each other's fog of war, only BH was invisible).

    I'm curious to see if Furion and Zeus know you're on low health with their ults, even when no wards are near you; in the jungle and let the neutrals attack you.

    Oh yeah, proof of them knowing is when Furion was being chased by Bounty Hunter once; Furion trapped him (while invisible), ran then tped away lol.

    The weakest one is Prophet, because he seems to like walking through towers recently.

    Overall, these bots are pretty godly and I can't beat them with default bots lol.
    As you can see from the previous discussions in this thread, there is no way that custom made bots cheat (other than monkey king, which is a completely different story). None of the bot designers here have ever encounters something like this. I have tested my bots more than 100 times (from the time of their creation) and also my code is public (a lot of scripters in this forum have read it, and some are using it). That is why I'm saying if you have a replay, it can be useful, because if what you are claiming is true, it means that the GetUnitList API function is broken and needs to be fixed.

    Edit: furion uses sprout for his push combo (as well as killing heroes are running away), which can be interrupted if he sees enemies and timer uses his abilities to clear out creep waves, what you have seen may be a coincidence.
    Last edited by Platinum_dota2; 02-03-2017 at 03:53 PM.

  6. #46
    Quote Originally Posted by Platinum_dota2 View Post
    As you can see from the previous discussions in this thread, there is no way that custom made bots cheat (other than monkey king, which is a completely different story). None of the bot designers here have ever encounters something like this. I have tested my bots more than 100 times (from the time of their creation) and also my code is public (a lot of scripters in this forum have read it, and some are using it). That is why I'm saying if you have a replay, it can be useful, because if what you are claiming is true, it means that the GetUnitList API function is broken and needs to be fixed.

    Edit: furion uses sprout for his push combo (as well as killing heroes are running away), which can be interrupted if he sees enemies and timer uses his abilities to clear out creep waves, what you have seen may be a coincidence.
    Well, I've downloaded replays and none work for me. It ain't a coincidence lol, Timber and Furion don't seem to notice invisible heroes exactly, but something seems to tell them to use their abilities (maybe a code that tells them to do it on heroes next to them and that is probably affecting it).

  7. #47
    Quote Originally Posted by DreadedGhoul575 View Post
    Well, I've downloaded replays and none work for me. It ain't a coincidence lol, Timber and Furion don't seem to notice invisible heroes exactly, but something seems to tell them to use their abilities (maybe a code that tells them to do it on heroes next to them and that is probably affecting it).
    You CANNOT cast spells on heroes or get their location unless you can see them, and the process of seeing enemy heroes is the same for all the custom bots.
    Last edited by Platinum_dota2; 02-03-2017 at 07:39 PM.

  8. #48
    Quote Originally Posted by Platinum_dota2 View Post
    You CANNOT cast spells on heroes or get their location unless you can see them, and the process of seeing enemy heroes is the same for all the custom bots.
    Lol, I said Timber and Furion; I seen them trap him while invisible and also Timber using his blade and 'Q' on him, when close (he doesn't know he's there, but something in the AI code is telling him to hook onto the tree and use 'Q', because he won't chase him, due to not being able to click on him, hence Zeus is normal, Bloodseeker doesn't spot invisible ones, unless affected by 'E' or 'R' which is good; probably due to the behaviours of the AI you changed, since Timbersaw is aggressive with his 'Q' and his hook, plus his ult.

    I'm thinking it ain't affecting Bloodseeker, since his AI needs to be able to autoattack them to be able to use his 'W' on them; he will never use it while attacking a tower, unless he'll be chasing them.

    Timbersaw tends to use his abilities, if heroes are near; I've sometimes seen (when all the enemy unfair bots are dead apart from one) a bot be waiting for its teammates to respawn, but in range of Timber's ult and I have noticed he always uses 'Q' whenever he is near an enemy, no matter if they're invisible or not.

    Also for Furion, I guess his ability to trap with the trees is the same as Timber's; any nearby hero, use the ability on them (not target-able abilities, but abilities, that you can cast anywhere, which are the ones I have mentioned).

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •