These are just thoughts on AI to this point.
First, the AI routine needs to incorporate a timer mechanism. The two basic update features an update by frame and an update at an interval. Update at an interval is already an integral part of the game design and is set at ten update per second. That is subject to change; however, it won't explode to a timeframe more conductive to manuevers. In addition, it won't vary (which is a likely need for manuevers) during an actual mission.
Second, there are a large number of factors that go into selecting the "best" target. The previous prototype had a simple AI, mostly to test features. It consisted of a check against the DradisList (under a different name in the previous prototype) and checked the range and direction (in relation to the fighter). Based off of these factors (distance and how in front the target was - distance being a slightly larger weight) it selected a target. This created a very predictible flight pattern. In this prototype, I want to create a more realistic and complex AI process.
Each fighter will need a standard stance: aggressive, balanced and defensive. These will give different weight to different options. An aggressive stance will more likely take an attack option; while a defensive stance will concentrate on avoiding damage. Stances can change over the course of a mission; however, they can also stay static depending on the needs of the mission.
In addition, each fighter should have a mission target option (represented by a game object related variable). Fighters will have an option to ignore fighters (depending on circumstance) and attack the mission target. Mission targets are more likely to be engaged with missiles, and the attack vector should be longer (i.e. engage at a distance) than a fighter versus fighter scenario. I'm not sure if I advocate a mission target then looking for a target of opprotunity or weighing each target while using a single selection routine.
Fighter engagements need to be based on the current circumstances in the battlespace. Factors could be:
Is there a target behind me? How do I handle a trailing target?
Is there a target in front of me with a reasonable distance?
Are there other factors like a closing fighter that need to be addressed?
Are there objects that I'm about to hit? Which way is the best direction to travel if there are?
Am I about to travel into a "fire zone"? Is it worth going into a "fire zone"?
A "fire zone" is the generally the area between to capital ships while both ships are firing on each other. The bullets and missiles in this area are generally considered hazards, and BSG has traditionally handled this as a no-fly zone.
Third, if a fighter selects an attack pattern or a defensive manuever, how long should the fighter keep that engagement? If it gets hit, will it continue pursuit? Or will it turn and engage the offending target? Or, will it execute evasive manuevers? If I'm following a target with high hopes of destroying, do I worry about a trailing fighter behind me? Do I continue with the engagement? Do switch targets? Do perform evasive manuevers and look for another target when I'm safe?
If I engage a target and destroy, it's an easy call to go back to the selection process. If I get hit, going back to the selection / decision process is pretty clear. If someone is following me, I probably should go back to the decision process.
Fourth, avoidance routines should always be on. It breaks immersion when a Cylon raider (or a colonial viper for that matter) rams a capital ship for no reason. There should be a forward raycast for each ship with a distance check for a hit. Depending on the ship, it should perform an avoidance routine at certain distances. However, should it go back to a decision process or attempt to reengage it's previous target?
Fifth, fighters need to perform some form of "formation" flight. Basically, fighters should also follow an ally to provide cover. This is a difficult thing to emulate. It's also a difficult thing to add to the decision process. In addition, it might be difficult to calculate how long a fighter stays in formation. It's been said in the fighter community (real world and many fictional worlds) to never abandon your wingman. How far does that need to be taken to provide a fun but somewhat realistic game.
So many considerations... I have a headache now.