It's been a productive holiday season. The AI that existed in Beta 5 (public) is dead. It's gone now. And it won't be remembered fondly. Not by me at least. It functioned. But the fact is, in a game that has no multiplayer the standard of quality on AI should be very very high.
It isn't enough for a game AI to be challenging. The AI needs to be more than that. It needs to play like a human being. Much of what I've done this holiday is go through and play the game over and over and think of different ways human beings would play the game. Then I've tried to replicate that. We want a player to feel like they're playing someone else on-line (minus the disconnects and swearing).
Here's what I've checked in so far:
There are a bunch of important changes in this that will have a significant impact on gameplay.
Here is what has been changed:
+ Various bug fixes
+ Various new helper functions
+ New function: CalculatePrimarySectorToConquer(). AI creates a set of sectors that it wants to conquer. It also creates a set of sectors it wants to protect as a priority.
+ Modified base ship design to put more effort into range.
+ New AI ship class: Scout
+ AI designs scouts
+ AI evaluates whether it can “trust” another player based no their past behaviors.
+ AI looks to see if someone is culturally attacking them.
+ AI looks for military threats (like someone massing forces).
+ AI looks to see if there are hostiles in sector and if so, avoids sending transports there IF it knows about the ships.
+ AI no longer “knows” where good planets are. Non-Terran AI knows where planets are and is better at scouting. Terran AI has to send scouts blindly.
+ AIIsPlanetKnown() determines whether the AI knows what’s going on on a given planet.
+ AIIsShipKnown() determines if the AI knows about the existence of a given ship.
+ AIFindUndefendedPlanet() gets a sector ID and looks to see if it knows about any undefended planets.
+ AIIsSectorFocus() checks to see if a given sector is of interest to the AI.
+ Continued (and failing) attempt to get the AI to build key planetary improvements on its planets.
+ AI builds scouts
+ Tweaks to what kinds of ships the AI will build to be “smarter”
+ THE END OF THE COLONY RUSH. Colony rushes were wrecking the AI economy because colonies now have a significant upfront cost. Now, the AI will take a break from colonizing in order to build up what they have so that their economies stay strong.
+ Smarter choices when building ships. AI was going broke in cases due to buying ships.
+ AI temporarily no longer leases any ships
+ AISetDestination() modified to use new SDS/AI classes.
+ SDS/AI uses new AI functionality (discussed below)
+ AIFindColonyDestination()
+ AI can only colonize planets it knows about.
+ AIFindConstructorDestination()
+ AI will try to bail out colonies that are under alien influence through its own influence starbases.
+ Various fixes so that the AI will intelligently find a new destination after its first destination changes (or is destroyed) mid-turn.
+ AI designs escort ships
+ AI now builds escorts
+ AIFindEscortDestination() will take escorts and look for transports to escort so that they have some defense.
+ Transports are now designed with more speed in mind.
+ Transports will run away from hostile ships.
+ AIFindTransportDestination() looks for planets to conquer. Totally new tactics than old system.
+ AIFindScoutDestination() looks for destination for scouts. Terran AI has to send it to stars, non-Terran AI will send it to planets since it can see planets thanks to starting with Stellar Cartography.
+ AIFIndMilitaryDestination() totally new way of deciding which ships to go after. It’s MUCH smarter.
+ AI at higher levels uses rally points, sends ships to rally points and then builds fleets there.
+AIFindMyColonyUnderAlienINnfunce() finds a colony that is under serious risk of alien influence and returns it so that it can be countered.
+ Fixed some bugs with AI accidentally looking at Local Player (the human player) instead of the player passed in.
+ Changed the way approval rating on colony is calculated so that tax rate isn’t tied to population anymore. Population causes unhappiness and tax rate does but they are not intermixed.
+ Fixed bug where population would grow until approval was at 30% but population would start shrinking at 40% so you would have weird jumping in population.
+ Changed (now that the manual is printed) how much money different government types give: 10% for Republic, 20% for Democracy, 30% for Federation. Before you just got ridiculous amounts of money.
+ BUG ALERT: There are cases where ships are not being destroyed so you end up with ships on the map that have 0 hitpoints. Same as in planets. Not sure what the cause is but it was wreaking havoc so I put in a TEMPORARY hack fix into RemoveAIShipsFromPLanet() or whatever it’s called so that if a ship has no hitpoints and the ship is not marked as destroyed that II destroy the ship. This needs to be fixed correctly.
+ Lowered cost of upgrading ships.
+ Made whether a given player can see an object part of the base game object class.
+FindClosestLocalTransport(Parameters). Depending on the parameters, will find a transport in the current sector.
+FindCLosestUndefendedEnemeyPlanet(Parameters). Looks throughout the galaxy for an undefended planet based on the parameters you give it.
+ScanSector() Tells the AI to scan around them to catalog what planets and ships they currently know about and put it together into a list.
+ Tons of tweaks to make the AI better at targeting specific ships and focusing its military might effectively.
+ AI won’t just willy nilly send its ships off to the next battle, they’ll stick around even after your defenses are gone until the transports have come and conquered. Only applicable at higher difficulty levels. Naturally with our luck all this work (which was significant) will get ignored in reviews since many reviewers play the game at beginner and don’t’ see the AI really in action.
+ Tons of tweaks and adjustments to how the AI plays out its strategies.
+ AI will sometimes report to the player that it knows what the player is up to. I.e. you mass up ships next to its planets and the report window may say “We know what you’re doing”. IF there’s time, I’d like to have it come up with a snarky “Well duh, we play strategy games too” type dialog.
+ AI detects ship massing and will silently try to prepare itself for attack. It pains me to have all this counter-reaction going in and the human player may not ever even be aware that the AI is aware of the old “I’ll stick a bunch of big ships and transports next to their planets/cities/whatever and then suddenly attack” trick.
+ Engines use less size
+ Life support uses less size
+ Initial colony maint cost lowered from 25 to 20.
+ Cleaned up starbase modules so that they follow more logically. Also, battle stations is required to get any of the other starbase defense ones (was getting annoyed wading through all the modules all the time).
There's still more to do, but not that much more. The key modules are now in.