Monday, November 19, 2007

Bots

I have spent a great deal of time in the mech lab and in a server with just Bots. I have mentioned several times how I am very disappointed with the MP3 Bots. It seemed to me that each time MekTek released a new mekpak that not only did we get some great mechs and new maps, but they made some bit of change to the Bots. Each change to the Bots got them one step closer to human behavior.

Many will argue that AI can not replicate actions of a human because you don’t know what you don’t know. That is, you don’t know what a human will do under any given set of circumstances. Regardless of training, regardless of repetitive actions, somehow, some way, the kaos theory always creeps into the equation. The best you can do is to make the machine, or Bot in our case, behave the way you want a person to behave the majority of the time.

What I saw MekTek trying to do with the Bots was to move them as close as possible to being a team mate. A team mate that acted as you acted and when crunch time came, it would react in the most logical manner for the given circumstances and evolve its actions as the circumstance changed. Up through MP2.1A MekTek had done a reasonably good job based on what they were able to work with within the game.

MP3 came out and like everyone else, I was excited to try out the new battlemechs. I wanted to work up some configs and try them against existing mechs just to see how they faired. When you are part of the Beta Test team, you tend to take only the stuff you are beta testing to see how it/they respond. If you have six or so Beta Testers in a server together typically, each one will take one of the ‘new models’ so you have six or so ‘new models’ running around shooting one another. Not much testing is done regarding the interactions of the older models.

One of my favourite things to do is to pit ‘same weight class’ mechs against one another. I will build what I consider to be a good config for each mech. I will set up the server to a battle or destruction mode and set the map to the coliseum. I will then load one of each mech of the selected weight class as a Bot and I will take a camera ship. Its pretty much like a ‘Solaris’ Bout from that point on. I set the server to waves and launch. This give you a pretty fair idea of how well each mech stands up to others its size and what weapons are more effective.

The Bots in MP3 were mostly reset back to the Microsoft Original Bot files. The AI for these is really pretty bad. I had been used to Level 7 bots being very accurate but cautious, level 8 was deadly and steady and level 9 just didn’t miss because of aim and would close on a target quickly. As I said, MP3 Bots were reset. Now, Level 7 Bots missed a lot and were over cautious, not moving far from a friendly mech. Level 8 Bots were terrible shooters that liked to play the slow rush game. Level 9 Bots still missed often but would execute the n00b rush from launch point. But instead of rushing you and trying to kill you right away, the Level 9 Bots would keep running past you to your spawn point, often turning a side chassis to you and pointing that one arm as if to say “go ahead make my day”. Once they reach your spawn point they will turn and come back after you.

Last evening, while trying to put together an article for Vettie’s Views, I simply got tired of the Bot antics. They were really poor performers on the field of battle. I decided to try a little experiment. I created a folder in the directory where the bot files are located and I moved all the MP3 bot files into that folder. I then opened the MP2.1A directory and copied the bot files from MP2.1A into MP3 to see if they would work.

Next I cranked up the game. I set the game to one of my favourite maps and loaded in some Bots for both teams. I crossed my fingers, said ‘oh what the hell’ and launched the game. It worked! The Level 9 Bots were now deadly accurate and quick to charge your position en masse. Not only did they charge, but they did it as a group and team fired on the mechs until the targets were wiped or until they were wiped. None of these did the ‘kept running past the enemy’ crap and then turning and coming back for them. No, these Bots came to fight.

Wow!, I thought. Finally back to some decent Bot files. I decided to load in a few Bots at levels 8 and 7. Through the many hours I have spent playing with / against the Bots, I had discovered that Level 7 Bots worked best on missile boat mechs. They would move within range and actually use their missiles without continually closing on the target. Once the target was destroyed, The Bots would then move until they found the next would be victim. I figured out that Level 8 Bots were the best ‘team mates’ for humans and other Bots. They would close on a target as a team often with multiple mechs firing on the same target. They would not charge an enemy in a n00b rush, but instead would work their way to the target. Their shooting was very accurate, but they DO miss, much like a cautious human player, using cover to maneuver and firing when they have a clear shot and every once in a while missing. None of these bots would intentionally try to leg an enemy, unless they were currently legged themselves, whereas the current MP3 Bots try to leg you from the 1st shot. No, these Bots would shoot for CT, legs or arms just get in the way.

I did several different experiments with Level 7 through Level 9 Bots loaded on each team to watch them perform and evaluate not only mechs but Bots. I have say, this was a good idea. It worked just like the code writers had originally put these files in the game. Now fighting a team of Bots is much more like fighting some humans except for the occasional ‘stuck’ bot.

Level 7 Bots worked best with missiles or long range only weapons. Although they would eventually ‘charge’ the enemy, for the most part they behaved like support mechs, firing from their range. They may not always fire at the target you hope they fire on, but they do fire and keep in weapons range. Level 8 Bots, as I mentioned above, had the most human like behavior, staying with a human and/or other bots as a group and utilizing cover to close on an enemy. I think Level 8 should be the most used Bot. Level 9 Bots make for very good brawlers, or short range mechs. They do close on an enemy, but not in n00b rush fashion. I did notice though, that if you load a team with all Level 9 Bots, they do tend to rush the other team, but if you sprinkle 2 or 3 in the mix, they tend to hang close to the Level 8s. Level 9s are extremely accurate, rarely missing of their own accord. Misses by Level 9s are generally due to terrain features like trees or hills, or the target managing to get under cover.

Knowing that Level 9 Bots rarely miss, you would think that loading long range weapons, including missiles, would be the way to go to insure your team inflicted as much damage on the way to the target as possible from as far out as possible. For some reason, that doesn’t pan out with Level 9s. They seem to hold their fire until they close to about 600 meters or so. I looked at the abi file for these bots and I am simply not literate enough to figure out what to change to increase their range of fire.

I played several games utilizing the bots and the game played much better. The Bots were merciless and deadly, but not stupid. Often when one bot was a big distance from his team, after receiving fire from the enemy, it would back off and hold up until more of its team mates showed up, much like a reasonable human would do, search for cover and try to get help by going to the help or getting the help to come to you. I actually enjoyed playing a few rounds with the bots. The best part is that they don’t type insults in the chat window, they just get owned and come back for more.

I don’t mean to say that the Bots are easy, far from easy with the right mix of levels. Sure 1 on 1 or even 2 on 1, the bots will almost always be taken down by a human, even me. Now you get 6 to 8 of them playing like a team and they are hard to beat, or they are good to practice against.

There are a few things to remember when playing against bots. A Head Shot has no effect on a bot until you get a second head shot (second shot kills the mech) on it. Taking out the hud on a bot does not affect the ability of the mech to target you at any range. A bot does not suffer the cracked windshield that you and I see. Legging a bot, or nearly legging it does not keep the bot from closing on you. A bot will not try to protect its leg, but instead will continue to fire at you and move in your general direction. Disarming a bot will not hinder it from trying to kill you. Once a bot has lost one or both arms, it begins to act like the Black Knight in ‘Monty Python’s Search for the Holy Grail’. It will not turn and run away. Weapons knock has very little affect on a bot. Hitting a bot with a HV20, or 2 HV10s, or UAC5s or whatever, may knock the bot around, but it will not cause the bot to loose its aim on you. There are some weapons that provide enough knock and if chained successfully WILL prevent a bot from returning fire on you, but you would have to be in an assault class mech capable of holding enough ballistics to do this. Knocking a bot down does not cause the bot to loose its ability to target you and it will continue to shoot you even from a horizontal position. If you manage to get enough firepower mustered on a bot AND it falls down, it WILL continue to shoot you and fire missiles at you (if so equipped). A bot will get up and fire again and again and…

I have to say that I hope MP3.02 (and beyond) does some serious work to the Bots as well as the mechs and maps and security fixes. MP3 bots were certainly a let down. I understand that the reason MekTek reverted to Microsoft Bot Scripts is because the MekTek scripts caused issues with some maps and even caused servers (hosted or dedicated) to crash. I will say that I never ran into that problem on either of my machines on any map that I played in any mode. That doesn’t mean it wasn’t an issue, it just means that I never encountered the issue. I was very disappointed with the bot file in MP3, but I have found a work around. By sometime later tonight, both my machines will have the bot files replaced with Mp2.1A bots.

From the time I originally wrote this, I have since learned a little about scripting the bots and how to make them perform ‘better’. I have gone into my own bot files and created what I think are some decent bots for practicing against. I have not altered level 5 and below, just level 6 through 9.

My intent was to have level 6 bots as a ‘guard bot’ or range bot, one that would not stray far from the drop zone OR other bots on its team, but one that would utilize missiles or longer ranged weapons. The thing is, bots fire when they ‘see’ they have a clear shot on target IF their weapons have recycled and are ready to be fired. This is good for direct fire weapons, well, except for missiles. You see, missiles, when fired, will fly to whatever point they were aimed unless disrupted by terrain or other obstacles entering the flight path UNLESS those missiles happened to have had a ‘lock’ on target. Unless a BOT has BAP or is using Artemis Equipped Missiles, it is pretty rare that a bot will get a lock BEFORE it fires the first time. I have also discovered that unless the bot is fired upon, it will not shoot targets at 1000 meters. I have altered the scripts that allow my bots to shoot at stuff that far (given the correct weapons) but it is pretty rare that they do it.

My Level 7 bot was to be a team mate, a general all purpose bot that could take any config and do well with it. If a human was on the same team as the bot, my level 7 will follow the human to battle if the human moves slowly enough. My level 7s are set to aggressive, however, they start out in a non aggressive fashion seeking the enemy. Level 7s will examine they current mech they are in and the weapons load and determine their best mode of fighting based on mech and weapons load. They will utilize terrain and they will chain fire the hell out of you. They are also set to examine the target damage and shoot for that area. If there is no damage, then they ‘aim’ for the CT. IF you leg has damage or an arm or whatever, they will shoot that area until they are destroyed or until they destroy the damaged area. From there they migrate back to the CT. These guys are set up so that they do miss and they are not always 100% accurate.

Level 8s are set up to be as sneaky as possible and very aggressive. They start out in a bad mood and they want to get the battle over as quickly as possible. They are very accurate, but they still miss. These guys have been known to go passive if the human on their team does so. A level 8 bot of mine will be the leader of the bots unless there is a level 9 present. IF there are no Level 9 but more than one level 8s, the one with the best electronic package is the leader of the bots. IF it is attacked, the other bots (including level 7s) will come to its aid as soon as the can unless they are currently involved in a fire fight themselves.

My level 9 bots are set up to be the leaders of bots. Again, if there is more than one level 9 on a team, the level 9 with the best electronic package is ‘the’ leader. All others will protect him should he come under fire. A level 9 is aggressive but cautious. These guys are the most accurate of my bots but they are not 100%. They are just damn good shots. They will seek out the best attack route to the enemy and will start engaging at range (if they have the weapons to support range fire) but as they close in they get more and more aggressive.

One thing I have not figured out how to do is to make my bots jump over obstacles or jump climb a hill that they have trouble walking up. They seem to jump snipe just fine and even jump to avoid missiles if a lock has been put on them, but for whatever reason, I cant get them to jump over things or up hillsides. I ma still working on that and again, I am not a script writer nor a programmer so it’s a trial and error experiment for me.

When I first starting messing with the bot scripts, I really screwed them up. I had 12 bots standing around not moving or shooting. Doh! I went in and made some adjustments and actually got them to move around, but they wouldn’t shoot. Then I got the ‘Im gonna stand here and walk in circles’ thing going. I got past most of that and actually got them to move around and shoot. At one point, not knowing what I had done, I had it so that if I loaded more than one of the same level bot (say 2 level 7s) that neither of the bots would do anything until the other one was destroyed. That was bizarre. Of course, I also had it so that they would shoot anything that had a weapon, even their own team mates. That was a mess. I would drop in and the darn bots would start shooting me as well as the others on my team, it was like a Solaris match but the game was team battle… yeah that was a fun fix.

Anyway, I am always working on my bot files to make them more interesting and to make them tougher opponents. Lots of folks don’t like to play against bots but sometimes that’s all you have. For those times, I want my bots to be better than the average joe mechwarrior, I want them to be a challenge. I will say tht I always try to give the ‘bot team’ more players than the team that holds a human (or multiple humans), even as much as a 2 to 1 advantage, because, after all, they are just bots.

1 comment:

  1. very intresting vettie, i have only the bots that come with the game.
    sudden

    ReplyDelete