Some thoughts on the development of the SGS game engine.
The modelling of Naval gunfire from heavy naval artillery (from Battleships and Cruisers off the coast) in the Pacific D-Day series of games posed interesting problems. Most SGS games are at a scale where artillery support is carried in units that are present in the same region as the battle. The naval “heavies” (or long-range heavy land artillery) however have range that can reach every region on the map. Attempts to place units representing the gunfire each turn via reinforcements was getting very code intense and subject to errors and endless “bugs”. The first solution we found was the “pseudo-Air” units (called naval support, or simplier ‘Gunfire’) that appear every turn. They have “infinite range” (at the scale of the game, it makes sense) and cannot be intercepted or fired upon by AA or in battle.
Once in the battle, they fire during the artillery support phase. They have usually a good rate of fire (ROF), and will “disappear” once they have shot all their ROF (we used for this a special unit feature, called ‘suicide’ which destroys the unit after it has fired).
Then we had a set of events that recreated the gunfire units every turn, so that they could be available again in the next turn(s). This required some more work on events and to be careful about the logic. For example, we had to consider the player (or the AI) would not use the gunfire (in part or all) during a turn, so what would happen with the re-creation events? So we added also an event to ‘clear’ from the game all unused gunfire(s).
This worked rather well gameplay-wise, even if it was a bit cumbersome to handle and a bit clumsy to manipulate. In addition, the system of removal / recreation limited the use to the offensive part of the game only.
This lead us to think about a more ‘advanced’ system that we implemented for the first time in SGS Korean War. There is still work to do on it (the AI does not use it properly for instance) but it seems to prove a bit more in line with the goal.
Each firing unit (e.g. the 7th Fleet Battleship squadron or the 8th Army’s Long Toms heavy artillery) is assigned a projectile unit, that works exactly as the above gunfire units. When you select the unit individually in the stack panel, during the Air Movement phase, you see a button on the right of the panel with a shell icon. When pressed, this makes a ‘projectile’ unit pop up next to the firing unit. It represents the heavy shells that you are going to shoot at the enemy. Those projectiles can be moved to an adjacent region (range of 1 in SGS Korean War, because of region scale) where they will attack in the artillery phase of the battle they create. The good points of the new system is that those projectiles are automatically recreated by the engine (inside the firing unit) without need of an event, that you can use them whenever you want (if not used once, they can be used later, no need to handle them via events) and, best, they can also move in the defensive air phase, so be placed like other ‘air’ units with your units and then serve during potential defensive battles. And, at the start of each new air phase (offensive or defensive), all unused projectiles still on map are automatically removed and they are made available again on the firer.
This makes for a more versatile system that can prove quite useful when the SGS games move on another scale (i.e. more semi operational or even tactical).
Another work scheduled will be to also take into account the stock of projectiles, so that the firers may eventually run out of ammunition.