pacov pacov

The Updated Enhanced AI Mod Thread

The Updated Enhanced AI Mod Thread


Updates:

Public version 1.03 live 1/18/2012 at 6:07 PM EST


 


Download links:

Link to the latest version PUBLIC version of the mod:  http://www.box.net/shared/g8lbbhpojik4tbkjn6su


I created a post that tracks the history of the AI in Demigod and it covers a good chunk of the development that has already been handled by the modding community.  If you are interested, see over here for more details:  http://forums.demigodthegame.com/409712

The Project

Using the last version of peppe’s AI mod (0.26.35), I’ve started development on updated versions of the AI mod.  I’ll be releasing those versions here, tracking bugs, enhancement requests, rebalancing, etc.  I won’t be adding a new version to my combined DG installer until we make a decent amount of progress or come up with some sort of significant enhancement to justify a new release to the community at large.  It took us a long time to get reasonable adoption rate on the existing ai mod – I’d rather not force folks to redownload the bundle over and over.

The Project Team

  • Project lead:  pacov
  • Lead design/coder:  pacov
  • Lead support:  miriyaka – without miri, the majority of the changes we are looking at would not happen
  • Testers:  sledge, plaguewraith, and darkliath 
  • Contributors:  Lord_Orion

If you’d like to help in any way, we are happy to have you on the team.


Current status (what’s being worked on)

  • Build updates (removing inefficient builds and replacing them with new ones) - complete
  • Reprioritization of citadel upgrades, items, trips to the shop - largely complete - some late game tweaking still possible, but its improved quite a bit
  • Implementing a fix for AI’s with summonable minions so that they do not waste mana summoning more after the have created the max number of minions (miri created some code and I’m looking to make it work)  Resolved in 0.26.41
  • Recoding the ShouldSave functionality to improve the coding efficiency and gives us additional flexibility.  If we get this working, it will be a very solid improvement and provide more options.  - this has been implemented

Bug list (unless otherwise noted, these are all bugs from the original 0.26.35 version)

  • Stuck AI – the AI can get stuck on occasion for > 30 seconds
  • Poor scaling based on AI difficulty - this has been improved but there is still room for improvement
  • Not enough shopping trips for the AI unless it is killed or sent back the base with low HP (eg an AI could have 10k gold and still not attempt to shop and get better items) - 1 forced shopping trip at wr 4 has been added... might be good to do more, but much better now.
  • AI is not always getting fs1 in a timely manner (resolved in 0.26.39)
  • Some abilities are not being used as often as they should (a sedna, for instance, with pounce as her only ability would use it once in a blue moon) - continuing to make improvements (pent/pounce/grasp/deep freeze have all been fixed)
  • Some abilities are being used at inappropriate items and wasting mana as a result
  • Customized settings often throw the AI off.  For instance, if you set a game to being at WR10, the AI don’t shop (not sure if we want to try to code this to cover all possible settings) - improved some.
  • AI standing around at the shop at the beginning of the game (introduced in 0.26.38 – happens randomly and seems to only impact 1 ai on a team) - resolved in 0.26.40
  • Not truly a bug, but something I want to change - need to make it so the high gold dg can still buy things for themselves (resolved in 0.26.49 "siesta")
  • AI considers minions as part of a DG's army... this is good and bad - its good to target healers from time to time, but if I can make an enemy target a shambler while I'm wailing on him...

Enhancement requests (these are changes that folks would like to see happen with the AI)

  • Better healer distribution.  The over all goal would be to ensure that monks/clerics/etc are sent to appropriate players.  The basic code works fine, so this is a lower priority change imo.
  • Improve da’s shadow swap usage – plaguewraith suggests removing it completely from his build (might be a good temporary solution until we can tackle this) (removed 0.26.55)
  • Better creep farming with skills.  Plaguewraith indicated that he never saw a tb use circle of fire to farm.  This is something we could tweak, but we’d need to think it through
  • Lord-Orion suggests we remove all ub builds except for Spit/Ooze life - REMOVED 1 OF THE BUILDS 0.26.40 - still 2 left
  • Lord-Orion suggests we optimize all builds for skill dmg output as the AI cannot currently rationalize like a human can. 
  • Lord-Orion suggests we go with a basic item prioritization of 4 life/1 helm builds – I agree to some extent… (pretty much done as of 0.26.52)
  • Come up with a way for the ai’s to intelligently chain stuns or interrupts to go for kills.  In theory, the AI could be even better than a human at this if it was tied to precise timing
  • Teach the AI to teleport for ganks (this could be tricky – would probably result in a lot of pointless tp’s)
  • Find a way to help the AI manage mana better.  Early game the ai’s are almost always out of mana
  • Teach the AI when to shop!  (big improvement with 0.26.49 "siesta")
  • Have the AI always engage a simple enemy opponent if on a flag if hp is good, etc
  • Have the AI choose to engage towers on a regular basis (improved a lot since 0.26.54)
  • Have the AI refuse to run past towers in most circumstances and instead TARGET THE TOWER if no dgs around
  • Improve cataract map logic – the ai often goes into the middle of the map instead of staying in a lane.  This is probably due to the proximity of the creeps when the ai is working on capturing the middle flag (or if all flags are controlled by their team).  Ideal behavior would be to try to capture the middle flag and if its already controlled, then get into a lane on HP or Mana.
  • Override the flee functionality if there is an enemy dg and its likely possible to get a kill
  • Better decision making for flags – Ai heading over from mana side all the way to Hp without capturing mana.  this is likely due to flag weights… just not sure why it didn’t evaluate hp as the priority initially – could be some conflicting code?
  • Send the AI back to base if its low mana (sledge) – We might do something for this, but it would have to be a conditional statement – perhaps add a check to see if they are at low mana around X Ws have > X money, then run back and prioritze getting a helm as an override
  • Plaguewraith suggests removing mist from erb’s build – I’m not sure about this yet.  He says remove it or build a routine to cause erb to use it just to get rid of negative buffs – I agree that we could use a routine like that.  - mist removed in 0.26.40
  • Encourage the AI to react quickly if they are losing a flag that is near 2 or more towers (eg gold flag)
  • Increase the frequency that the AI picks up sigils – not sure about this one – I agree a good player should generally have one, but the AI might just blow a lot of money casting when it doesn’t need to and fall behind as a result.  Perhaps this becomes a conditional statement to raise the priority after ws X (0.26.47 - implemented)
  • Add an override so the ai will only go for flags like gold if the tower is down.  Add another override so the ai doesn’t go for portals early (probably WS related)
  • plaguewraith – delete the tb builds and just stick with 1 fire tb build - REMOVED 1 BUILD - only pure fire and pure ice remain 0.26.40

Change log

version 1.03
-Created new UID
-Adjusted hero/squad targeting values to increase AI skill use aggression
-Adjusted range cutoff multiliers to mitigate the chance of the AI from running past towers to cap flags
-Adjusted/fixed errors in Oak, Queen of Thorns, Unclean Beast, Regulus and Demon Assassin AI builds
-Re-enabled Sedna Pounce build and Queen of Thorns Shield_Spike build
-Homogenized AI build names so it is obvious what skills the AI is using.

version 0.28.00 BETA
- removed unclean beasts AA build as the Spit ooze build is generally a little better

version 1.02
- created new UID and incorporated all changes since version 1.01

version 0.27.09 BETA
- Disabled a substantial amount of logging (will result in a substantial performance boost for many)
- added miri's scenario name capture function to CommonUtils.lua (doesn't work now, but isn't being called)
- began to tweak ub's usage of ooze.  Reduced health activation from >= 40% hp to >= 30%.  Also reduced the deactivation health value from < 40% to < 30%
- reenabled the attack override in herogoap
- updated the flee mastergoal to set at 50% HP instead of the current 75% hp
- Added an action time to health pot usage to hopefully keep the AI from using a pot at lower HP, having the pot bring them up to full strength and then having the ai immediately sigil

version 0.27.08 BETA
- Added new action and instant status function in useitemactions to keep the AI from "double locking" flags (eg wasting locks on a flag that is locked)

version 0.27.07 BETA
- increased sigil activation health % from 45% to 50%
- added new hammerslam calculate rates function - should increase the odds that rook will slam if the unit is stunned (should work for any type of stun)
- rebalanced weights of rook's actions to bring them more into logical numbers
- rebalanced weights of erb's  actions to bring them more into logical numbers

version 0.27.06 BETA
- reduced sigil activation health % from 50% to 45%
- changed orb of defiance usage check so that it will consider using it before sigils
- removed grunt check on orb of defiance (previous the AI would refuse to use use the orb if the threat level was < 15)
- added nearby enemy hero check to orb of defiances - if no enemies nearby, then orb will not be used
- reduced the value of narmoth's ring on the AA ub build so that it is not choosen as the only item at the start of a game on nightmare difficulty
- reduced the captureflag override at the start of the game from 60 seconds to 40 seconds
- disabled the attack override to allow the ai to make its own decisions based on weight
- Reduced the reteat values if there are nearby enemy heroes and towers from 85% to 75%
- modified rules for dg vs dg fights.  AI will run if there are more enemies than allies present

 version 0.27.05 BETA
- removed the nonworking per map flag settings
- revised the generic flag settings
- disabled all existing rook builds
- added new "more balanced" hammer slam tower build

version 0.27.04 BETA
- continued to enhance the documentation in heroGOAP
- added new logic to provide a count of heroes/enemies in heroGOAP for decision making
- added rule so that the AI's goal will flee if 3 or more enemies are present vs 1 ai
- changed default value of gold and portal flags to 0.5
- increased unit.movecutoffrange from 1.2 to 2.5 in attackactions
- fixed a problem with da's new swap logic
- continuing to test out flagassets.lua - I don't think values are being loaded for each map

version 0.27.03 BETA
- removed erb's desire to cast stun as an interrupt as its not possible
- increased erb's desire to bite
- increased oak's desire to use surge to kill units
- removed sedna's desire to use silence as an interrupt as its not possible
- added comments to heroGOAP to try to track where the AI is getting stuck (NOTE - this could slow down some lower end pcs)
- added new logic to count the number of grunts near a hero for decision making purposes - previous check was based on threatlevel
- changed the balancing capture flag logic so that the AI will re-prioritize capturing flags if there is a difference of 50 in warscore
- changed AI's desire to buy capture locks from WR 4 to WR 6 - AI will not purchase them prior to WR 6

version 0.27.02 BETA
- major revamp to DA's swap ability - da will now only swap if the number of allies is > enemies near da
- disabled existing DA build
- enabled STANDARD_ASSASSIN da build (eg what most players use when playing da) now that swap is working as desired
- disabled pounce sedna build

 version 0.27.01 BETA
- updated TB's frost nova so that it is used more often

version 0.27.00 BETA
- created new UID - this is done so folks can still keep the release version 1.0 installed and try out new "beta" versions and help with testing, etc
- added additional documentation to AIGlobals.lua
- adjusted the saving routine so that angels are not saved for until ws 7
- changed the way the AI evaluates additional shopping trips.  Now based on warscore
- fixed a minor bug with reg's mark of the betrayer squad target
- added additional shopping trips (see details below)
    # SHOP PERIODS
    # Warscore >= 300, AI with most money, possible to buy fs1, at least 600 gold
    # Warrank >= 3, AI with most money, possible to buy cur1, at least 1800 gold
    # Warscore between 2450-2575, NOT AI with most money, at least 1500 gold
    # Warscore between 3100-3225, AI with most money, at least 1500 gold
    # Warscore between 3800-3925, AI with most money, at least 1500 gold
    # Warscore between 4150-4275, NOT AI with most money, at least 1500 gold
    # Warrank 8 OR AI already bought the upgrade, priest/angel/cats available, AI can afford the upgrade
    # Warrank 10, possible to buy giants, AI can afford the upgrade

version 1.00
- created new UID
- removed any "pacov" labeling
- changed name to Enhanced AI (peppe's original version was Enhanced_AI
- updated version name to 1.00 (numbering convention will be 1.00/1.01/etc going forward)

 version 0.26.56 (misc fixes + pounce sedna build is live)
- removed CaptureFlag goal weight from oak's pent functions
- removed CaptureFlag goal weight from rook's hammerslam functions
- removed Captureflag goal weight from tb's deep freeze functions
- removed CaptureFlag goal weight from ub's grasp functions
- removed ub's mygraspstatusfunction and replaced with DefaultStatusFunction
- removed oak's myPenitenceStatusFunction and replaced with DefaultStatusFunction
- removed sedna's myPounceStatusFunction and replaced with DefaultStatusFunction
- substantially increased sedna's desire to pounce
- re-enabled sedna's pounce_tank build

version 0.26.55
- fixed a bug that still allowed demon assassin to pick up swap
- fixed a bug with unclean beast's grasp code
- enabled new hammerslam/tower rook code and tweaked desire to hammerslam
- increased sedna's desire to pounce (did not re-enable the pounce build yet)

version 0.26.54
- removed the remaining demon assassin build and added a new build without swap per request
- reworked the valor flags weight.  Should be less desirable for AI prior to ws 8
- tweaked deep freeze to be cast much more often
- re-enabled ai priority to attack structures.  Tweaked the formula so the AI will immediately back off if any enemy dgs come into range.  This should reduce the odds of death and also keep the AI from wandering past towers for the gold flag, etc

version 0.26.53
- increased artifact weight so they will be kept if the AI purchases
- added mageslayer to the generic equipment purchase list with a priority of 110, moved godplate to 120
- enabled oak to cast surge when trying to flee

version 0.26.52
- substantially increased the odds that oak will attempt to interrupt
- removed demon assassin speed_spine build
- re-enabled the graveyard level 1 upgrade
- minor misc changes
- changed ai's desire to pick up locks from level 3 to level 4

version 0.26.51
- rebalanced the general equipment builds
- rebalanced the specific demigod equipment builds
- removed AI's desire to purchase any graveyard upgrades
- removed "cloak of invisibility" from artifact prioritization as the item does not exist

version 0.26.50
- Reduced priority from 35 to 20 for boots of speed on UB HP/ooze build to keep the AI from purchasing boots of speed as the first item if the AI is set to normal
- increased priority of grofflings plate in the general build
- substantially increased ub's desire to grasp in game
- updated flag goal for cataract to reduce the AI's desire to grab the valor flag early (eg the AI running to the middle of the map)
- increased ice tb's goal to make it use deep freeze more often (tb's abilities all need a bit of an overhaul)
- various item selection tweaks

version 0.26.49
- changed desire for flag locks to increase at wr3 instead of wr4
- adjusted AA ub build so that it will never choose mana items (unbreakable is still acceptable, though)
- implemented the "siesta."  At warrank 4, any ai (not the high gold AI), will return to base to shop as long as they have 1500 gold.  Then, towards the end of wr4, the AI that is the highgold AI will shop alone. 

version 0.26.48
- added miri's check to force the tb to stay in whatever mode its build is designed for.  This should improve the AI's usage of abilities tied to the pure ice or fire builds.  Confirmed that fire tb will stay in fire form and ice in ice form based on build.
- continued to balance item selections
- Changed Rook's favor item to blood of the fallen
- TEMPORARILY turned off the attack structure code

version 0.26.47
- made MANY balance changes - all changes are noted in the files, but too many to detail here (so I'll cover highlights)
- changed ideologies for the mod.  Before the goal was to force the AI to do everything I wanted it to do (simply buy cit upgrades) - now I'm planning on having it scale that back and focus on becoming an arse kicker
- odds your ai will have a sigil is MUCH higher - this improves survival odds ALOT
- ai will always purchase fs1/cur1/priest/angel/cats/giants - that's it.  AI will no longer get any levels of experience.
- ai will VERY OFTEN have locks - I still need to teach the AI how to use locks better though... so at least for now, it will have them...
- MANY item prioritization changes - If you understand the modding side of things a wee bit, there are 2 ways a dg chooses equipment/items:  1 - a general list that contains all recommendations.  2 - a list that is specific to demigod build.  I spent quite a bit of time improving the general list today and started working on the 2nd method that includes build specific items.  I've only started on QoT, but I will likely get her to mimic my standard QoT build for items.
- removed some additional checks to help reduce overhead of the AI

* note - I have not begun to force shopping trips on the AI outside of fs1/cur1/priest/angel/cats/giants.  I'll be looking to start phasing in shopping trips to encourage the ai to get even better items as appropriate.  AI will still shop if it gets its arse kicked, but I want to schedule some trips so the AI will get stronger at different intervals even if its doing fine.

version 0.26.46 (the getting back on track version)
- added miriyaka's changes to the save function so that we can evaluate based on warscore as well
- added saving for fs1 as a priority after ws 200
- updated value for fs1 to increase its priority to 200 after ws 300
- removed log writes from miri's savefor, etc to see if that helps the lag issue that's been mentioned
- confirmed - the generals will now choose monks if they are a normal ai with default settings (instead of saving for fs1)

version 0.26.45 (the lesser of two evils/back to basics version)
- the title gives you an idea - if you play on normal settings with 1 general ai, they will NOT purchase monks at the start.  This is not desired behavior.  But in allowing this, the AI does not freeze between ws2 and 3 for any extended duration.  Sadly, the other option right now is you get monks, but the ai stands around like an idiot at ws2.  
- Added additional documentation for the herogoap file
- disabled the trip to the shop for ws 5 to get cur2
- developed basic test code to send the ai to the base if its not the high gold ai
- backed out the changes that increased rate of fire for bite/pounce/pent.  We'll visit this again, but I'm concerned that the ai is overriding their flee function due to the high priority I put on these abilities resulting in more pointless deaths.  My goal is to simply make them use their abilities more often... not die like goofs.
- tweaked the rules for purchasing sigils.  AI will not buy them until ws 2 and only if the AI has a max health > 2750
- removed assassin sedna build again until I get back to sorting pounce

 version 0.26.44
- hopefully corrected a bug that would cause the ai wait around to purchase an upgrade if it did not have enough money of the ws for it.  This should give us new opportunies for balancing upgraded in the future.  The short version is I updated HeroGoap perform a check if the ai can afford the upgrade they are saving for before heading off to the shop.  Not enough money = no shop.  I'll be looking into explicitly sending specific ai's to shop on some sort of interval in the future
- (not a real change... but started deep dive into integrating miri's savefor function)
- removed cur2 shopping trip for now - it still gets a high priority, though

version 0.26.43
- added miriyaka's save for gold functionality
- disabled ai goal chat function from herogoap 1198

version 0.26.42
- substantially increased the rate that erebus uses bite
- substantially increased the rate that sedna uses pounce
- re-enabled assassin sedna build now that pounce is used more often
- substantially increased the rate of oak's penitence
- added another shop period at ws 4 - the ai with the most goal should head for base a 4.  This might result in a different dg being choosen for highgold after

version 0.26.41
- added miriyaka's summon shambler fix.  The code would work for QoT, Sedna, and Oculus.  I'm only implementing it for QoT as this would be a disadvantage for the Oculus build and sedna does not use yetis in the AI mod
- Removed anklet of speed from all TB builds and replaced with Blood of the Fallen.  The ai is not smart enough to use a speed fire tb build
- Removed the file mod_units. This contains fixes already in uberfix and is not needed here
- Enabled master goal chat - this is a debug function that broadcasts what the AI's goals are - you might find this annoying...
- Re-enabled code that adds a destroy structure goal for the AI.  Peppe turned this off at some point... probably for a good reason, but I did see the AI being more aggressive attacking towers, so I'm leaving this on for now.
- Made some adjustments to the flag weights on cataract.  This SHOULD end dgs running over the the mana flag at the start and then rushing to HP before they capture the mana flag.  Reduced the weight of the gold flag to encourage the ai to attack structures first.  Reduced the value of portals prior to ws8.
- Removed all oak builds and added a new shield/pent focused build
- Minor change for reg's build - added impedance bolt at level 16 instead of stats 1

version 0.26.40
- removed the code that placed a limitation on what items could be purchased at the start of the game (AIShopUtilities 736-741)
- Changed the priority level trigger from WarScore to WarRank for fs1 (AIGlobals 1433) - this appears to have resolved the ai's standing at mid issue.  The Ai will purchase fs1 at ws2 now correctly
- Changed AI's priority to get xp2-xp4 to 0.  AI will no longer purchase these upgrades
- removed mist and added coven 1 as erb's level 2 skill until we get a chance to write a routine for him to use mist to remove negative buffs
- Updated ai priority values for minotaurs to 0/5/10/15 (eg an ai will never buy the 1st level minotaurs now) - I was seeing the ai pick this up as a cheap filler if they have the money - not worth it
- Updated ai priority values for level 1 archers - dropped from 15 to 0 so the ai will never buy
- updated ai priority values for hauberk of life - dropped from 40 to 35 so that unbreakable would be chosen over this if money was available
- updated ai priority values for unbreakable - removed conditional formula and set to a static 39
- removed ub skill build spit_ooze_mana (essentially bots ub)
- removed hybrid_fire_ice build from tb (bots tb)

 version 0.26.39
pacov is learning things… :O
- reprioritized AI to purchase fs1 at ws2.  Previously, it only purchased it if made it back to base with enough money; this forces it back to base to get it if no one else has
- raised priority for currency 2.  Logic mirrors currency 1 as I want this purchased every time.  Also sending ai with the most gold to purchase at ws 5.
- removed assassin sedna build until I have a chance to look at the pounce training – assassin sed should be pouncing left and right… right now its like once in a blue moon – heal_tank sedna is solid though

version 0.26.38
removed unitstatussensors code – concerned it might be causing an issue
- tweaked erebus build so that he gets mass charm later – he’s not using it well as is

version 0.26.37
bugfix – just resolving a sytax issue

version 0.26.36
copy of peppe’s version 0.26.35
- removed 3 old sedna ability builds
- added 2 new sedna ability builds
- removed old qot ability builds
- added new qot ability build
- removed 2 old erebus ability builds
- added 2 new erebus ability builds
- uncommented some code peppe developed in UnitStatusSensors that might help resolve the frozen dgs
*note – all builds that have been added by me will be announced in team chat at the start of the game and will say “pacov” folowed by the build name.

1,458,814 views 458 replies | Pinned
Reply #201 Top

Concerning 0.26.49, Uberfix 1.05, normal difficulty

I just had a very interesting game with the AI where I participated too. My random teammates where a pure_fire TB (TB is not a strong AI partner but it helped me tearing down the towers nicely) and a speed_spine DA. Our opponents were an UB and two Regs.

First suprise was that me was buying currency at WR4 (But I think that´s ok. Why always rely on others?) the other (much more annoying) thing was DA who died 14 times (!) giving the enemy team an enormous boost that it made quite harder to win the game (the others were dying two to 4 times i think). Sometimes I was able to see him in "action" using shadow swap to swap himself into towers a die nicely...

He really has to be fixed (or can be used to make a game harder ^^).

Reply #202 Top

I see pavoc that you also started the essential mods topic which is stuckied in this forum. Is this AI mod built around vanilla DG, or does it assume you're using mods like CrazyTown?

Reply #203 Top

Quoting Plaguewraith, reply 202
First suprise was that me was buying currency at WR4

Yeah - the AI is designed to save money starting at Wr2.  On a normal game, its quite possible that the AI won't have enough money until wr4.  The AI with the most gold will try to buy ASAP after ws 3 though.  This certainly doesn't happen every game.

the other (much more annoying) thing was DA who died 14 times (!) giving the enemy team an enormous boost that it made quite harder to win the game (the others were dying two to 4 times i think). Sometimes I was able to see him in "action" using shadow swap to swap himself into towers a die nicely...

He really has to be fixed (or can be used to make a game harder ^^).

Yeah... I'm not sure what specifically to change in his ability build atm.  I can tweak his item build a bit to make him more durable, but he'll still quite likely warp strike when its foolish or swap in a silly way.  Sounds like a lot of coding would be needed to make sure he only does this or that in certain cirumstances.

 

I see pavoc that you also started the essential mods topic which is stuckied in this forum. Is this AI mod built around vanilla DG, or does it assume you're using mods like CrazyTown?

The AI mod is stand alone using vanilla dg.  I typically play it with uberfix enabled, but that's not required.  You should be able to play it using crazytown if you like as well. 

 

Reply #204 Top

Fully agree with Plague that the DA just sucks. The TB though got better now and is acceptable.

 

I had a game 2v2 on nightmare all on random. I got QoT with Occ against Sedna and Occ. My Occ played very stupid. He didnt use Chain Lightning or any other skill. I fight Sedna and he sits a bit behind me with full hp and mana doing nothing. When he joins the fight he shoots at her but thats it. Saw a few butt jumps but never a chain lightning and he had 6k mana. The opponent Occ though did use chain lightning. Are there different builds for Occ? As I think there is only one build for Occ and it certainly contains chain lightning. The Sedna also didnt pounce but at least she healed the other Occ very well.

 

We won easily by tearing down all towers but I had no kill and no death and my Occ had 1 kill with 1 death. Me with 1 assist enemy died a total of 3 times. So low killing game which is good on nightmare. The Sedna behaviour isnt that bad but my Occ needs to behave different.

Reply #205 Top

Quoting SLEDGE71, reply 205
Are there different builds for Occ? As I think there is only one build for Occ and it certainly contains chain lightning. The Sedna also didnt pounce but at least she healed the other Occ very well.

Only 1 build for occ.  The senda pounce thing is something I need to revisit. 

Reply #206 Top

Quoting OMG_pacov, reply 200
OK miri - need to pick your brain. In trying to sort ub's grasp (eg he never used it before i started sorting it), I came across a problem.

I can make him use the function just about every time its available (which is actually what I'm looking to do atm), but I'm having to force an error in the code to do this. Sounds bad, of course. If I do it "proper," I see a marginal improvement. If I don't, then I get the desired function of spamming the ability over and over. The reason seems to be some overhead with DamageCalculationFunction.

I've done tests with it working as expected and commented out. The code clearly requires it to exist (if its commented out, an error is thrown in the debugger), but the it appears as if the AI time required to perform the calculations results in the UB often choosing not to use the ability. Anyway, I'm just going to copy the entire section of code from hepa01_aiactions. Any thoughts? And side note, I had to create a new function (included in code - I'm only going to copy the foul -grasp hero code and skip the squad).

I don't really understand what you're talking about, because in the code snippet you posted, you're not touching the DamageCalculationFunction at all, and you're just changing the InstantStatusFunction, and changing it in a completely pointless way - if DefaultStatusFunction returns true, then not only will the AI have > 300 energy, but it will have enough energy to cast the ability (which costs far more than 300?).

Peppe's version of the function has some extra checks to PREVENT the AI from casting grasp too often.  All you should need to do to undo that is revert the ability back to its default state.  Remember that grasp has the highest mana cost per level of any ability in the game, and it's a point-blank ability, so its action may be interrupted by other AI events (low health sensor etc) and it won't and can't be cast as often as other abilities.

 

You also definitely do NOT want it on all goalsets (virtually no abilities should be on All), as that will just confuse the AI and add CPU overhead while the AI isn't on an attack goal.  I can assure you that the goalsets it has by default are the ones it needs, likewise with the squad version, which has special options for squad attack.  You could possibly add the CarefulAttack goal - I'm not sure when that's used, but it's the only attack/advance goal that isn't already on that action by default.

If anything, the only change you made that would have a positive effect would be the GoalWeights, and you're using values that are ridiculously high and may cause other issues within the AI.   Revert the ability back to the vanilla default (not peppe's version) and try GoalWeights of -10 and -5 or so for both Grasp actions, and -5 to -10 for the WeakHeroNearbyAdd (this is added to the KillHero weight for demigod targets considered weak or low health).  There are no built-in limitations on the stock Grasp action functions that I can see - they will all return true if the ability can be used at all.  Peppe's changes tried to make it used for interrupt only, which we know won't work due to the speed at which the AI makes decisions.

Reply #207 Top

Quoting miriyaka, reply 207
You also definitely do NOT want it on all goalsets

Good tip.  Was not aware and I'll adjust. 

I've actually got it working how I want it now without any coding errors.  Going to review my code and adjust based on your feedback though.  Thanks!

Reply #208 Top

side note - I am really liking how I've got both ub builds tuned at this point.  Great use of grasp and spit (if the build has it).  I also made a change to reduce the value of the valor flag before ws8.  This has MOSTLY (at least in my tests) resolved the issue of the AI just wandering around the middle lane.  As they want all of the flags on the outside lanes more, they don't really say at mid after capping the xp flag.

edit - looking at tb now... I see sooo many different things that should be tweaked a bit w re: to how he uses his abilities.

Reply #209 Top

One thing you might want to try is keeping the KillHero weight down on Grasp (like -5), and pumping WeakHeroNearbyAdd to -45 or so, saving most grasping until the target is low on health.

Reply #210 Top

Quoting miriyaka, reply 210
One thing you might want to try is keeping the KillHero weight down on Grasp (like -5), and pumping WeakHeroNearbyAdd to -45 or so, saving most grasping until the target is low on health.

well... I've dropped the killhero weight quite a bit and I might give the weakhero suggestion a try... that said, I think something else might be at work here at the AI seems to target the hero unit with the lowest hp anyway (eg if 2 units are nearby and one with more hp is in front and there is another one behind, the AI will still beeline towards the one that is a little bit behind and only use abilities on them.  Anyway, obviously shouldn't hurt to add the weakhnearby rule.

Reply #211 Top

version 0.26.50
- Reduced priority from 35 to 20 for boots of speed on UB HP/ooze build to keep the AI from purchasing boots of speed as the first item if the AI is set to normal
- increased priority of grofflings plate in the general build
- substantially increased ub's desire to grasp in game
- updated flag goal for cataract to reduce the AI's desire to grab the valor flag early (eg the AI running to the middle of the map)
- increased ice tb's goal to make it use deep freeze more often (tb's abilities all need a bit of an overhaul)
- various item selection tweaks

 

live now

Thinks you will enjoy having a ub as a teammate now.

Reply #212 Top

Should go to bed, but will give this a try now. ^^

Reply #213 Top

Quoting OMG_pacov, reply 211
well... I've dropped the killhero weight quite a bit and I might give the weakhero suggestion a try... that said, I think something else might be at work here at the AI seems to target the hero unit with the lowest hp anyway (eg if 2 units are nearby and one with more hp is in front and there is another one behind, the AI will still beeline towards the one that is a little bit behind and only use abilities on them. Anyway, obviously shouldn't hurt to add the weakhnearby rule.

Those weights don't tell the AI which target to go after, but how prioritized this particular action is WHEN the target is the weakest hero in the vicinity (determined by the 'Near weak hero' distance sensor).  Not that I completely understand how GoalWeights work, as there are 3 distinct blueprint/code elements in the AI code named 'GoalWeights', and it's really difficult to figure out how each is used individually.

Reply #214 Top

Quoting miriyaka, reply 214
Those weights don't tell the AI which target to go after, but how prioritized this particular action is WHEN the target is the weakest hero in the vicinity (determined by the 'Near weak hero' distance sensor). Not that I completely understand how GoalWeights work, as there are 3 distinct blueprint/code elements in the AI code named 'GoalWeights', and it's really difficult to figure out how each is used individually.

fair enough.  I'll toy around with making those changes in the next version.

Speaking of the next version... I think that will be the one I include in the combined install package.  I could use some additional testing on this last build to make sure there isn't anything majorly broken.

I'm trying to decide on how I should integrate the new release, though.  You've probably noticed that as I started with a new UI and called the mod "enhanced AI pacov." that any of you testers are still able to have the original enhanced AI mod and still play w folks that use that version.  Well, I don't have any intention on maintaining "enhanced AI pacov" and will probably just drop the "pacov" and have this replace the current enhanced AI. we'll see...

Reply #215 Top

Testers - please take a minute or two and read all of this nonsense.  Thanks!

OK - so mission statement for tomorrow:  PLAY THE LATEST VERSION A BIT.  Keep in mind the last 2 or 3 change logs (read them before you play any test games).  0.26.49 marked a change in how we are doing things (the "siesta" shop period).  I'll likely implement another round of that in the future.  It won't impact normal ai games, but hard/nightmare it will make a big diff and should allow for artifacts, etc.  You need to look for any NEW bugs associated with the changes I made.  I'd really appreciate any tester taking some time and giving 0.26.50 a go so I can confidently release a new version in the combined package and start advertising (with your help as well).

 

So - let's talk about the future.  I mentioned in the previous post that I'm going to roll up this latest version and REPLACE the AI mod 0.26.35.  This means I'm going to grab the UID from peppe's version and drop my UID and rename it to ENHANCED AI (or EXACTLY what peppe called his version).  What this means to you is that the moment you install my new version, you will no longer be able to join games of folks that have the last official AI mod release from Peppe (eg we need to start advertising then).

So, that said, what should we do about future releases?  I could do things like I've been doing normally.  As a new version comes out of any mod that is included in the combined mod package, I issue a new release of the mod package.  The problem with this is that is takes players awhile to get that DG combined mod package.  And as I'll probably keep releasing MANY updates per week on the AI mod, if I keep this up, then folks will always have to re-download the mod package to get back in sync.  So, the adoption rate drops.  The best thing to happen to the AI mod package (peppe's last version) was that is stopped being updated (as crazy as that sounds).  This is because so many people have the latest version now without even knowing it (because the downloaded the package).

Anyway, so here's my question.  Should I a) start updating the DG mod package EVERY TIME I release an update to the AI mod? or b ) Just release the occasional update to the combined mod when I hit milestones?  The adv to "a" is that we can always say - GOTO HERE to get the latest version (the downside is that only folks that follow either of those threads will always have the latest version (eg problem = adoption rate).  The adv to "b" is that we can make a surge over a week or so and encourage everyone to grab the latest version.  This drives the adoption rate up and prevents confusion.  I'd just maintain a separate version (stick with the "pacov" naming convention) so that everyone could have the latest official release and we'd just consider any pacov version as a beta release.  What do you think?

Reply #216 Top

B ftw.

Putting up game titles for "new release" for a week when there is a large development in the AI will be more effective imo. If it is up all the time it will lose any "look here"/"do this now" effect.

Cheers for all the effort. k1

EDIT: didnt know what the ( b ) would give lol.

+1 Loading…
Reply #217 Top

Played one game last night with version 50. Me Sedna with UB against QoT and UB. Was a very good gaming experience. Think it was the first time in a lot of games that my ai pal got more kills than me. My UB was great, he grasped and spat. He also bought equipment so that when we hit Warrank8 he did not have enough to buy priests, angels and dinos which makes it much more realistic as now I have to save some money for that too and I actually then bought the dinos.

 

The enemy UB still walked past the first tower but came back earlier so I believe that didnt result in a kill. Only thing that was weird is that the enemy UB was hanging around in center a whole lot apparently trying to creep there.

 

Meanwhile its more fun to play the ai than real people as they are not being an idiot, dont do really stupid things, dont leave when they are losing, have no connection problems and are always available.

Reply #218 Top

Concerning 0.26.50, Uberfix 1.05, normal difficulty, towers high

- The first game I started, my UB Ai partner choosed the ooze_health build, get vial as a favor and boots of speed again.  Quitted the game then.

- The next game it chose Spit_ooze build, started with banded armor and scalemail, BotF as favor. It  was against Rook and Occulus

WR 1

- first encounter at the health flag with Occ. Used spit against Occ. Dropped to half life (was too near to tower i think) and returned to the shop, bought scaled helm. Went back immediatly without refreshing his mana

- Next encounter, dropped to half life again went back and got FS 1

WR 2

- Went back cause of half life and oom, bought sigil, teleport

- spat at the tower two times, then walked past it toward the middle (have seen that behavior more than once by AI) was drained of his life by the middle towers and teleported out, bought teleport again

WR 3

- went mana side, encountered enemy DG and tower, teleported out. Bought 2 locks and teleport

- went back and captured mana flag with me and locked it (no enemy dg around) used spit at the tower then and grapped Occulus who showed up. Was oom and locked the mana flag again, went back to citadel

WR 5

- spat at health side tower, went past it, spat at the towers behind and aborted it, spat again, aborted it and spat at the health side tower again (was funny to watch though ^^)

- bought narmoth ring (had approx. 4500 of gold. should buy nimoth and unbreakables / mana helm?)

WR 6

- attacked middle towers (senseless, was immediately at low life and trolled away)

- bought sigil and 2 locks

WR 7

-bought nimoth and teleport, had 2400 gold left

WR 8

- bouhgt priests and firepower 1

- went to enemy portal on mana side (good thing you can count on that and adapt your own performance to that)

WR 9

- bought angels

 

Overall

- it used spit very often, which is really nice because spit is great against strucutures and DGs. But it was oom quite often and should have more mana items (exchange scaled for vlemish and get unbreakables instead of narmoth for example)

- locks are bought too early i think and also the usage should be limited to portal flags and valor flags only because that is really game breaking. No use if the manaor gold flag was just locked and theres no one left for the portal flag or cooldown is still running. But only for capturing enemy portal flags or saving own ones it would be nice I think

 

I think it is really an improvement feelable than it was before. I could imagine that the AI on hard or nightmare (when more money is available) do even a better job. I will give it a try later. =)

 

Reply #219 Top

Quoting Plaguewraith, reply 219
I could imagine that the AI on hard or nightmare (when more money is available) do even a better job.

yeah - that goes without saying. 

Reply #220 Top

But Plague mentioned a good point. I also saw the nightmare ai buy Narmoth as first item. Now I also get it with UB but certainly not as first item, its more one of the last items. So maybe put the priority on it a bit further down.

Reply #221 Top

Quoting SLEDGE71, reply 221
But Plague mentioned a good point. I also saw the nightmare ai buy Narmoth as first item. Now I also get it with UB but certainly not as first item, its more one of the last items. So maybe put the priority on it a bit further down.

maybe... I agree that its certainly not desirable as the number 1 item, but again... the focus has been on the hard AI, I only took into account item prioritization based on when the AI was typically shopping with the amount of gold its starts with.

It gets a little tricky... mayhaps I'll spend a few minutes on this today. 

something like unbreakable < narmoth < nimoth (20/22/24)

In this example, if you had 10k gold, you'd get all 3 items I listed, but you'd get nimoth first, then narmoth, then unbreakable.

If you only had 4k, you'd buy nimoth first (leaving you with 2500) - then you'd just default to unbreakable as you can no longer afford narmoth.

anyone object with that basic view? 

 

Reply #222 Top

Mana is short for the AI, because it uses it´s skills quite often (UB at least). I would think, Unbreakables are the better item. It´s somewhat difficult because I would always get unbreakables before narmoth but i´ve to watch my gold more than a hard or nightmare AI. I would exchange Banded armor or Scalemail with Narmoth if I have already Nimoth and Unbreakables.

So, I would go unbreakables = 22, Narmoth = 20

 

Since the AI uses locks mostly in a senseless way, forbid that behavior would be a nice way to save some gold.

Reply #223 Top

Quoting Plaguewraith, reply 223
So, I would go unbreakables = 22, Narmoth = 20

Then, in my opinion, it would never get Narmoth, instead of unbreakable. Even if it had 4 other items best possible, it wouldn't get anything better than unbreakable (unless priority is set to higher). I might be incorrect here though, because I don't know how those priorities work exactly. I'd say, if possible, somehow make AI get items depending on the current equipable items owned. If it has 5 items, it can get Narmoth, etc (is it possible to increase priorities by equipable items owned?), if not then get those weaker items, unbreakable, nimoth, etc.

+1 Loading…
Reply #224 Top

Sadly, its more complicated than just that (that's why coming up with an excellent balance is a bit challenging).  Plenor and vlemish fit into the priority list as well.

For instance, the basic item priority list includes plenor and vlemish as well.  But everything gets balanced out even further with the individual dg builds.  For instance, UB in his HP/ooze build forces any mana item to 0 so that it won't get scaled helm, plenor, or vlemish. 

Also, while what you are saying about weighing unbreakable higher than narmoth, you need to think late game here as well.  In most circumstances, the AI will have already picked up a helm.  If I already have a helm, then I'd choose narmoth over unbreakables in a pinch.  + the odds are that (at least on hard difficulty) I'd have already picked up unbreakables because of its cheap cost and priority rating. 

See, I can even change the priority levels using logic (if ws> 5 and ai gold > 5k, then set priority to 1000 (instead of 10), BUT - I really want to limit anytime I use logic like that unless its critical because it can cause alot of overhead as the AI has to process those rules OVER AND OVER AND OVER. 

Reply #225 Top

and to clarify, dark.  The AI has a priority list of items.  This is exactly the same for every dg (at first).  You set a value and the higher the value is, the AI will choose that first when it purchases.  So let's say, I have a really high value for jtreads (500).  The AI looks at the very start of the game to see if it can afford jtreads.  Seeing that it cannot afford that, it goes down the list until it finds the next highest priority and checks if it can afford that... and so on.  Then, based on what it can afford and what its priorities are, it buys that.  Any time I set a duplicate priority value (let's say I set nimoth and unbreakable to 20), the AI would then RANDOMLY choose one of those items.

Anyway, so there is the basic build that all dgs use.  Then I can modify that initial build per DG build (ex hp/ooze or hp/ooze/spit).  That said, I guess let's just focus on the basic build and ignore any talk about dg specific builds for now...

and last, its quite complicated.... the item build prioritization list works hand in hand with citadel upgrades as well.  So, anytime an specific upgrade is to be purchased, that gets a VERY high value that goes way above any items.  Eg if currency is to be bought at ws 3, its priority gets set super high then, etc.