• 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.
The concern, I think, is that if they take too many of those shots they burn their heat too soon and don't have the capability to drop the hammer when the opportunity presents itself.

Ok we'lll let's leave it at 35% for now. Honestly it's not really a bad move a lot of the time when the AI uses a single shot to strip evasion. Particularly when they've got you outnumbered
 
So I've finally gotten time to test some things.

global.json - works like beta. Edit some values and they apply to everything, SP and Skirmish
unused.json - inactive file filled with mostly valid variables. Add these to the global.json (or other valid .json) and give them a non-zero/false value and they should work. Editing this file doesn't seem to do anything, and it shouldn't. I tried turning on the logging variables from inside the file and it didn't work until I pasted those in to the main global.json.

Dynamic Mech Roles -

Are active and working in the stock game, unlike beta.
  • Brawler - Blank file, but default AI role. global.json is already set to brawler values
  • Sniper - Works with mechdefs that have the tag and seems to be limited in combatgameconstants.json to 50% of the force or less
  • Scout - Works with mechdefs tags, and isn't defined limits in the combatgameconstants.json
  • Lastmanstanding - Blank file, and it seems like units can pull this if they are locally isolated, not just the last unit on the board. Had a 4v8 5 Skull where one Lance was stuck on a sniper perch, the last brawler pulled this role even though more units where on the board, in combat, but very far away. Maybe roles are dished out at the Lance level and not across the entire force?
  • Flanker - Present in the DB, but I don't think this is active.

Moods -

I still don't know where these are defined and what values they change. There are some personality_xxxxx.jsons and a global_sensorlock.json that almost correspond to those names, but they seem to be outdated files and the naming isn't quite right.
  • Aggressive
  • Defensive
  • Sensor Lock
AIPersonality -

This variable is found in dynamic and story AI pilots, seems to be always "AIPersonality": "Undefined", and the personality_aggressive or _disciplined files outdated. For all I know moods = AIPersonality, but I don't think that's the case. This might be useful for modders as it could be ripe for making units act differently.

Skills -

There is one file for a skill called "Reckless" that is zero'd out in the global but has a 100% trigger inside its own file. I got no idea if this is skill active and is a totally new category not seen in the beta files, skill_xxxxx.json. Maybe an AI pilot tag somewhere?
  • skill_reckless - Percent chance (0-100) of actually using the "Reckless" skill.

If anyone want to help figure out if more roles are working, there are also two other role_xxxxx.json that might work, turret and vehicle. My SP missions were unfortunately all 'Mechs, all Battles. The non-combatant role might also get used in story missions, but it is also a blank file.
 
Last edited:
That is a very interesting write up. Glad you've found some more time to address AI tweaking again! Having the AI roles on combat always seemed like a great idea and I'm glad to see that they got a partial implementation in the live version. This will definitely help us to make the AI better and more interesting going forward.

I didn't know we had access to more variables through the unused json! I'm surprised they didn't just leave these in but toggle them off. I'm going to have to crack this open to see what is in there.

Do you think a good place to start tweaking mech roles might be through the Last Man Standing call? You say it gets called but has no impact. Seems like a very easy thing to play around with, then.
 
That is a very interesting write up. Glad you've found some more time to address AI tweaking again! Having the AI roles on combat always seemed like a great idea and I'm glad to see that they got a partial implementation in the live version. This will definitely help us to make the AI better and more interesting going forward.

I didn't know we had access to more variables through the unused json! I'm surprised they didn't just leave these in but toggle them off. I'm going to have to crack this open to see what is in there.

Do you think a good place to start tweaking mech roles might be through the Last Man Standing call? You say it gets called but has no impact. Seems like a very easy thing to play around with, then.

The unused.json is basically a repository (probably for us) of variables that would be "0.0" anyway and a lot of them serve the same general roles as active ones, but slightly worse as the combat mechanics has evolved since those were written. There are things for "Move to areas that grant greater LoS/Radar range" that must have been a part of the original testing for EWAR and asym. sensor suites and so on that would be meaningless in the stock game. The decision tree also has a thing to ignore all weights with 0.0, so whatever it is won't even be neutrally considered, just outright ignored. To make the AI easier to tweak, they just moved them out but kindly collected them in that file for us to find.

Lastmanstanding.json was also blank in the beta and you could throw stuff in it to make the last unit act desperately as I did in the final Post-Beta AMP release, you can find that thread in this subforum and still DL the pack to see what I tossed in there. Right now, I'd focus on getting the base brawler (global.json) optimized (work on reserve, self evasion and bulwark weights) and then start worrying about the sniper and scout roles. That last AMP release had WIP versions of all of those I assembled by hand, not based off the beta ones, but with variables I felt the roles needed to preform their job well. Now we have actual Brawler/Sniper/Scout files that are in line with the global and we use those as a base. New roles wholesale may or may not be possible, more digging/testing is needed to figure out if we can just make a new role, add it to the VerMan and tag a unit with it and have it work. If anyone wants to try that, go right ahead.

I'm almost done with my massive excel sheet that has all the used and unused files variables side by side. I feel this will help me keep things in order once I start trying to balance out the weights across different roles. Maybe by the end of the week I should have it ready to post here. I still need to figure out if the role_turret and role_vehicle are used as it's setup with two main columns of active and inactive roles. I'm starting to see which variables get changed a lot between roles and form an idea of what HBS's AI guys were trying to do with them.

EDIT: I was wrong about the scout role not being in the DB, it is there. Also, so is the Flanker role and corresponding .json in the behVar folder. Are any units tagged with Flanker? I need to check.
 
I saw your roles during from the beta and it looked interesting. It also wasn't clear to me how experimental they were and how well the AI utilized them. I left them out as I didn't want to include some possibly very wonky stuff in a Mod Pack intended for the masses. What do you consider in a polished enough state to implement?

I'm very glad you're back in communication range, btw. Tweaking AI has always been a particular interest of mine in game mods so now we can move forward with this great project. :)
 
The unused.json is basically a repository (probably for us) of variables that would be "0.0" anyway and a lot of them serve the same general roles as active ones, but slightly worse as the combat mechanics has evolved since those were written. There are things for "Move to areas that grant greater LoS/Radar range" that must have been a part of the original testing for EWAR and asym. sensor suites and so on that would be meaningless in the stock game. The decision tree also has a thing to ignore all weights with 0.0, so whatever it is won't even be neutrally considered, just outright ignored. To make the AI easier to tweak, they just moved them out but kindly collected them in that file for us to find.

Lastmanstanding.json was also blank in the beta and you could throw stuff in it to make the last unit act desperately as I did in the final Post-Beta AMP release, you can find that thread in this subforum and still DL the pack to see what I tossed in there. Right now, I'd focus on getting the base brawler (global.json) optimized (work on reserve, self evasion and bulwark weights) and then start worrying about the sniper and scout roles. That last AMP release had WIP versions of all of those I assembled by hand, not based off the beta ones, but with variables I felt the roles needed to preform their job well. Now we have actual Brawler/Sniper/Scout files that are in line with the global and we use those as a base. New roles wholesale may or may not be possible, more digging/testing is needed to figure out if we can just make a new role, add it to the VerMan and tag a unit with it and have it work. If anyone wants to try that, go right ahead.

I'm almost done with my massive excel sheet that has all the used and unused files variables side by side. I feel this will help me keep things in order once I start trying to balance out the weights across different roles. Maybe by the end of the week I should have it ready to post here. I still need to figure out if the role_turret and role_vehicle are used as it's setup with two main columns of active and inactive roles. I'm starting to see which variables get changed a lot between roles and form an idea of what HBS's AI guys were trying to do with them.

EDIT: I was wrong about the scout role not being in the DB, it is there. Also, so is the Flanker role and corresponding .json in the behVar folder. Are any units tagged with Flanker? I need to check.


If you could upload that excel as a google sheet that would be awesome :)
 
We are adding a permanent evasion floor to Ace Pilot to our Mod Pack. If your pilot is an Ace, depending on the weight class of their chassis, they can only go to a minimum evasion threshold due to evasion stripping. One of our concerns is that the AI would just try to continually sensor lock them to strip off the evasion that will never go away. We don't know if this is an actual fear that could be realized, or just paranoia! @Amechwarrior you obviously know a lot more about this behavior than we do since you fought with the AI sensor locking in your tests. You had it set to 0.1. I think we have it set to 30 in ours. What insights can you provide?
 
We are adding a permanent evasion floor to Ace Pilot to our Mod Pack. If your pilot is an Ace, depending on the weight class of their chassis, they can only go to a minimum evasion threshold due to evasion stripping. One of our concerns is that the AI would just try to continually sensor lock them to strip off the evasion that will never go away. We don't know if this is an actual fear that could be realized, or just paranoia! @Amechwarrior you obviously know a lot more about this behavior than we do since you fought with the AI sensor locking in your tests. You had it set to 0.1. I think we have it set to 30 in ours. What insights can you provide?

The AI still over uses SL in my stock games vs. Already visible targets with 0 Evasion. I haven't been able to look at it. SL and related variables got a lot of work done between beta and launch. I'm not sure how it works now and testing (by anyone) will be needed.

Overall, the AI uses it well enough and if anything slightly over does it. I think with perm. Evasion your fears would come true. You might want to adjust the AI to use SL less. But this might crippled usage beyond default LoS, where the AI needs to use it for getting a shot at anything.

Edit: As for how ready those beta files were, brawler, sniper and lastman could probably be ported over to launch the same way you did with global. Some adjustments, but serviceable and an improvement. Scout role was weird and not really tested at all, values were set very high for testing.
 
Last edited:
Where is your last man standing file? I don't see it bundled with the others.
 
Ah, there it is. I found the link to your AMP in this thread. I pulled out the AI files I need under the headline that says, ABSOLUTELY DON'T USE THIS IN THE NON-BETA GAME NO MATTER WHAT YOU DO!

:p
 
Here is the link to the google sheet:

https://docs.google.com/spreadsheets/d/1_DPjfcvKAKmdIQwmwOghBrV3TPc9v5c8weUq_qK78WY/edit?usp=sharing

The sheet lists all global and unused stock values with the descriptions from the files, no personal comments have been added. The next few columns are active roles I know the AI can pull, followed by ones I haven't seen the AI pull, even in SP testing with vehicles and turrets. We can see which variables get a lot of edits by role and which ones HBS thought each role needed to change to be different then the default brawler, which is just the global.json. I plan to copy this and then insert my own column in between stock and actives for my modded global work, and if you copy the sheet to your own drive, or export this as an excel file, you can do the same if you want to keep track of what values you are editing relative to stock.

I'll re-do the OP soon, or when I get more time.
 
Whole new OP is up. When I get to actually modding the variables I'll throw that file in the OP as well.

EDIT: If I got anything wrong let me know. I'd love for someone at HBS to drop by and shine some light on what I got wrong or how those AI moods work.
 
  • Scout - Works with mechdefs tags, and isn't defined limits in the combatgameconstants.json
  • Lastmanstanding - Blank file, and it seems like units can pull this if they are locally isolated, not just the last unit on the board. Had a 4v8 5 Skull where one Lance was stuck on a sniper perch, the last brawler pulled this role even though more units where on the board, in combat, but very far away. Maybe roles are dished out at the Lance level and not across the entire force?
How did you test these? Combat log output? AFAICT both are disabled in the dll code.
 
This new AI that we've folded into the Mod Pack seems to be working quite well! The feedback is very positive.
 
How did you test these? Combat log output? AFAICT both are disabled in the dll code.
Either by adding the AI debug loggings from AI.json to the settings.json, both inside in the debug folder, then reading the output in the new Dumpbox folder in the root BATTLETECH location. Or, in my new OP - turning those AI logging options to true and then adding them in to the global.json. Either one gives you various ways to check what unit is using what, but sadly only after the match and not live.

mpstark on one of the discords has been so kind to collect some data he found via dnspy and I or someone else will toss those up here with a little write up. But we can see what roles, moods, skill (just one 'Reckless') and other bits are actually working.