I haven’t posted any updates in a while, partly because of work commitments (the company I work for just bought someone else for $4.7 billion and will now become the world largest publicly listed gambling company – this will take some sorting out), partly because we have had several weeks of glorious weather on the island (so I am spending all my time outdoors with BBQ and Hot Tub) and partly because I am working on the AI, which involves a lot of thinking as well as programming.
In VB6, the AI is tactical-based and each squadron or ship is making decisions independently. So NPR fleets are fine at reacting to enemies and handling the mechanics of combat, but they are strategically dumb in terms of coordination and their ability to learn from experience is limited. The latter BTW is a much harder problem to solve. I have exposure to AI to some extent at work these days (in the sense that one of the teams in my department is focused on machine learning) so I understand a lot more than I did when I wrote VB6 Aurora. I hope to use some of that knowledge for the C# version and I will create strategic and operational layers for the AI to add to the tactical side.
VB6 has the concept of ‘Design Philosophy’ for NPRs, which sets such parameters as base hull size, amount of armour, proportion of engines, type of beam weapons, etc. for each NPR and generates all the individual component design for weapons, sensors, etc.. This means that all ship designs for the same NPR work on the same base principles. VB6 also has an ‘Automated Design’ process, which includes base parameters for many different types of NPR ship, such as missile cruiser, energy-armed destroyer, escort cruiser, FAC, energy-armed jump battlecruiser, freighter, swarm soldier, etc.. There are about 40-50 different automated designs. The combination of Design Philosophy and Automated Design determines all the NPR ship designs.
However, the above is still generic so every NPR is generated within the same overall potential parameters. There may be some difference in size or armour strength or overall technology, but they will still generally have missile cruisers, energy-armed destroyers, etc.. They will also generally have similar distributions of class types and there will tend to be a wide variety of types within the navy of a single NPR. This was originally intended to give players a wide range of threats to handle, within the overall AI-framework of tactical challenge, rather than strategic challenge. This many-classes approach also means that NPRs generally require a wide range of technology to support that wide range of class types, which dilutes their ability to excel in one area.
The first major change for C# is the new concept of ‘Design Themes’. This sits above the Design Philosophy, changing the way it functions by providing an overall guiding theme for how the NPRs handles its fleet methodology. For example, an NPR may decide to go for a ‘balanced’ fleet mix with large missile cruisers, mid-sized energy combatants, mid-sized AMM escorts and small energy escorts, plus scout and survey designs. This theme won’t build FACs, or carriers, or multiple sizes of the same type of ship. It will stick to a relatively small number of classes designed to work together (like a player) and will try to build ships to maintain a cohesive fleet mix. Design Themes will also determine if the NPR requires fighter or ordnance factories and will set other parameters, such as maximum number of survey or scout ships. Tied to the Design Theme is a Tech Progression Plan, so the NPR will only research technology that is applicable to its chosen theme.
There is a lot of scope for Design Themes. The Theme may be based around large carriers with small escorts (Starfire Rigellians), a Star Trek approach with large, multipurpose ships, a Raider theme with small, agile ships, Energy-only fleets using Railgun and Gauss-armed battleships, Turtle races with a lot of orbital bases, Ground-combat led fleets, etc.. This will add much more variety to NPRs and allow me to add modifications to NPR behaviours at a strategic level, based on their overall theme. While individual NPRs may not have as many different ship types, there will be much more variety at a game level.
In VB6, task groups are generally one type of ship, with a jump ship added in some cases. Escort-type squadrons will try to accompany major combatants but remain as separate task groups. C# replaces this with the concept of ‘Operational Groups’. Each group can have a number of different ships types intended to work together as a single fleet. As ships are built, they will join an operational group that requires that type. Each operational goal has a primary mission that it can handle on a tactical level, but the overall direction of these groups will be handled at strategic level. For example, several groups may be assigned a staging area before the command is given to advance against an identified target. Alternatively, they may be assigned an operational area, which the operational group AI cannot leave unless permission is given by the strategic AI. Worth noting here that there will be many AIs (ship, fleet, system, population, etc.) all working within the strategic AI.
The NPR has an Operational Group Progression, which determines what it will create with its starting build points. Larger NPRs will have more groups in the progression. NPRs now have to use shipyards in the same way as players, so shipyards will be tooled to build the most important ships. As new shipyards are constructed and expanded, they will be assigned other ships in order of importance. Each Op Group has a ‘Key Element’, which is the primary ship type and therefore the most important for shipyards.
Because higher level AIs will exist, the NPR will make decisions on a strategic level. One of those decisions will be deciding on the relative importance of different systems. Systems will be assigned as Core, Important, Neutral and Alien-Controlled. Once communication is established, the NPR will inform the player which systems it claims and which systems it believes should remain neutral (i.e. not claimed by the player). Beyond those systems, it will recognise player sovereignty claims unless it decides to start a war. However, it may also change its definition in some cases and claim a previously neutral or player controlled system. The player can accede to such a demand to avoid a war. Even if war breaks out, the NPR will have war goals and may accept peace once those goals are achieved or if it believes it cannot achieve them.
So far I have built the first design theme (which is based on missile battlegroups and no jump drives), the tech progression for that theme and the operational group progression. The tech progression is based on ‘Tech Groups’, with each group being series of techs linked to a common theme. So the Lasers tech group includes focal size, wavelength and capacitor recharge rate. The NPR uses its starting tech points to go through the tech progression in order. There can be multiple instances of the same tech group at different points of the progression. Each time the same tech group appears, the NPR will research the next generation techs. Once the game starts, the NPR will continue with the progression. The progression will only include techs that are required for the operational groups in the design theme.
Operational groups for this first design theme include Orbital Defence, Missile Battle Group, Jump Point Defence, Construction Ship Group, Gravitational Survey, Destroyer Squadron, etc.. Each group includes one or more classes to provide a balanced fleet.
For example, the Missile Battle Group has five missile-armed BCs, three missile CLE, three beam DE, two beam CAs, a FAC-Hunter DD and a Fighter-Hunter DD. I’ll probably add a fleet scout when I create the necessary design template. This force will operate as a fleet, which will correct many of the coordination problems inherent to NPRs in VB6. The Destroyer Squadron (Missile DD, FAC-Hunter DD, Fighter-Hunter DD) will act as a patrol force, while the Jump Point Defence group (3 Beam CA, 1 Missile CLE, 2 Beam DE) will be deployed to protect jump points. The Construction Ship Group has a JGCS, CLE and 2x DE. This concept of dedicated escorts within a wider group function should make NPRs more effective.
I have been running a series of NPR creations and checking the designs and naval organization. Based on those results I am tweaking the design templates and design theme / philosophy modifiers to ensure a sensible outcome. Once I am happy, I will generate some more design themes.
I have also been working on the population and empire management AIs. Population AIs handle decisions on producing fuel or ordnance, building installations and constructing ships. Ordnance is produced based on what is required vs existing stocks and production. Installations such as factories, mines, research facilities academies, etc. are built based on the status and size of the population. Shipyard construction and expansion, plus the construction of new ships, is based on the requirements of the operational groups. NPR Populations will also convert conventional factories. Everything in this paragraph is coded.
At the Empire level, each population is given a score for terraforming potential and mining potential. Terraformers are dispatched to those colonies which can be terraformed the fastest, while civilian contracts for importing mines are set for the best mining sites (all that is coded). Decisions on the placement of tracking stations and logistical installations will also be handled at the Empire level. NPRs will be using fuel in C# Aurora (and perhaps maintenance too – haven’t decided yet) so facilities for loading fuel and ordnance will be needed. They will also transport minerals to where they are needed, so you will be able to intercept and capture mineral and installation shipments (this needs to be coded).
The next major part is the movement and combat AI, plus the operational AI (for deciding where to deploy the operational groups). After that I will tackle the diplomatic AI. Making progress but still some way to go.