M28AI Devlog (v101)

v35 update
This update was focused on reducing many of the error messages sent to the log that have built up over time, prompted in part by one of these highlighting an error on maps with mexes close to each other such as astro craters where available mexes weren’t always correctly tracked, involving 16 different bugfixes. This included:

  • Fixing issues with tracking unbuilt mex locations (which caused mexes on maps like astro craters rich to not be rebuilt after being destroyed)
  • Added some redundancies to decisions on where to build a mex in a zone if the only unbuilt location appears unavailable (fixing an issue where there could often be a significant delay until the last unbuilt mex in a zone got built)
  • Increased the cap on how many TMD can be built in a single zone, and fixed a bug with some units not getting TMD built to protect them from TML
  • Fixed various error messages that could appear (sometimes these were for minor issues, other times there was no issue but rather a valid explanation for why the unexpected scenario had arisen), including with the initial map generation, with trying to find the closest pathable location a land unit is on, etc.
  • Stealth boats should no longer be built if there are no main targets for them


  • Fertgl - Replay on astro craters rich where M28 failed to rebuild mexes that died to TML

v36 update

  • Removed debugging code I forgot to disable on release of v35 (that changes unit names)

v37 update

  • Fixed a bug introduced in v35 with tracking how many mexes of each tech level M28 has

v38 Update
16 changes, mostly bugfixes from testing against M27 on 3 maps (interestingly M28 won 2 of the 3 games upfront, and looked likely to win the 3rd after changes in then desynced replay, so maybe it is approaching the point where it has a c.50%+ win rate against M27 on larger maps - the maps were Nilfheim, Syrtis major and Open palms):

  • Fixed a bug where I forgot to disable debugging code in v37 which filled up logs with information about how many mexes M28 had
  • Various fixes to TMD, so that TMD should no longer be over-built in response to a TML threat, mobile TML shouldn't be double-counted, and upgrading mexes should properly reflect TMD coverage
  • Novax targeting fixes that could cause it to target underwater units or error out when consdering the ACU in some cases
  • Adjustments to T2 arti and radar builders and ctrl-K logic (for radars) to e.g. T2 arti should be built faster, and with radar coverage, when facing an enemy fatboy threat
  • Improved the open palms build order to use the hydro (this switched the replay from a heavy defeat by M27 to a likely defeat of M27)


  • zhanghm18 – Screenshot showing M28 attempting to build a modded naval experimental on land

v39 Update
25 changes, the majority relating to a replay featuring modded units:

  • Transports should now consider dropping ponds that have mexes (which also helps workaround an issue with a replay I saw where the map design resulted in FAF namesh generation incorrectly thinking ponds were pathable)
  • Cheaper versions of buildings should be prioritised early game (to stop unit mods that introduce experimentals at the T1 stage tanking the economy, or for expensive hydros to be built at the start of the game)
  • Fixed a bug with land units not retreating in certain rare cases, and adjustments to ACU retreat logic. Also expanded logic for long range enemy threats so e.g. ravagers should now be taken into account to help with smaller maps where their range exceeded the size of a zone
  • Improvements to shield logic, fixing an issue where multiple shields would be built on the outskirts of the base (shielding nothing but themselves)
  • Various bugfixes and workarounds, including a workaround for a Brewlan bug that categorises torpedo bombers as transports (which causes an error when the AI tries to check if the unit has a cargo).


  • fertgl - Replay showing an issue with shields being built outside the main base on open palms

AI seems to build only engineers, shield disruptors, and MML. Has no ability to defend itself against direct fire units. Places its PD away from the only enemy approach direction so it can't shoot anything.

@trixie_lulamoon I'd need a replay ID to consider why, as the described behaviours are generally very rare (e.g. I've never seen M28 build a shield disruptor, and I'd only expect it to be building lots of MMLs if the enemy is trying to get a firebase setup near M28's base)

I just started a new match on the same map with the same settings and now they're building direct fire units no problem, so IDK what the problem was last time. Ignore for now since I can't reproduce it

@maudlin27 Loving the AI so far. Might need to be a little more aggressive, not our best game.


@ender06 said in M28AI Devlog (v39):


Thanks! I forgot to check the replay ahead of the v40 release but will make a note to review for the next release to see if it was working as intended.

v40 Release
Introduced new naval 'raiding' logic (to help with very large water maps so that full naval control isnt needed to try and attack enemy land buildings), improved t1 bomber logic, and various other changes

  • New naval bombardment logic - I expect it may need tweaking since it risks weakening M28's overall naval forces, but the idea is that on maps like Aeon M1 of the campaign and Betrayal ocean it helps by attacking islands with naval forces even if the enemy navy is too strong for a full attack
  • 6 other changes for Aeon M1, resulting in the time to complete reducing from 1hr53m to 1hr6m (actual time will vary significantly based on AI luck)
  • Support added for spaceships from the extreme wars mod
  • 10 Changes made for a replay where Sladow crushed a 1.7 AiX M28, including making it less likely that T2 upgrades will be started on air factories at higher AiX modifiers early game
  • New T1 bomber logic added to target enemy engineers and radar (similar to how M27 uses T1 bombers, although I doubt it will work as well given M27's needed a fair bit of refinement)
  • New 'engi targeting' logic for land units early game (based on a replay from Wifi_) so tanks should move closer to enemy engineers if they catch the engineer without an escort, rather than e.g. targeting t1 mexes that the engineer has built
  • 14 changes made for 'PASS but mexes are underwater' map, which is roughly 1 change for every 2 people who has downloaded the map! I'm hoping that the changes will have more general use though, including making M28 a bit more robust in unusual map scenarios (on that map there are no mexes at the start position, but a crasy number of mexes nearby in the water)


  • Sladow – Accepting a challenge to fight (and beat) M28 AiX 1.7 on Arcane, which highlighted a number of flaws with M28’s build order
  • Fertgl – highlighting how M28 wouldn’t attack civilian islands early on with navy on betrayal ocean, along with noting that M28 doesn't work on the PASS but mexes underwater map
  • zhanghm18 - noting extreme wars spaceship incompatibility
  • Wifi_ - several replays against M28 where there were more M28 than humans

I had to watch that just to witness greatness. Looks like the reissuing of commands to the acu got him killed.

@relentless I'd suggested 1.6 as the modifier I thought would beat Sladow on that map, and being a boss Sladow did 1.7 instead and crushed!

Although there were plenty of improvements from a BO perspective the ACU I didn't really change due to the likelihood of the benefits outweighing the costs in other situations - from its perspective, it had a better gun than the enemy ACU, was full health, the enemy ACU was damaged, M28's ACU was on its 'side' of the map, had friendly tanks and PD relatively nearby, the enemy only had access to T1 and no significant bomber/gunship threat, it recognised there was enough danger that it should try and run, and it picked a location that was both away from the enemy and would've ultimately brought it closer to friendly PD (although the latter is more by coincidence than by plan). I.e. one of those scenarios where a split second judgement from a human is likely to give a much better result than the AI since the issue was more having the ACU in a place where it could easily die due to being too far from potential support.

One of the changes I made though was to make tanks no longer abandon the ACU to its fate (the c.3 blazes that were nearby ran when they saw the enemy army instead of fighting to give the ACU more of a chance) but even with this change the ACU would've likely died (it ended up sub-100 health on the desynced replay).

However the BO stuff was embarassing for me with it all largely caused by the early air fac upgrade - the early upgrade meant it didn't have enough engineers (so had little power and didn't even get mexes near the base), and it quickly stalled energy and overflowed mass - I'd hoped for much better of M28 on that side of things!

v41 Update
Main new feature is laying the groundwork for M28 to take over campaign AI (i.e. allies and enemies), although this is still in the very early stages

  • 6 changes for replay 20937306, primarily relating to bugfixes/oversights, for example fixing an issue where TMD could be built far away from the intended location (and so be of no use), and where on very large starting areas the ACU would move a while before building its first land factory. Support also added for building underwater mass storage.
  • 11 misc changes and fixes, including having some MAA support a fatboy by staying under its shield to protect from air, reducing the frequency of a number of error messages that could arise with unit mods, and making M28's air force less likely to suicide into the enemy just to protect a friendly experimental
  • Introduced new option for allies and/or enemy campaign AI to make use of M28's logic for managing their units. This option can be set in the game settings on a campaign map. Note that it is in the very early stages so I expect on most campaign missions it could break the mission entirely. So far it's only been tested on SC Cybran mission 2 (although even in this case in some scenarios use of the cheat menu to ctrl-K off-map units may be necessary to progress the mission if it is stuck after a long period of time). I'll hopefully be working through other campaign missions over time to improve this option's compatibility.
  • 7 changes to campagin missions identified when testing the above, including fixing an issue where huge numbers of T1 engineers would be built by a T2 factory (if T2 engineers were restricted from being built), and fixing an issue where naval raiding units could end up idling at base.


  • Fertgyl – replay with a bug with TMD build locations, highlighting how mass storage can be built underwater (something I wasn’t aware of – it looks like it was a change introduced by FAF earlier this year), and a video showing a bad air engage by M28
  • Clyf – highlighting extracts of error messages in logs relating to unit mods
  • Zhanghm18 – replay and logs relating to issues that can arise when large numbers of unit mods are used with M28

v42 Update

Most changes related to improving M28 as a hostile AI for campaign missions.

  • UEF M1 - 4 fixes relating to error messages and the playable area
  • UEF M2 - 8 fixes, including improving compatibility if M28 is a teammate (as well as hostile AI), and an issue that prevented M28 dropping engineers by the research station to repair it
  • 4 fixes for replay 20973901 and 20969506 relating to building asfs, naval raiding, and rare cases where units could stay idle after trying to avoid a bomb


  • Fertgyl - Replay highlighting a bug where an engineer became stuck permanently after trying to dodge a bomb

v43 Update
21 fixes and adjustments based on replays, including:

  • Fixing a bug that could break M28 when trying to get units to shield
  • Fixed some issues with the teleport logic such as where the 'teleport away' order would be canceled so the ACU could try and dodge a bomb
  • Various adjustments to gunships to try and make them both less aggressive and more aggressive (hopefully in the right way - i.e. less likely to suicide into enemy asfs, but more likely to try and attack an area with weak ground based AA)
  • Various adjustments to reclaim, including fixing bugs that could lead to idle engineers, and improved tracking, along with making the ACU more likely to priotise areas with reclaim
  • Fixing some error messages relating to naval bombardment, and added in missing tracking that was meant to reduce M28's tendancy to allow mass stalling while trying to build an SMD or SML missile.


  • Azraeelian Angel – Several replays and detailed analysis – although desynced, some of the points and map specific issues led to a number of changes
  • Fearghal replay where M28 broke due to a bug with finding units to shield.
  • Zhangham log highlighting a bug with M28’s naval raiding logic
  • Fertgyl – replay highlighting idle engineers

Hello Maudlin,
your AI is really overwhelmingly good. Now the BUT ^^ During the course of the battle, the Sorian AI always hindered the build-up with various landing troops and surprised a careless player who only had the front in view. Could you maybe in your AI? also integrate more landing troops? Thanks for your great work so far.

I'm assuming you mean transport drops? It's down on my list as a possible longer term point but transport logic is very painful to code (just getting it to work for engineers has taken a lot of work) and it requires a lot of judgement so can be tough to get right (i.e. the main benefit of it would be scenarios where gunships or bombers wouldn't work (e.g. well defended with AA), ground units would work (no enemy ground units/PD), but which isn't on the front lines where ground units would be going anyway, and which has an AA free nearby location to drop at).

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


  • 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)


  • 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.


  • 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


  • 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