M28AI Devlog (v139)

v105 Hotfix

Hotfix with 8 changes (5 of which are LOUD specific):

  • Fixed bug introduced in v104 that meant ACU upgrades would cancel on completion for all players if M28 mod was active
  • Fixed a bug with M28's adjacency build logic that meant it was searching much further away than intended when building adjacent to mexes and hydros that hadn't had construction started
  • Underwater mexes should be treated as being a very weak submarine unit so M28 builds subs earlier on to try and kill them.
  • LOUD specific - added basic support for the new LOUD functionality to allow custom AIs to be selected from the main lobby (which means for the first time M28 and LOUD can play as teammates instead of just opponents); fixed bugs meaning submarines wouldn't be built.

Acknowledgements

  • Sprouto – including a pull request I drafted (to allow LOUD to support selection of custom AI in the game lobby) into the LOUD code and the latest update
  • Chucups – noting upgrades are cancelled if M28AI mod is active

If i spawn like 20 fatboys and have them shoot at eachother, my game will practicaly stop. Though that might just be projectile calculation, not necesarily anything to do with M28, granted im on an old i5 [email protected]. But playing 10s and 10s of games on the same map, i noticed that when there are UEF's, after 1h30m game will progressively become slower and slower. When there are no UEF's it is a lot better. Naturaly i thought of fatboys because otherwise i dont see anything unusual about UEF except fatboys and their strange projectiles (projectiles hitting fatboy when it explodes, u can just feel everything stop)

Had another game crashed. I played this map in the very same configuration for 30 times without crash. It crashed only 2 times, both times i was streaming through OBS/youtube. Any idea how OBS could somehow mess the SC or affect its ram usage ?

game_22809066.zip

@goblinsly2 Re OBS I don't know, however it does feature in the log which I wasn't expecting, so if the only times its crashing are when you're using it and there are lots of games where it isn't crashing then it sounds like it does impact memory.
One way to test could be to run an M28 vs M28 game as observer for 45m at max game speed with and without OBS, 'afk', making a note of memory usage with and without it, to see if there's a big difference. However even if confirmed I wouldn't know if there was any solution to using OBS with high memory using mods.

I also wonder if that was the cause of the replay itself not being available in the FAF replay vault - if you have access to the local version could you send it over as well (there was an error that repeated at the end of the game and reviewing the code it's not clear to me why it occured so I'd need a replay to investigate further)

Sadly i don't have a replay even in my replay folder, seems it failed to make one after last crash. I will test stream M28 vs M28 on +10 and see how much ram is used by supreme commander. But for some reason i think it might have to do with audio capture. I use a plugin in obs so that i can stream game audio but not system audio - this is because i am chating with friend on skype while he watches the stream and he hears his echo if i dont disable audio output except sc game

memory.JPG

Crashed again. I checked both game times since youtube saved my livestream, 1 crashed at 47 min, the other at 49 min. Image is from last game that crashed, showing 1.8GB max
I tried with bots, 6v6, same map, no crash after 1 hour, will try a longer game tomorrow to see if it crashes, one today ended prematurely to see if it would crash.

v106 Update
33 changes and fixes based on a working through some compatibility issues with LOUD. Although prompted by getting functionality to work for LOUD, 13 of the changes will be of relevance to FAF (in some cases core FAF, in other cases via improved mod compatibility), although they're generally minor changes:

  • Fixed some unit categorisation bugs with obsidians and mercy following some changes a while ago with FAF's unit categories
  • Late-game arti template shields should only have 1 engineer assigned in low power scenarios once a few have been built
  • Fixed a bug with AIx overwhelm not working with RAS SACUs and causing them to lose the benefit of the RAS upgrade
  • Made M28 much more likely to build navy on larger maps in certain cases, such as if it was in the Setons Air slot with no teammates
  • Various LOUD related fixes, including costruction of experimentals (can only be built by SACUs in LOUD), fixing mobile shields, omni over-construction, made use of new per-AI AIx modifiers, fixed AIx overwhelm to work in LOUD, improvements to experimental construction choice to reflect LOUD unit categories and the lack of a novax

Acknowledgements

  • Wingflier - running some M28 vs LOUD games to help with testing including highlighting a number of areas where M28's normal logic wasn't working

Noticed a strange behavior with some of my custom units.
https://youtu.be/eq6I0jkQV40

units BP: ual0108_unit.zip

Try using the PERSONALSHIELD category instead of SHIELD category and see if it changes the behaviour

Hello Maudlin, I created a map (adaptive Falconstone) which also contains water. I noticed that the M28 doesn't build shipyards in the lower water, even though markers are set. However, other AI (Sorian, Uveso) use the areas. Maybe. can you test that? Greetings Saver 545f793d-44ac-401f-9799-fe420a68ac95-image.png e4699f23-4564-48ad-b90d-1a305802dcf3-image.png

M28 doesn’t use markers. From the screenshots the green pond looks more important so I’d expect it to prioritise navy in that pond instead of the red pond.

There might be cases where it does build in the red pond, but it’d depend on how many mexes are within range of the pond and if M28 is on all 3 team slots

I'm really enjoying the AI Maudlin. Your work is much appreciated 🙂

Only thing I'd say is that the AI makes a metric shitton of t1 arty and mmls (atleast in the 1v1 games I played), which is kind of unfun to play against. It basically forces you to give arbitrary move commands to all your units 100% of the time. I don't think it is an efficient spending of resources for the AI and it creates weird gameplay that doesn't resemble regular player versus player gameplay. Perhaps you will consider adjusting that.

Maybe 2 versions? One which uses all the annoying ranged units and kites alot (like it does presently) and one which is more human-like and restricts that behaviour to auroras, hoplites, bricks etc? And builds less MML (noticed this in particular for Seraphim).

@stormlantern thanks for the feedback, in terms of the levels being excessive I’d need replays to consider further, but it’s intended that it spams MMLs in response to a potential firebase threat (other reasons for lots of t1 arti include a nearby enemy building; wanting a mix of them to reduce vulnerability to cliffs that block tank shots; and for t1-2 land facs to build later in the game to mix with t3 units built by the t3 land facs).

@Reckless_Charger re the two versions it has something close to that with M28Easy which disables all such microing. One planned feature though is to allow users to adjust M28’s ‘go slow’ mode which could provide something very similar, where instead of considering orders every second you could specify how long it should wait inbetween for its more general land/navy/air unit management logic (it already uses this functionality for games with lots of units to avoid too big a slowdown) . This would make microing much weaker but also make general responsiveness weaker, and would effectively provide a further alternative to M28Easy (eg certain microing like dodging shots and overcharging units manually would be unchanged, while things like kiting would be much weaker albeit still present to some extent)

Can a feature be added so that a custom unit is ignored if it contains a specified Category?

I ask as I often use / abuse helper units for various tasks. (Example: holograms, and Drones) The AI will active issue commands to these units, despite not being selectable or visible to the player.

Thanks!

Resin

@resin_smoker If you assign them the category INSIGNIFICANTUNIT then they ought to be ignored (that said, I can't remember what game functionality that category might impact)

@maudlin27 Will try that out... Though I hope it doesn't prevent units from activity targeting them.

@resin_smoker

Ok just took a look at my units (4DFAF URA0106) Categories to discover that it already has the INSIGNIFICANTUNIT set.

	Categories = {
		'AIR',
		'ANTIAIR',
		'CANNOTUSEAIRSTAGING',
		'CYBRAN',
		'DRONE',
		'HIGHALTAIR',
		'INSIGNIFICANTUNIT',
		'MOBILE',
		'RECLAIMABLE',
		'TECH3',
		'VISIBLETORECON',
	},

Will try removing the TECH3 from the unit to see if this changes the behavior.

Resin