M28AI Devlog (v138)

v44 Update

  • 12 changes to UEF Mission 3, both for M28 as a buddy, and as a hostile campaign AI, including making the campaign M28AI be more aggressive with units if it has no base to retreat to
  • Fixed a bug where M28 would build its first factory as far away as it could if there wasn't a location within range of a mex (e.g. williamson's bridge)
  • Expanded profiling related options, and significantly optimised late-game T3 arti logic (meaning in cases with very large numbers of units it should run roughly 10 times faster, reducing the tendency of M28 to stutter late-game)
  • Make gunships individually slightly less aggressive
  • Added wall reclaim logic to engineers

Acknowledgements

  • Azraeelian Angel – Mapgen Replay which included players using walls to disrupt the AI's movement
  • Zhanghm18 – Highlighting crashes taking place which appear to be due to using too much memory
  • Fertgl - Replay/screenshot showing M28's poor choice of its first factory location

v45 update
Continuing the trend of small (and therefore more frequent) updates, this update is based on two replays, fixing issues with where units retreat to, and some naval related changes

  • Decided to experiment by making ACUs retain their near-suicidal early game aggression much later on in full-share teamgames (but only if they are high on health)
  • Replay 21020574: 7 changes, including fixing an issue where Aeon T2 destroyers would be scared of T1 torp launchers, making torp bombers less suicidal the further away the enemy is, and adding a workaround for an issue where a T2 PD gets ignored
  • Replay 21026248: 2 changes, the main one being improving the logic for determining where land units should retreat to - previously they would retreat to expansion 'mini-bases', even after the base had been overrun by the enemy (resulting in ACUs charging into swarms of enemy units)

Acknowledgements

  • Mischievous – mentioning they fought against an AI and giving a replay (which identified some flaws with M28’s logic on when to press a naval advantage)
  • Azraeelian Angel – Replay showing M28 being crushed (in part due to its poor choice of locations to retreat to)

v46 update

  • Neutral non-combat civilians with a decent mass value should be reclaimed
  • Significantly increased amount of PD that can be built in some scenarios (previously it was capped at 2 T2 pd in a number of cases)
  • 5 changes from testing a nomads late game scenario, including adding specific logic for the Jericho to fire at enemies within its range (since attack-move triggers when very close), and target-leading logic so it is more likely to hit moving enemies, while also adding target-leading logic for T3 arti (e.g. when firing at an enemy land experimental)
  • 4 changes relating to UEF Campaign M4, including fixing an issue where land units would try and reinforce a land zone on another island.

Acknowledgements

  • Sprouto and Irontristonia – helping with how to adjust the attack-move logic for the Jericho (in the end I decided against it since it would affect all blueprints)
  • Relent0r - screenshot showing lots of part-complete factories (I adjusted the building logic to add a redundancy to hopefully prevent this happening in future)

v47 Update
Support for UEF M5-6 and FAF M1, amongst other changes.

  • 21040509 - 6 changes, including fixing some issues with determining land zones on maps with loads of mexes near the start, and having the ACU alternate between power and mexes where there are loads of mexes in the start area
  • M5 UEF - 15 changes and fixes, including adjusting 'nuke overwhelm' logic to be more likely to fire nukes periodically with split targets instead of all at once at the same target, and various improvments to gunship logic to better cope where the enemy has threats in opposite locations to the start position and be more likely to ignore a lone MAA unit if there is a major threat that is vulnerable to air
  • M6 UEF - 9 changes and fixes, including delaying M28 logic from applying to various aspects (such as land and air units) until the initial cutscene has ended, and no longer treating Aiko's initial base as part of the same team (which would lead to 'invisible' cybran enemies since Aiko doesnt see them as an enemy)
  • 6 Misc changes, including adding reteat logic for czars and soulrippers
  • 7 changes based on Azraeelian Angel's replays, including fixing some issues with teleport and supporting the upgrading of mexes gifted over when a human teammate (such as Terarii) dies
  • 3 changes based on Radde's replays, including making units less likely to suicide into an enemy T2 PD

Acknowledgements

  • Jip - Spending several hours imparting wisdom on how to optimise memory, and trying to debug the source of high memory usage for FAF AI (M28 and non-M28)
  • Azraeelian Angel - several teamgame replays, and highlighting issues with FAF M1 campaign
  • Radde - A number of teamgame replays

v48 mini update

  • Added megalith micro (and hoping it doesn’t go horribly wrong - sometimes during testing giving a move order to the megalith would make it try and turn around instead of walking backwards)
  • Monkeylords should be more likely to attack if a nearby megalith is being killed instead of standing just out of range of the attacking unit
  • various twraks to some of the variables used by land units (increasing the cases where adjacent zone threats are taken into account)
  • added ‘exp focus’ attack logic for if there are 2+ experiments within range and one is injured so the injured one gets targeted first

Acknowledgments

  • Radde - replay where a megalith and monkeylord died to 2 gcs while doing almost no damage

v49 Update
41 changes and fixes mostly relating to support for FA campaign missions 2-4.

  • FA Mission 2 (Dawn): 8 fixes, including better handling for scenarios where a team changes part-way through the game (although this requires the code to be manually added for the particular mission, so it won't support Fletcher's betrayal in FA M6 yet), and support for completing an objective where the AI upgrades the target unit (to be killed)
  • FA Mission 3 (Red flag): 6 fixes, including support for the opening mission progressing (i.e. a temporary workaround for the current FAF issue with this map, pending a separate change fixing the mission itself being incorporated)
  • FA Mission 4 (Meltdown): 4 changes, including fixing an issue where a 'dead' M28 ally would make M28 think it had no mass or energy stored if the game was in sandbox
  • FA Mission 5: 6 changes/fixes, including support for an ACU spawning part-way through the game to have a designated base and use M28's ACU logic (i.e. so Fletcher should establish a base where he spawns).
    Note that FA M5 isn't fully compatible yet.
  • 17 other changes based on some AI vs AI games on twin rivers, including various adjustments and fixes to reclaim logic.

Acknowledgements

  • Jip - fixing various FAF lua errors and incorporating them into a patch with lightning speed
  • 4z0t - sharing a WIP version of a custom campaign mission where M28 wasn't working which meant I was able to fix a bug that occurred if brains were created at a different time to what M28 was previously expecting, and highlighting that FA M2 (dawn) didn't work

v50 Update
45 changes and fixes, including:

  • FA Mission 5 - 7 changes, this mission is now supported
  • FA Mission 6 - 2 changes, this mission is now supported
  • SC Aeon M1-M2 - 1 change made (M1 is now supported, I didn't get to the end of M2 in testing)
  • Kitoons replay - 1 change (increased the amount of battleships M28 can build when it has won navy)
  • Radde replays (various) - 10 changes, including a workaround for a rare issue where a novax satellite gets stuck; issues with power-stalling causing shields to stay down, experimenting with TMD being built in response to MMLs (this may well make M28 weaker), and fixes to some gunship movement logic
  • Bart replay - 20 changes, relating to various improvements when the game is in norush mode, and improved support for experimental shield and resource boosting mods
  • 4 other changes

Acknowledgements

  • Radde - various replays, which highlighted some bugs/issues and M28's weakness against MML
  • Bart - replay which highlighted various norush issues
  • Kitoons - Replay that showed 5 Cybran battleships aren't enough to break through a well shielded firebase

v51 Hotfix

  • Fixed a bug that would break M28's logic for the zone in question if M28 started building a T2 arti
  • Improved M28's approach to building spy planes to deal with cloaked laser ACUs so it should consider helping land experimentals near a cloaked ACU (previously it would just help gunships).

Acknowledgements

  • Radde - several 1v1 replays and highlighting M28 was bugged in one of them

Can I help you with something with m28? I'm interested in this project @maudlin27

@freemanitsnothe
Replays within a couple of days of an update showing M28 being beaten are usually useful, particularly if it's against an AiX version (since against 1.0 a decent player can just outplay it). Naval focused games are also likely to be more useful than land based since I get much fewer replays on naval based games (so M28 is likely to be worse at naval combat than it is at land combat).

If you've got coding experience then one issue I'm currently struggling with is figuring out the cause of the high memory usage for M28 and more generally for the default FAF AI - it's both higher than expected, and growing over time more than expected, and can cause the game to crash if it goes over 2GB (which is more likely on larger maps with lots of unit mods). More information is on the AI development discord if it was something you wanted to look at.

v52 Hotfix

  • Fixed a bug where M28 would stop using experimental bombers if it had 2+ (introduced in v50)
  • Fixed an oversight with M28's resource sharing logic which would only use absolute values, leading to some teammates overflowing mass while others didn't have lots (where their total capacity differed significantly).
  • Improved skirmisher enemy detection logic to include all direct fire enemies in adjacent zones (previously it would only include the closest enemy for performance reasons, but this would sometimes lead to e.g. hoplites running into an enemy guncom and dying)
  • Slight delaying in late game eco (mass fabs and quantum gateways) if the M28AI hasn't built an experimental in the zone in question yet.
  • Long range enemy threats such as T2 arti should be taken into account when deciding where units should retreat to (to reduce instances where units retreat to a location within range of enemy T2 arti)

Acknowledgements

  • Radde - 2 Replays beating 1.3 AiX resource M28 (due to the hotfix only some of my planned changes for this feature in v52)
  • Fertgl - Highlighting a bug with M28 not using experimental bombers

@gatorized Could you post the replay ID?

Trophies
Introducing a new 'feature' - trophies! The first person to send me a replay for a more recent version of M28 than the current trophy holder, where the replay meets the trophy requirements, will be acknowledged as the winner of the trophy in the next update notes. The two trophies are:

  • The Radde trophy - Named after Radde who has sent a large number of replays fighting 1.3 and 1.4 resource M28s in recent months - awarded to the first person or team to beat M28 on a 15km-20km size mapgen when M28 has a 1.4 AiX resource bonus (i.e. it can still have 1.0 build rate bonus), with no SIM mods other than M28AI. 1v1 or teamgame submissions accepted (teamgame must have mirrored start positions and equal M28 numbers to player numbers)
  • The Sladow trophy - named after Sladow, who beat 1.7 AiX M28 (v39) - this trophy is awarded to the first person to beat a default AiX M28 1v1 (i.e. 1.5 resource and 1.5 build rate cheat modifiers) - i.e. any map, any mod.

Note the requirements for the trophy are subject to change with each release of M28.

v53 Update
Kiting and anti-firebase improvements, including:

  • 7 Changes mostly relating to trying to have hoplites do better at surviving against an enemy guncom (although the changes should be relevant to mongoose and sniperbots as well)
  • Replay 21200371 - 5 improvements relating to enemies setting up T2 arti firebases near M28's base
  • Fixed M28 not building navy on the map Sludge (along with 2 other minor changes)
  • Replay 21193022 - 7 changes, including improving the speed with which the rear M28 position will get T3 air and fixing a bug that lead to loads of TMD being built
  • Replay 21206374 - 6 changes, including TMD being built against Seraphim cruisers+aircraft carriers, and T2 being built against nearby enemy naval threats
  • 2 other changes, including having hover/amphibious units in the water retreat back to base rather than to the middle of the water zone they're in

Acknowledgements

  • Zhanghm – doing some testing on high memory scenarios to confirm the theory that the variety of units built in a game is likely the biggest factor in memory usage.
  • Radde – Land and naval replays, both 1v1 and team games, which highlighted a number of improvements required.
  • Fertgl – Screenshot/replay showing a poor choice of rally point by M28 on water for hover units.
  • Gatorized – Image referring to M28 not building navy (fortunately I was able to recognise the map from the screenshot, but for future reference a replay ID would make it easier for me to identify the issue).
  • Jip - Fixing a bug with the navmesh, being quick to merge a pull request fixing a categorisation bug, and continuing to fix minor FAF lua error messages

v54 Hotfix

  • Fixed a bug that would break M28's logic in some cases when faced with a nearby enemy firebase.

In the last few weeks or so, we've had a number of games with M28AI result in a complete sim freeze - the UI remains responsive but the game world is completely frozen, with no obvious error messages, Lua debugger windows, etc. I will upload a couple of game.log from sessions where this happened in case helpful.

[1] https://privatebin.net/?4afc224e8d84212e#5JABUWLuMgQvPQkZS6oXxZ8W5bhVG4oVnaeM94xin2Ls

[2] https://privatebin.net/?718c7a544a249cc0#9PC3zqM9osZyA8o4KGs5SeCFh7W44Q43ba8UndPXBPEg

@sparky222b Thanks for the report, do you have the replay IDs for the games?

@sparky222b Thanks, found the cause of the crash (if an M28 T2 arti tries targeting a mobile unit), will fix it in the next update

v55 Update
Aside from fixing a couple of major bugs introduced in recent versions, this update was around tweaks to the early-game logic based on Radde's trophy winning replays.

  • 21233524 - 11 changes, including slight improvements to early build order to try and reduce the tendency of M28 to stall power, and a fix to the logic for building an early bomber (that meant it was built when M28 had low power, instead of when it didnt have low power)
  • 21233818 - 14 changes, mostly focused around getting more MML sooner if the enemy setups up a T2 arti firebase near M28's base
  • 2 other fixes (fixing a crash caused when T2 arti tried to attack a fatboy, and a bug when M28 would consider building T3 mass fabs)

Trophy awards

  • Winner of the Radde and Sladow trophies – Radde – in record time Radde beat M28 with a 1.4 resource mod on a large land map, and then crushed it on winter duel at 1.5 AiX. Will the latest changes prove enough to combat a ‘winter duel T2 arti’ attack, or is M28 doomed to failure?

The current trophy holder will also be recognised in the original post of this forum thread.

Other Acknowledgements

  • Fearghal – logs highlighting error when M28 considers building mass fabs.
  • sparky222b – logs/replays with M28 crashes

Wow, that was really fast! Thank you @maudlin27!