I'm not sure that "making it extremely customizable" is the greatest option, nor does it make a great deal of sense (I'm not sure what you'd be customizing). If you were customizing the AI, wouldn't that kind of defeating the point of making it adapt to the player?
I like the idea of allowing the AI to adapt its personality to try to better combat the player, but to be honest, I'm not entirely certain how one might do this.
Suddenly finding planetary cloaks or raid enginers or modular fortresses would be beyond irritating. On the other hand...
How about a new "Variant" AI type, that occasionally drops the ability to produce new ships, structures, etc. in favor of new ones, possibly by keeping track of what it knows the player has and occasionally dropping its weakest unit. Alternatively, if it detects that exogalactic waves or CPAs are doing a dispreportionate amount of damage, allow it to cut back on wave sizes, possible commit part of a wave to threatfleet, and put part of it into the strategic reserve, and trigger Exos more often. Alternatively, if a wave is being extremely successful in taking out its objectives, let the AI launch whatever CPA or Exogalactic forces it has to help supplement the attack. I'd be in favor of an AI type like this having more special forces and alarm posts than usual.
To attempt to put some sort of pseudo logic (I can't use the language used for AI programming worth a damn, so this will be bad) -
if(shipreplace == true) # This would probably run the most commonly select poorest preforming ship type #(non triangle ships) cancel production of ship type select ship type with characteristics, weighted by what ships are successful and what aren't. #(This will probably be most effective when schitzo waves are off) replace 1/2 of ships of old type with new type #(Keep a few of the old ships around, so the AI can gauge its comparative effectiveness)
if(chokepointed == true) #(If threatfleet reaches a large size, but can't attack, open up its options)
Select from the following weighted list Build Warp Relay at AI Tech level*random-1 planets from choke point #(instead of jumping deeper into player space, this AI will occasionally try to place warp relays deeper into its own space, aiming for a single jump past the player's 'whipping boy' world. if(chokePlanet has unguarded player wormholes) 1/2 of Threatfleet attempts to pass by the planet without engaging (even if it takes some losses, rest of fleet waits to see if an opening appears. This might work like giving it an exo objective) Sacrifice a portion of threatfleet to build a series of raid guardians, attempt to use the threatfleet as cover for the guardians to reach their target (send threatfleet early?) #(I don't actually like this one, as it leans a little to close to the territory of player behavior) Build a Raid engine 2 jumps from the chokepointed world #(must be 2 jumps from player space) Build a superfortress, ion, or black hole machine on planet bordering player activity (threatfleet goes on guard at that planet, attempting to contain the player) Use strategic resources (special forces, strategic reserve, etc) to bring the AI's strength high enough to counter the planet + nearby mobile player assets Low Chance of CPA deepstrike
if(ReinforcementCalc == true) #Ideally, this will trigger very rarely shift points between the reinforcement and wave multipliers, depending on what's been more effective. #(this one I'm not sure on, I want the ai to be able to shift somewhat, but I'm not sure how to accomplish making the AI more aggressive to counter player weakness) Initial multipliers should be reduced to account for this personality being an irritating, unpredictable bastard, which will make it harder on the player
if(TimeToAdapt == true) #Planet handling? if this has not yet run, run a check of "major" ai structures near player planets. Keep a running count of all objectives and playerships killed as a result of these objects. (raid enginer would be per wave and anything that's killed on that planet, cloaks would be by planet, eyes would be by their own kills, etc.) #Ideally, there will be a disproportionately large number of such structures within middling range of the player, so they're forced to deal with them. Unfortunately, it doesn't fix the problem of the player saying 'hug that' and avoiding worlds that seem particularly nasty. if it has run, select the most dangerous item to the player (per cost to the AI), and place one somewhere inconvenient (core world? Chokepoint?) if it can't decide, select an item with as few similar characteristics to what already exists
|
Arcen guys, I'm pretty sure all that was useless, but I wasn't sure how else to get the idea across. (Not sure how feasible it would be to implement either).
The idea, for lack of a better term, would be similar to a genetic algorithm that constantly attempts various random options. If something seems to be an improvement, the AI will capitalize on that, if something seems to be doing particularly poorly then switch to something particularly off balancing. In the cases of medic frigates and shieldbearers, effectiveness should probably be judged by opportunity cost (so possibly selecting a new item, switching to it, and if fleet effectiveness falls, switch back). Structures like gravity drills could possibly be calculated by their chance of helping the player (if the player has a fast, teleporting fleet, grav drills are expensive, if the player is slow anyway, the drills can actually have negative "cost" and allow the AI to trade for a superfortress or something. Call it 'logistical support'. [since they'll help a slower moving player more than the AI]).
Other thoughts: Possibly have this AI randomly select one of three or four personalities for mk III and IV worlds, then compare the player's relative effectiveness against each one (measure AIP, ships lost, time spent on planet perhaps). Less effective personalities get removed and new ones added. Weight the system so that the oldest AIs have the greatest chance of influencing a higher level planet (so in theory, the core worlds should be ideally fit to make the player's life difficult).
Sorry if this is somewhat rambling.