1. Grand Tactician: The Civil War (1861-1865)
  2. News

Grand Tactician: The Civil War (1861-1865) News

DevBlog #3: Combat Systems Pt.1.

In this third dev diary of the upcoming Grand Tactician sequel, as well as the next ones, I’ll discuss the main changes made in the game’s combat systems. In short, this will bring a lot of further detail in the way battles play out, while also providing opportunities for multiple interesting historical settings in the GT-series.

[h2]Unit and Soldier Levels[/h2]

Like already mentioned in a previous dev diary entry, with the new unit system, we were able to move much of combat calculation to single soldier level. This includes both ranged engagement and melee combat.

In GT1 (The Civil War) combat system, combat resolution takes place mostly on unit level. In ranged combat, the possibility of engaging an enemy unit is checked on unit level, taking into account terrain and own units (to avoid blue-on-blue, ie, friendly fire). If this check returns positive, a volley is calculated, using a complex formula (taking into account everything from terrain, formation, cover, weapons, morale, training, experience, etc.). The volley is calculated from soldier models, each aiming at a target unit in its possible firing arc. This allows the unit to fire at multiple enemy units at the same time. A number of casualties is calculated for the target unit(s), and the visual layer shows the casualties in the nearest “coy platforms” (the unit is broken down to multiple smaller blocks, as per previous blog).

Melee in GT1 uses a very simple model - hand-to-hand combat during the Civil War was rare. In this model, the unit engaging in melee will place itself next to the target unit, slightly overlapping, to visually communicate to the player there a melee is ongoing. The actual combat resolution takes into account unit conditions and stats, and from this, casualties are inflicted on both sides. The abstraction takes into account formation, so formation A is 10% more effective in melee than formation B, which, on the other hand, may suffer further casualties from small-arms fire. Once one unit's morale falters, it will fall back or rout, while the winning unit will continue combat according to orders.

The resulting model is quite good and believable, especially if the values in the formulas are well balanced, but it still lacks detail. In ranged engagement a part of a unit will not be able to fire if the unit level check for line of sight fails, and units can only engage enemies in their front sector (except in infantry square formation, where four front sectors are calculated). Melee on the other hand is much more heavily abstracted.

[h2]Organic Combat from Soldier Level[/h2]

In the rebuilt combat model, unit level is still a factor. Calculating everything on a single soldier level would be too much in terms of performance. Things like morale, cohesion, fatigue, cover, concealment, line of sight calculation (for fog of war, i.e. are units spotted or not), movement in terrain, are tracked per unit. These values are then passed on to the single soldier level for the actual combat and casualty calculation.

So, when a soldier fires his weapon, the hit probability is modified with unit-level values. Is the soldier tired? Is he well-trained in the use of his weapon? Is he familiar with the stress of combat, fighting in close order with other guns blazing right next to his ear and enemy firing back? Is he blinded by smoke? On the soldier level, does this soldier see an enemy in his dedicated sector? Does the weapon he carries reach that far (a single unit can have different weapons, so some may fire while others may not)? Can he fire at will, or is firing controlled per rank, for example? Are there friendly soldiers in the way? When pulling the trigger, all this is taken into account, plus also external effects like weather: will the weapon misfire? When the weapon fires and a hit on target is achieved, what is the impact of the projectile? Will it penetrate possible armour, and if so, will the target become a casualty? In case of artillery, how much energy does the round still have? Will it hit another soldier?

All this makes more “organic” combat outcomes possible, as the different outcomes don’t need to be artificially adjusted.



In this pair of images, on the left we have the GT1 engagement system and on the right the rebuilt engagement system:

In GT1 the red unit is within range of the blue unit, inside the front sector fire arc. First, the line of sight check returns positive: the unit can engage. Then the actual firing is calculated from the soldier models, which allows firing at multiple units simultaneously or limiting the number of soldiers firing (due to no enemies being in the soldier’s firing arc). Casualties calculation is done on unit level, taking into account direction of fire and creating the casualties in the nearest coy platforms. This calculation is modified with flanking fire value (simulating the higher chance of hitting a soldier further back, which is not the case if engaging from the front), which increases the effectiveness of the volley. In the end, 5 casualties are inflicted, and models on the left flank of the unit change to casualty animation and then “die”. The red unit cannot return fire, as its unit-level fire arc is pointing in the wrong direction. (What is not taken into account here is that in GT1 ,the average scale in visualization is 1:25, meaning 1 soldier model stands for 25 soldiers in the unit. To increase the visual impact, we kill more models than the calculated casualties justify. After a short time, a few more models spawn and move to “fill the gaps”.)

In the new system, each soldier (model) is constantly checking whether it sees enemy soldiers within assigned engagement directions (a soldier can have multiple, for example, as 1st priority front, and 2nd priority to left). Depending on the unit’s firing system, the single soldiers have permission to fire or are part of unit-level controlled fire, where permission to fire is given per rank. The per-rank firing to priority direction can happen as a part of single or multiple ranks firing a simultaneous volley, and may include rotation of the ranks to move soldiers with reloaded weapons to the front. Each shot by a soldier at a soldier is calculated separately, and the outcome is decided. For example, two soldiers fire at the same enemy soldier; the first one misses, and the second one hits. The rightmost soldier picks a target further back. (Also marked is the possibility for the red unit to fire back, as in the new unit system, the left flank soldiers can turn and fire at different targets than the rest of the unit.)

Even if the result in both systems is the same, 5 casualties in the red unit, the result in the new system comes through an “organic” calculation, as we like to say. There is no separate bonus from firing from the flank, as the increased effect comes directly from the soldier-level engagement modelling. In case the blue unit was in open order or the red unit had a bigger number of ranks or density of soldiers, the result could change drastically. In the left model, this comes from a separate single unit level modifier (casualty modifier per formation for red, firepower modifier per formation for blue), in the new model, such modifiers are not used and the result will be more realistic through organic means.

Like written previously, GT1 is very heavy on CPU usage due to a lot of calculation ongoing at all times, especially with large armies fighting. While the detail of combat has increased tremendously in the rebuilt combat system, the new engine handles the required calculations much more efficiently than in GT1, and performance is much better in similar size battles, even with 1:1 model per soldier scale vs. the old 1:25 scale.

In the next diary, we’ll take a look at the new melee system, which is very much a different beast in its own right - and there the soldier level approach has the most advantages.

Most Respy,
Gen’l. Ilja Varha
Lead Designer - Grand Engineer Corps

DevBlog #2: New Unit System.

This is the 2nd blog in our new series, which discusses developing our updated engine that will power the next title in the Grand Tactician-series. We're keeping some details, like historical setting, vague on purpose to discuss at a later stage. But, we’ll keep releasing these peeks behind the scenes to let you know what to expect in terms of game play and improvements.

[h2]The New Unit System[/h2]
One of the first things we developed for The Civil War (during 2016-17) was what we call the Unit System. This is how units are created and handled in the battle layer, and it has a big impact on a multitude of other things: visuals, controls, performance, AI, to name a few.

Re-building the Unit System is a key part of improving the battle layer for the upcoming title. The results are very encouraging and we’re excited about the possibilities it brings to the table, both for game play and also for performance and clunkiness (or lack of, this time around) of the battles. This will of course work hand-in-hand with terrain and movement, group-system, combat system(s), AI, and so on.

[h2]The Old System[/h2]
In the old system, we built the units from what we call “company blocks”. These are sub-elements of the units, and platforms, that are moved depending on the unit’s formation and positioning. The 3D models (or as the game originally featured, sprite soldiers!) are attached to each platform.

In The Civil War (1861-1865), or GT1, each platform has 4 soldier models in 2 ranks. This is to show line formations in 2 ranks and marching columns in 4 files. Only 1 model type is supported, and all special situations are “hardcoded” (a word we use to determine something that is non-adjustable by editing the game’s preference files). Such special situations include the officer model and the artillery units’ model arrangement. The different unit formations (line, assault column, column, square) were built by determining how the company blocks are placed side by side or behind one another.

Tracking each platform allows curving and quite OK-looking column movement (“snaking”) for each unit. When resizing the unit in battle, due to changing game settings or due to casualties, the number of platforms per unit changes. In the system, the more platforms there are, the more severe the performance hit, as the company blocks are used for many combat and terrain placement calculations. The end result could be described as “clunky”, and it also limited the performance being rather CPU heavy (like the game is, in general, instead of many modern games that stress the GPU more.)

Image 1: Here you can see how the units are built in the system. The “company blocks” are highlighted in red. Each contains a set number of 3D soldier models (2x4), the officer is added as a separate block, and the 3D unit flag simply floats in the air in the coordinates where the unit is calculated to be stationed in. When giving a movement order, the positioning of each company block is calculated, as seen in the terrain (right).

With the tools we had when developing the old unit system, we had many restrictions. For example, each unit shows only one type of soldier model (except for hardcoded special situations mentioned above), and the number of soldier models in the battle is limited to a few thousand in total due to performance. This means a regiment of 1000 soldiers is normally visualized by way less than a hundred models (in the above image the unit shows some 40). This means a 1:25 scale (one 3D model = 25 real soldiers). Not very “grand”, right?

[h2]The Rebuilt System[/h2]
Just tinkering with the old unit system would have improved the situation in general by a limited degree. For that reason, we scrapped the old system completely and rebuilt the new one using the knowledge we’ve gained and also modern tools that have only become available more recently.

In the updated GT engine, units are built differently. Instead of using set coy blocks like Legos, we determine the composition of whole units, soldier by soldier. Each unit can contain many different soldier types including special ones such as officers, and drummers, each with their own 3D models and animations. The per soldier data also contains info for combat simulation. What this allows, for example, is units engaging in multiple directions depending on the combat situation and using different kinds of firing systems, such as different numbers of ranks firing simultaneous volleys or in succession.

The units now have more flexible formations for different combat situations they can assume depending on conditions around the unit, the situation of the unit itself, and the training level. As an example, a cavalry unit may use different formations for marching, battlefield movement, ranged engagement, skirmishing, and a few different for charging. Together with the more flexible firing mechanisms and ability to fight in multiple directions the battle micro-AI will have fewer difficulties in countering player’s moves on the lowest, i.e. unit, level. (The battle AI is divided into unit-level “micro-AI” that reacts to surrounding conditions and a “macro-AI” that handles moving groups of units and assigning stances.)

From a management point of view, drill is more important than before, as raw troops cannot perform the more complex maneuvers as a cohesive unit. This limits their effectiveness even more compared to GT1.

Image 2: This is a sketch of a Civil War Infantry Regiment in line. With the new unit system, a more detailed unit deployment such as this can be created, including positioning of the flags, officers, NCOs, musicians, and so on.

Sounds rather performance consuming, right? On the contrary: with the new tools and much improved coding magic, instead of showing a maximum of a few thousand soldiers in a battle (GT1 upper limit), we are talking about tens of thousands - and this with better performance than in GT1!

And much of this is moddable.

How this is technically pulled off, shall remain our secret for now, so let’s not dive deeper into details. You may read between the lines we’re quite excited about the opportunities this new unit system brings to the table. But that’s not all! In the next blog we’ll take one step deeper into what it means when we use the new system to simulate ranged and melee combat on the single soldier level - as part of the improved combat model!

Most Respy,
Gen’l. Ilja Varha
Lead Designer - Grand Engineer Corps

DevBlog #1: Unlimited Battlefields.

Gen’l,

2025 brings a new dev blog -series. In it, we discuss the first main steps in developing the game's engine further. More specifically, what new gameplay features rebuilding the battle layer will allow in the future.

The first entry is about tackling the issue of limited number of battlefields, at the same time improving the link from campaign map to battlefield topography and terrain influence on units.

Read more in the latest Dev Blog:
Unlimited Battlefields.

Very respectfully, your obedient servants,

The Grand Engineer Corps

Engineers at Work.

Gen’l,

For some time now, an eerie silence has surrounded the Grand Engineer Corps camp. The troops are wondering, what is happening inside the fog of war? What does this mean to the Grand Tacticians, present and future? Major changes have taken place in the background, with the Engineer Corps going through a reorganization. As the pieces are falling in place, it’s a good time to share some Engineering intel from behind the scenes.

Read more in the latest Dev Blog:
Engineers at Work.

Very respectfully, your obedient servants,

The Grand Engineer Corps

Patch 1.14 Released!

Patch 1.14 Out Now!


Gen’l,

A new major Patch 1.1402 is now released. During the two-week beta period we were able to further improve the patch - Thank You all, who contributed in the beta!

Patch 1.14 provides:
- rebalances to the camp feature (Whiskey & Lemons DLC), incl. W&L manual update accordingly
- sound engine updates, including new sounds in the battles
- bug fixes to issues reported by the community

See the patch notes here:
PATCH NOTES

Your Most Obedient Servants,

The Grand Engineer Corps