• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.
Oh and still no AI reserve in 1.1 this at a minimum should have been looked at, I am really happy with how the reserve is working for my settings!
Base: 0
X: 70
Y: 90
Overkill: 40
The AI will generally counter reserve down in the first round, but move as soon as sensor locked or threatened or you move more than one unit, I left 10% ambiguity in there, well just because. :)
After the first turn the Overkill means that it only very rarely reserves, but this functions nicely, although if the fight does seperate away at all then it will reserve prior to re engaging.
Oh wow, that's a totally different way of doing that. Will have to give that a try. What I'd want is scouts to really, really favor reserving down unless they are vulnerable, in melee range or unsteady/lacking in Evasion. The issue with the AI always moving in the same order really hurts lights though. They either must go first, even if all reserve down, or must go last even if under heavy fire for the first three units to open them up for the 4th to KO.
 
Oh wow, that's a totally different way of doing that. Will have to give that a try. What I'd want is scouts to really, really favor reserving down unless they are vulnerable, in melee range or unsteady/lacking in Evasion. The issue with the AI always moving in the same order really hurts lights though. They either must go first, even if all reserve down, or must go last even if under heavy fire for the first three units to open them up for the 4th to KO.

I think you will like this and find it fits your needs pretty well then, in testing this is pretty much exactly what it does.
You could tweak Y: 100 if you want it to always happen (I just like a little entropy), you could also tweak X: 80+ if you wanted it to respond immediately to the players movement (which it would do anyway if the player places an AI unit in danger anyway).
 
I think you will like this and find it fits your needs pretty well then, in testing this is pretty much exactly what it does.
You could tweak Y: 100 if you want it to always happen (I just like a little entropy), you could also tweak X: 80+ if you wanted it to respond immediately to the players movement (which it would do anyway if the player places an AI unit in danger anyway).
I was able to get in two skirmishes with those settings (all others 1.1 beta stock, not my modded adjustments) and it looks good. I might have to move to that style of weights. I did two sets with each reserve settings, mine and yours with stock values otherwise:

Yours had much faster reserve, less "think time" and would more reliably make it to phase 1 with a light lance (LCT-1S, 2x COM-2D, KTO) vs 1 Atlas. However, it wouldn't capitalize on "going twice" in that situation, where all 3-4 of the units could move in phase 2 just before the AS7 after reserving the P1 in the previous round. I think some tuning and testing could help with that last bit when needed. With two full 25m Lances(BLKNT, CN9-A, GRF-1N, JR7 in that order), there were some times the lights should have done the opposite choice between reserving or not. However, most of that is the same with my weights and probably rooted in poor positioning and lack of danger awareness of the stock AI. In both skirmishes I had to purposefully not shoot the JR7 just to keep it alive long enough to observe.

I got to say, thanks for that suggestion. This is why I'd love it if more people messed with the AI, need some different perspectives and ways of thinking about how to make it better.
 
We are slowly, but surely, trying to build a large modding community. Hopefully we will continue to gain people at a larger rate than we lose them! :)
 
For my mod I am looking at allowing shooting after sensor locking. For us that would remove a major irritation with Sensor Lock and AI use. So, I might be doing an end around for a major AI issue. Heh.
 
For my mod I am looking at allowing shooting after sensor locking. For us that would remove a major irritation with Sensor Lock and AI use. So, I might be doing an end around for a major AI issue. Heh.
When you do, make sure to adjust the global_sensorlock weights as mine and stock are set to protect the locker and not optimize for dealing damage. Either custom tune those weights or just delete them so it reverts to global.json defaults.
 
I was able to get in two skirmishes with those settings (all others 1.1 beta stock, not my modded adjustments) and it looks good. I might have to move to that style of weights. I did two sets with each reserve settings, mine and yours with stock values otherwise:

Yours had much faster reserve, less "think time" and would more reliably make it to phase 1 with a light lance (LCT-1S, 2x COM-2D, KTO) vs 1 Atlas. However, it wouldn't capitalize on "going twice" in that situation, where all 3-4 of the units could move in phase 2 just before the AS7 after reserving the P1 in the previous round. I think some tuning and testing could help with that last bit when needed. With two full 25m Lances(BLKNT, CN9-A, GRF-1N, JR7 in that order), there were some times the lights should have done the opposite choice between reserving or not. However, most of that is the same with my weights and probably rooted in poor positioning and lack of danger awareness of the stock AI. In both skirmishes I had to purposefully not shoot the JR7 just to keep it alive long enough to observe.

I got to say, thanks for that suggestion. This is why I'd love it if more people messed with the AI, need some different perspectives and ways of thinking about how to make it better.

Yeah i put trying to get the AI to double tap at the end of a reserve round in the too hard basket, way to many variables to consider!
The fundamental problem with lights in anything except light v light is they are simply too easy to hit, it's almost impossible to keep them safe with the current mechanics and a heavier mech on the field!
I have been playing with lowered accuracy and it vastly improves this.
It would be interesting for the AI to try and find a way of trying to get the lightest mech to basically only attack once someone else is engaged, but not sure how to go about that.
Do you know if a single light in a large lance successfully picks up Scout or Spotter roles?
 
Yeah i put trying to get the AI to double tap at the end of a reserve round in the too hard basket, way to many variables to consider!
The fundamental problem with lights in anything except light v light is they are simply too easy to hit, it's almost impossible to keep them safe with the current mechanics and a heavier mech on the field!
I have been playing with lowered accuracy and it vastly improves this.
It would be interesting for the AI to try and find a way of trying to get the lightest mech to basically only attack once someone else is engaged, but not sure how to go about that.
Do you know if a single light in a large lance successfully picks up Scout or Spotter roles?
Spotter is depreciated and no stock unit calls for that tag. Scout is a bit weird about how limited it is. I can get two scout tagged units to pull scout in a 25m drop with 2 non scouts rounding out the Lance, but if you drop all scouts they go brawlers. When I'm at my PC, I'll paste the code for scout assignment.

To get them to go after everyone would probably need adjusting just the scout role's weights and also probably the one for "Go this much after average # of enemies phase" which I haven't messed with yet.

My problem with lights has been, they can just be set to always reserve down and bypass everyone but knowing when they are vulnerable and shouldn't reserve is the hard part.
 
I'm on macOS so it's probably a bit different, but how do you work out what units are tagged with what?
I saw some log/debug options, but couldn't quite work out which ones to enable and where the results would go.
 
I'm on macOS so it's probably a bit different, but how do you work out what units are tagged with what?
I saw some log/debug options, but couldn't quite work out which ones to enable and where the results would go.
I'm going to wait until I get home to answer that as the beta 1.1 added a ton of new files and stuff for AI logging. Once I have time to understand what changed I'll add a writeup to the OP. The current OP AI logging section is still basically accurate, but now there is an extra option in the debug/settings.json that seems to add the new stuff and change how the files are made.
 
I'm on macOS so it's probably a bit different, but how do you work out what units are tagged with what?
I saw some log/debug options, but couldn't quite work out which ones to enable and where the results would go.
So, you can mess with the "BATTLETECH\BattleTech_Data\StreamingAssets\data\debug\setting.json" and manually add the various logging bits copied from the AI.json in the folder. Prior to 1.1, I found it way easier to get the same info out of adding these three variables in to the global.json and setting them to true.

{
/* Whether to log influence map calculations. */
"k" : "Bool_LogInfluenceMapCalculations",
"v" : {
"type" : "Bool",
"boolVal" : true,
}
},
{
/* Whether to log influence map calculation profiling
information. */
"k" : "Bool_ProfileInfluenceMapCalculations",
"v" : {
"type" : "Bool",
"boolVal" : true,
}
},
{
/* Whether to log behavior tree logic. */
"k" : "Bool_LogBehaviorTreeLogic",
"v" : {
"type" : "Bool",
"boolVal" : true,
}
},

The first two are part of a pair, they will create a .csv that lists a single units move phase, its mood, its dynamic role (turrets and vehicles would be undefined as they have static roles) and a list of the values for each spot of movement, but not where that location is in the map. So I really just used this for checking roles and moods. The last option makes a .txt log similar to what you get with the settings.json add-ins with a chronological listing of everything the AI does for one team. All of these files are dumped in "\BATTLETECH\AI_Logs" on Windows.

NEW TO 1.1

In the "BATTLETECH\BattleTech_Data\StreamingAssets\data\debug\setting.json" there is a new variable "aiLogCacheWriteImmediate": false and turning just that to true makes a lot of neat, easy to read .txt files that are broken down by each units turn. Files for threat sorting, firing choices, that .csv for movements and even a list of how the AI made its way down the behavior tree nodes. This one setting generates a lot of files, but they are really helpful and I'm probably just going to use that from now on. Also dumps files in the AI Logs folder.
 
Actually just discovered the new debug stuff, also discovered because I am in the beta presumably that it has defaulted to on and I actually have logs of my last few fights :)
Also looking at the logs, man it goes through a lot of weapon combinations when choosing what to fire!!
 
Actually just discovered the new debug stuff, also discovered because I am in the beta presumably that it has defaulted to on and I actually have logs of my last few fights :)
Also looking at the logs, man it goes through a lot of weapon combinations when choosing what to fire!!
Wait until you see a Stalker's shot calcs... It's amazing how quickly the AI runs through the combinations.
 
1.0 Release
[ModTek] Better AI 1.0 Release Package [Mod Edit: no unapproved links please]

Initial 1.0 Release
Major changes to these behavior .jsons:
  • global/brawler - Wants to grant LoS to many enemies, deal damage and break Bulwark with melee
  • global_def - Defensive mood for all units, should be more aggressive than stock
  • sniper - Wants to stay high and out of sight for fire support, will DFA more readily if closed on
  • scout - Flanks to the sides and seeks out rear arcs, provides Sensor Lock if able
  • sensorlock - Mood sets defensive posturing when using Sensor Lock
  • vehicle - Flee from melee range, deal damage, not able to reserve by default
  • meleeonly - Amped up stock config that seeks out melee attacks
  • lastmanstanding - Will do anything to take someone down with it and moves to more defensive areas
Role reassignments for 'Mechs:
  • AWS-8Q - Sniper changed to Brawler
  • ENF-4R - Brawler changed to Sniper
  • LCT-1M - Scout changed to Sniper
  • QKD-4G+5A - Both Brawlers changed to Scouts
  • SHD-2D - Brawler changed to Scout
  • UM-R60 - Brawler changed to Sniper
  • ZEU-6S - Brawler changed to Sniper
For detailed .json changes see google chart below.

Massive thanks to Mpstark for making ModTek and helping me with that side of the mod. Also, thank you to everyone who has helped provide feedback along the way here going back to beta!

I'm still tinkering with the AI. Some goals are further scout/light mech reserve mechanics, better Sensor Lock behavior and possibly some role specific defense tweaks. I need all the feedback I can get. If you record/upload your gameplay with my mod let me know! I've only got to see it in action with one or two other players and I need more people with different play styles than my own to really run the AI through its paces.

The AI isn't going to be as good as an average PvP match yet. It's just not there, "less dumb" has been my own way of describing it right now. But it should be significantly harder than the stock AI and make less choices that leave you thinking it's just dumb.
 
Awesome! Glad to see the first official release of the AI. By the ways, if you really do want to watch the AI @3dahs streams my Mod Pack on his twitch channel multiple days a week. If you tune in you can watch it and ask all sorts of questions while he plays.
 
Updated thread title and a little naming fix to the .zip. if you D/L the one with the folder named "AI Tweaks" redownload the current release and install it under the Better AI folder. Delete AI Tweaks folder.

Awesome! Glad to see the first official release of the AI. By the ways, if you really do want to watch the AI @3dahs streams my Mod Pack on his twitch channel multiple days a week. If you tune in you can watch it and ask all sorts of questions while he plays.
Not sure if I can catch it live but I'll keep that channel in mind!
 
Just so we're clear, this 1.0 release works with version 1.1 of the game, right?

(I'm getting close to finishing my first campaign, and I've postponed the update because of that. My second campaign will likely be Ironman plus a few new options and some simple tweaks to JSONs. Not sure if I want to add a full AI rebalance to that, but I'm definitely considering it.)
 
Just so we're clear, this 1.0 release works with version 1.1 of the game, right?

(I'm getting close to finishing my first campaign, and I've postponed the update because of that. My second campaign will likely be Ironman plus a few new options and some simple tweaks to JSONs. Not sure if I want to add a full AI rebalance to that, but I'm definitely considering it.)

Yes, this is for 1.1. I'll add that to the OP.
 
I watched @3dahs play last night, and the AI was behaving very well and he was quite pleased with it. Flanking around to shoot at his back was quite successful, and he thought it was a hoot that the last mech just overheated to try to take him down!

One thing that did crop up was the bug where escorted vehicles don't move. This appears to be a bug in vanilla instead of your AI. That being said, I have heard a lot of complaints about this issue since 1.1 dropped. So, it's either something with the new patch, or something with the new version of the AI I've included. I don't think it's the AI, but thought I'd bring it up just in case. There is a thread I saw where they are discussing the issue here: https://www.reddit.com/r/Battletechgame/comments/8t4zvy/escort_missions_are_consistently_broken/
 
Better AI Add-Ons

Permanent Evasion Add-On: [WIP]
This optional build is for the Permanent Evasion mod and modpacks that use it. It only changes the "k" : "Float_PipStripAttackProbabilityThreshold", variable that lets the AI know if an attack with strip a Pip or not, set to "1.0" or false.

Where is this?