I've been thinking about this for a while and want to get it in here for review.
The design structurally like this.
Top level design- Maneuvers
- Situational awareness
- Pilots
- Decisions
1. ManeuversA big list of possible actions. Things like high g level turns, Immelmans, loops, etc.
Each will have it's initial state conditions. Things like altitude > X, wings level, speed > X
These default initial conditions can be modified in the aircraft definition. So to do a loop the initial velocity will have to be greater than an aircraft specific value.
2. Situational awarenessEach maneuver will be assigned a list of codes which define when it should be used. I am currently working on an assumption it will be 36 values based on 6 O'Clock High, 12 O'Clock Low, etc.
This will be modified by the aircraft definition to emulate real world tactics. Spitfires turn, 109's climb, etc.
3. PilotsNot all pilots are the same, the pilots will be assigned a skill level (and possibly an aircraft skill level, so a pilot might be an ace BF109 jockey, but useless in a Me 262).
This skill level will change over time should they survive.
4. Decisions Firstly the code will find a target. Targets will be ranked by a risk reward system. Targets that pass the test will be added to a list. This list will then be randomised based on pilot skill. So an ace will always take the best target, a rookie might get it wrong and select the wrong target.
Once I have a target, the code will build a list of possible maneuvers this will include some error based on pilot skill. So a rookie might try to do a loop with insufficient energy and stall out.
Again these will be ranked based on risk reward.
Once again the list will then be randomised based on pilot skill. A rookie in a 109 might attempt to out turn a spit, a rookie spit pilot might try to follow a 109 up high.
Then the code takes over and tries to fly the maneuver, no faking it here. All maneuvers will be based on flight inputs.
Well that's my basic design.
Ideas?