Enhanced_AI_v0.26.35:
http://peppe-dg-mods.googlecode.com/files/Enhanced_AI_v0.26.35.zip
http://peppe-dg-mods.googlecode.com/files/Enhanced_AI_v0.26.35.exe
AI will work hard to get map control.
AI will actively work to keep portal counts even or in its favor.
AI will save for critical upgrades like currency, so it can purchase it at or near warrank 3.
AI generals will consider what healer idols the rest of the team owns when making purchases.
AI generals will send one of their healing idols to an AI teammate on summoning (when 2 are summoned) and on teleport.
Totally off-topic, but both Sedna and mod related, so bear with me Is there any chance to modify the UI ally health/mana mod in such a way skills would be useable on allies by clicking on their portrait? It's really frustrating when you heal the wrong ally (or yourself) in close-quarters melee. This game should not be about super-precise mouse clicking, after all. Every DG having support skills that need targeting could benefit greatly from such a modification.
I'll have to look at the capture logic again. If i recall at warrank 8 it subtracts from the ally portal count, so if its 2-2 portals the AI thinks it is 1-2 and tries to capture an enemy portal to make it 2-1 in its favor (really it is making it 3-1 in its favor). If the AI never gets the portal in its favor it will probably ignore all the other flags. Maybe I'll randomly send it off to the closest enemy flag instead of a portal.
Reg snipe build may over focus on snipe and do less team stuff. I've seen him TP to defend things though, so could have just been distracted by other actions.
skirmish (mod version) .26l/uberfix 1.03
Settings: levi/High Towers - all other settings on defaultAI settings: normal4v4
reg(h)/reg/reg/reg v reg/reg/reg/reg
Observed results:
my team had 2 snipe/mine regs (i was 1 of them) vs 4 snipe mine regs... it was brutal... my team won in the end, but look at the kill screen:
Their team kills... 7/7/4/4
My team kills... 1
That's right... 1. We eeked out a win on WS (which we really shouldn't have been able to hold, but we did).
It was quite excruciating. Having only 2 snipes on my team vs 4 = ouch. Plus anytime I'd land a snipe mid game, whoever I sniped would bugger off to base, so it became next to impossible to get kills. They'd just wander off to safety. Decent programming, but quite annoying for a snipe reg with no chance to get kills.
Anyway, I'm starting to think that maybe we should drop the aa reg build and just stick with snipe/mine.
Another observation: on levi, the regs did port to the portals from time to time to try to save them. Unlike on cataract... might be a distance to flags thing or something.
1) there is no tracking on who has what minion currently following. The condition is to send a minion: randomly send to an ally that does not have the same level idol as the one being cast. miriyaka had an idea to track the minion, but it didn't work when i tried to impliment it.
2) Minotaurs run 10-25 priority and demolisher run 15-30, so for the most part demolishers are bought over minotaurs if it has the money.
3) I can probably add a function to check who is the high gold and only send that one back. Its generally not an issue for normal AI's as only one usually has the money.
4) Experience is not a super high priority item, so it may have bought other items over it. I can up the priority if its a good upgrade to always get. Sedna is also a poor shopper. With her heals she rarely shops and when she does it is usually only a couple items and back out.
5) I bet the silence in the middle of nowhere was based on a health check. I don't think i put a check for enemies on that part, so it blasts silence when it hits a common retreat level.
Very few builds have custom artifact levels, so they are mostly from the global. All of them used to be 100, but i have pulled most of them down to 0.
Bracelet of Rage 100
Bulwark of the Ages 100
All Father's Ring 150
Since the other two are cheaper than all father's they will normally be bought before all father's. The AI always buys the highest priority item it can afford.
I think pounce is fire at will down to a certain mana percent, then it holds it for an interrupt.
Sedna Builds:
The sniper build does tend to stop and snipe whenever it has mana and there is a target in range, so if its a team full of them it may be slow to capture flags. i set the mana threshold at 650, anything below that and it should do more team stuff until it gets mana and a target gets in its range, then it is back to sniping.
would you mind dropping (commenting out) the aa reg build from the next release? I think if I had a choice of a reg that sniped alot and 1 that more proficient at taking flags/dying , I'd take snipes alot.
I think bman? said the UI couldn't pass values to the sim? something made it difficult or impossible.
yeah - the best guy for ui coding was bman and I don't believe he frequents the forums anymore (a bit of a drag too, considering the new stats that are currently available in uberfix).
Yes, the UI lua cannot touch any actual units. The engine UI obviously can, as it sends orders you give units to the sim, but lua cannot issue any orders or get handles to any units on the UI side. This is to prevent a whole boatload of exploits (both of the cheating and desyncing variety).
Re: tracking healer assignment, this should be very easy. It's just a matter of testing code to find what works. Stick these utility functions in AIGlobals or AIUtilities or wherever, and see if you can get them to work. If they cause an error, and you can't figure it out, let me know. This is a fully solvable problem, it just needs the right approach.
The conditions in ShouldAssignHealer might need to be expanded to include GENERAL category checks and subsequent healer type comparisons, etc. It should be easily expandable to do healer-swapping between two generals.
AssignHealer also needs to set some kind of flag on the assigning AI or demigod unit, so that it knows where its healers are. You might already be doing this - I haven't looked - so I didn't implement that.
This should also be adding OnKilled callbacks to the assignee demigod that tells it when its healer is freed up. This isn't difficult at all, I'll just need to do some review before I can tell you how to do that.
Oh crud, that system also has to have a means to account for teleports. What happens when the owning demigod teleports, does the minion immediately try to re-guard its target? Or is that order canceled?
Also, what file/function are you assigning healers in right now? I should probably look at what you've got before I keep offering suggestions.
lua\common\Items\generalitems.lua
In a loop for the number of healers spawned, the second healer spawned is given the guard command to another hero. Selection process for those heroes is: find all demigods on our team. of those find ones that do not own the idol we have. of those randomly assign the spawned minion to them.
On teleport all minions are warped to thier owner and assigned guard command to thier owner. That is done in \lua\sim\ability.lua, function WarpMinions(unit). I think i forgot to update the logic there to see which allies own the idol, so it is just a random send of the first healer unit it finds. Since it is at the health stone even if it only has one unit it will summon a new one shortly, so it is safe to send off its only healer if it has one.
Where in the AI code are teleports and healer summons initiated? I'm thinking there's probably a cleaner way to do this, but I'm having trouble tracking down the source of these orders.
Both are in UseItemActions, and I think both can be hooked nicely to handle healer assignment and re-assignment.
I'll work in this in my spare time; for now, just change both of the categories.HERO to categories.HERO + categories.ASSASSIN, so it's not dumping healers on generals. You'll also want to modify the WarpMinion method so that it counts healers before it sends them off (just do a table.getn(minions) instead of adding in the loop), because not all teleports are to health stones. It's better for the AI general to keep one healer if they have it, and then send off the other whenever they summon it, which is already handled in the summoning function right now.
Edit: Actually, looks like the summoning function will have to be modified too. This is already getting complicated - there's simply no fire-and-forget way to handle healer assignment, and they'll have to be tracked somehow.
A thought after some unrelated testing with Uberfix 1.3 and Skirmish AI v26l enabled. Is there a way to 'teach' the AI focus on ONE enemy? Let's say in 2v2 skirmish, human players will almost exclusively target one of the 2 opponents (switching targets only for interrupts). The AI is just happy to bash at whoever is closer to its current position, or, which is totally ridiculous, will ignore wounded opponents with 200 hp 10 yards from him, because there is a flag in closer proximity. That's what Cow meant by saying the AI lacks the 'killer instinct'. A potential kill should be a priority. In fact, to kill an enemy and then to be shot by tower is a worthwile trade-off in most cases.
Another note: Rook and UB on Hard seem to be acting weird. UB apparently has serious pathfinding problems (on Cataract): sometimes, it gets half-stuck at lane corners. Rook has those strange idle periods when he does absolutely nothing (not even AA!). Curiously enough, I don't think I've seen those issues on Normal or Nightmare, but then I haven't played much with/vs AI UBs and Rooks.
Hedgie's build (heal_silence) should not fire Pounce at will at all. Please take a closer look at the build. It gets:
'HSednaPounce02', # 16
'HSednaPounce03', # 17
'HSednaPounce04', # 18
Practically, it means those heal_silence Sednas just waste mana by Pouncing at will for 400 damage for 80-90% of match's duration (not to mention many matches end before levels 16-18 are reached)! They all have Nature's Reckoning. Why waste mana if you can AA+NR with better results?!
26m:
http://peppe-dg-mods.googlecode.com/files/Skirmish_AI_v26m.exe
http://peppe-dg-mods.googlecode.com/files/Skirmish_AI_v26m.zip
Sedna level one pounce should not be on fire at will.
Reg auto attack build disabled. He just has the snipe build active.
Noticed the nightmare AI's did not have much to buy mid-late game, so put in a few artifacts for them to blow money on.
For critical single item citadel upgrades only the high AI will go back to purchase (currency and giants for example).
Hero attack selection was basically select the weakest non running away unit. Swapped them to select just the weakest unit. Will need to test to see if the focus fire is better.
Before going aggressively for portals at warrank 8 the AI will check that it has at least equal map control. Should help it re-capture valor or other flags as needed.
Not sure on pathfinding issues. Would have to determine what action they are in and see what kind of move command it used. Most long distance moves require a path be created and move commands issued for each waypoint in the path.
ty - good for a test.
I think I like your reg ai specific coding here. Snipe reg made for some fun and I think having him as a teammate or enemy should be fun. I'll try a few all reg tests soon along with a few just adding a reg on a team tests and seeing how things go.
Oh - and side thought - if you want to add it to the coding (if you can), any ai reg on any team should purchase cur1 and fs1. Regs in MP are generally burdened with the citadel upgrades as they are somewhat effective at a distance. Anyway, add that bit (any ai reg is the primary for early cit upgrades) to the mod if you get a chance. Thanks!
Will test this build Monday.
Another quick test with legions of Sednas. This time, I set War Rank = 5, Starting Gold = Rich, to make the match end a bit faster. Otherwise, Cata, High towers, Sed (h)/Sed/Sed/Sed/Sed v Sed/Sed/Sed, all AI Nightmare.
Some weird things happened:
(1) The AI didn't buy FS1. Like, totally. They bought Cur1 and left the citadel for artifact shopping.
(2) EXTREMELY artifact-happy. I don't think it should happen. Please change the artifact buying priorities to something milder. Everyone was getting Mage Slayer (kinda meh on Sedna, BTW) ASAP. Doesn't make much sense, IMHO. Well, I know Nightmare AI has tons of gold, but there are much better uses for this money surplus than Mage Slayer rush.
(3) Silence use: okay, I can live with it. Not a bad timing.
(4) Pounce... Uhhh... The AI still religiously fires 400 dmg Pounces at will.
(5) Focusing fire. Much improved, IMHO. The change introduced is a most welcome one. Even Jona doesn't go that far into enemy towers for a kill!
Replay: http://www.gamereplays.org/demigod/replays.php?game=51&show=details&id=171826
I don't think the AI is intended to be played at those settings. The priorities for artifacts are set higher then fs1 probably because in a normal game fs1 will be available a lot sooner then an artifact to buy, you started with gold on rich + nightmare ai. this nets the ai a ridiculous amount of starting gold and its no surprise they all went for artifacts.
Hahaha what is the point of this test? Pretty sure nightmare AI starts with like 30k gold, if I start with that much I'm skipping FS1 too. And why 5 Sedna vs 3? You should expect some weird things to happen when you start up a weird game.
On cataract they should not have gone artifact shopping until their side owns the shop, so it was probably just the standard 20 second shopping to start followed by capturing the first flag (random selection of 3 closest flags with lowest threat).
Once they owned the artifact shop if they were near the shop and had the money then they would buy artifacts.
I set mage slayer, girdle of giants, bulwark, and all fathers as globally ok to buy. I also added godplate as an ok item to buy globally. I added these back to address a complaint of the nightmare AI dropping off midgame. Nightmare AI's generally have 10-20k to spare before warrank 8, so figured mage slayer is better than banded armor. If there are specific builds or classes that these items should not be purchased for we can zero out the priority in the specific build. If any of these is globally bad I can remove its overall priority as well.
If we want to force builds into having more cash for upgrades I guess we can zero out the global items they should purchase. This would weaken their hard/nightmare game as they can probably afford upgrades and items on those difficulties.
Maybe just drop out the mid lvl artifacts from these builds (maybe anything under 12000) this way they will still get the best artifacts but will have to save for longer to get them and increasing the chance of an upgrade (or multiple) significantly. I think that Nightmare AI should still be able to afford the most expensive items end of mid - start of lategame.
Have them get Journey Man treads instead of mage slayer. That might be a little imbalanced against nightmare AI since they could buy them right away, but everyone's better with J-Mans.
I agree regarding j-treads. I also suggest if the ai is rich that simply going with godplate is a decent move as well and doesn't require a trip to the artifact shop either.
There are many great features available to you once you register, including:
Sign in or Create Account