Overview of the BOBII AI Performance and Design

The redesign of the AI Maneuver Selection

The redesign of the AI maneuver Selection Criteria was driven by the need to become more deterministic and less random in selecting AI maneuvers. I felt the need to move in this direction to improve the AI offence and defense so the AI selection software had more control. Of course there is a big danger in this strategy. We do not want BOBII to become repeatable. This will become a fine line to follow in the future and I will need both our testers and customers help and feedback.

Here is a summary of the new selection criteria design:

1. Altitude (how much altitude and rate of change)
2. Speed (how much speed, and rate of change)
3. Position of A/C to each other (none to tail, tail to tail, nose to beam, tail to beam or left, right, front, back)

To implement the new selection criteria I built a 3 X 6 matrix (a truth table) and many new programs. For each A/C (the unfriendly and the AI or the player), I designed programs to look at Altitude, Speed, and position and to first try and select the best maneuver option (aggressive or defense) based on AI skill level.

Altitude and speed can also be thought of as “energy” as altitude can be turned into speed.

The new design uses the A/C’s current position but I am thinking about implementing the A/C’s “lead” position (his future position which would be a small delta in the future).

Anyway, this new design is a long term work BOBII AI strategy (work in progress) that I can work on as I have new ideas for the AI from our testers and customers. It should position the BOBII AI design for future improvements by using more deterministic rather than random selection criteria. The goal is very simple “to improve the AI performance” and keep BOBII the best off line AI.

My gut feel based on my experience and testing is that the AI is now stronger at selecting the best/correct maneuver, avoiding bad positions (like low altitude), better at avoiding low energy, and in general a bit stronger fighter and defender. Of course, the Player will always “win” with experience/practice but if we give the player a better fight (scrap), I personally consider that real progress.

BTW, I also gave the Terminator AI a bit of boost in performance and tune-up so you might want to try it out. With the boost in Terminator performance, he was getting “cocky” so I implemented a spinout feature. The Terminator flies so close to the edge now that he has a tendency to “spinout”. This is when you can get him.

I also implemented a new AI feature called “Flying Factor (FF)”. This is the knowledge of the AI pilot to fly a given maneuver (experience) and how well the AI pilot will actually fly the given maneuver (skill). The FF is based on the Skill Level (customer selected in Instant Action Missions and software assigned in the Campaign). The Terminator AI is assigned a Skill Level of Hero2 (the highest in the game) so that is where he gets his boost in performance (edge).

AI Maneuver Selection is KEY

First, the BOBII AI has a special case for selection called “Evasive maneuver selection”. The Evasive maneuver is required when an AI is shot at (either a hit or near miss). The AI will select a defensive maneuver based on the criteria/data for both Player and enemy AI (speed, altitude, and the position of the targeting AI and the AI being targeted with respect to each other).

The first key decision to be made is to select either an aggressive or defensive maneuver. This is a complex decision based on the available information on both the Player and the Enemy AI or the friendly AI and the enemy AI. The data considered for both Player and enemy is speed, altitude, and the position of the targeting AI and the AI being targeted with respect to each other.

After selecting either an aggressive or defensive, then a random approach is used to select a category (choose good, choose bad, or choose “neither” good nor bad maneuver).

Maneuvers are then divided into three parts Climb, Horizontal, and dive for each of our categories (choose good, choose bad, and choose neither good nor bad maneuver).

The individual maneuver selection is then based on speed, altitude, and position of both the player and the enemy AI.

In BOBII we have over 80 complex maneuvers for selection (both the aggressive and defensive maneuvers) for the fighters (Spit,Hurri,109.110) and over 50 simple maneuvers for selection for the JU87 and Defiant. The following are BOBII’s complex maneuvers (each maneuver is a significant program for completing the assigned maneuver):




















































































The AI Performance Criteria/Dependencies


Skill Level

The AI performance is dependent on AI Skill Level (which is customer selected in Instant Action and SW assigned in the campaign). BOBII AI do make mistakes (spin, crash, dumb maneuvers, bad judgment, shoot late , shoot bad, etc) which is after all very human.

The skill level of the AI is key in making decisions on about everything with respect to AI performance like (1) how well the AI fly, shoot, shoot fast, slow, accuracy, or not shoot, (2) how well the AI fly, what maneuvers are selected, and how well the AI will fly the chosen maneuver.


Random Numbers (Luck of the draw)

The BOBII AI A/C is also dependent on luck (specifically on random numbers). Random number decisions are coded through out the AI code. BOBII’s random approach keeps BOBII from doing the same thing each time. Even something as simple as the direction to start a maneuver (left or right), I will use a random number to decide (why hard code something when you can use a random number).

For example, most BOBII vertical maneuvers use a random number to assign a length of time to for a specific vertical maneuver (Like Zoom). The AI pilot will sometimes cut off early, or late, or somewhere in the middle. If early the maneuver may carry too much speed and if late the AI may slow down so much that control is lost (very human).

The bottom line is that the customer will always see a somewhat different maneuver (very good, good, not so good, and loss of control) both because of the random implementation and the different physic’s parameters (speed, roll, heading, pitch, and overall energy) going into each maneuver.

The very real downside of random numbers is it is very hard to test (not repeatable) and the processing power used.



The conditions for each maneuver are always different (energy, speed, altitude, skill, damage, and enemy position). This also changes how the maneuver is performed. A damaged AI will not fly as well as an undamaged AI.

“What method do testers and players use when testing and refining the BOBII AI maneuvers”? (we have over 80 complex maneuvers for selection [both the aggressive and defensive maneuvers]) for the fighters (Spit,Hurri,109.110) and over 50 simple maneuvers for selection for the JU87 and Defiant).

The the BOBII players and testers have worked with a single programmer on the AI for the last 6 years (version 2.03- 2.11). Each and every maneuver was reviewed, tested, evaluated, and refined. This was a committed team approach involving a large amount of work.

We use Move Code Labels in real time as a tool to show which maneuver has been selected.

The best way to learn more about the BOBII AI is to turn on Move Code Labels and watch the AI. A good way to watch the BOBII AI is to use Auto Pilot (control+A) so you can just sit back and watch the move codes change.

BOBII’s label options are the following:

1. Move Code Labels – Used to test BOBII AI maneuvers

2. Short Labels – Short text

3. Full Labels – Full text

4. Single Character Labels – Player selected single character

5. No Labels – For realistic game play

Example picture:

1. Move Code –Examples like AUTO_FOLLOWWP (following WP like bombers), AUTO_COMBAT (fighting move code but depends on individual maneuver code), AUTO_LANDING, etc.

2. Maneuver code — Examples like MANEUVER_DISENGAGE (stop fighting, reasons are many), MANEUVER_TURNINGFIGHT (aggressive maneuver), MANEUVER_BREAKHIGH (defensive maneuver), etc.

3. Range to player (meters)

4.Skill level (Novice, Veteran, Ace, Hero and each subdivided, example Ace1, Ace2, Ace3)

5. Alt (feet)

6. Speed (MPH)

In BOBII the AI and the player use the same FM and code so they are equal with only two exceptions (1) the AI do not black out or white out and (2) the AI can see through clouds (the AI do have blind spots as they can not see through the solid A/C parts [wings, rear, nose, etc] or see into the sun). Customers do sometimes complain that the AI can pull more G’s and does not black out but in my opinion the advantage is small against a human pilot.

In BobII the AI can stall, spin, crash, and do stupid things. The AI ability to fly effectively is controlled with “skill level” which the player can select in Instant Action Missions and skill level is assign or user controlled in the Dynamic Campaign (both commander and Single Pilot). The higher skill level AI are more effective in Air Combat as they have the ability to fly more maneuvers and they fly each maneuver more effectively and efficiently.

In BOBII we have over 80 complex maneuvers for selection (both the aggressive and defensive maneuvers) for the fighters (Spit,Hurri,109.110) and over 50 simple maneuvers for selection for the JU87 and Defiant

The AI maneuvers are flown in BOBII using commands (AI do not use a joystick to fly). I would expect that the commands are tailored for BOBII (of course I have no knowledge of the COD AI design and data base). The data base for the AI is also BOBII specific as well as all the many support programs.

The basic design and approach to AI could be transferred/reused but the new code, integration, and testing would be very significant, IMHO. It would take one person years to complete (if they understood the BOBII AI) and it also assumes a good Player test team to test the AI maneuvers so the project could be coded and tested in small increments.