Gen’l,
With this log entry, we start to look into the future of Grand Tactician and what new and reworked features the next title will have when compared to The Civil War. Currently we’re rebuilding the battle layer, so we’ll focus on the changes there during this and the upcoming log entries.
The New Battle Layer.
As discussed in our earlier log entry, there are many aspects we want to change in the Grand Tactician’s battle layer. This is anything from the limited number of battlefields, rigid unit system, and visual scale of the action, to the combat system itself (especially lack of proper melee system), performance, AI… As was discussed, it’s better to do this as one big overhaul vs. trying to improve each sub-system within the main system. While doing a re-write, we can also include other ambitions, like improved moddability, support for localization, and modularity that will later make patching and further development much easier.
The first new thing to discuss has to do with the battlefields themselves. In The Civil War (1861-1865), which we will refer to as GT1 from here on, all battlefields are drawn by hand and then integrated into the campaign map using coordinates, radius, and any randomization options. The system was developed as early as 2016-17 and was among the very first things we ever created for Grand Tactician. As each map took me up to two weeks to draw and integrate into the battle layer (to create battlefield functionality for the units), this naturally meant that only a limited number of battlefields are available in GT1 – 30 historical ones and 13 non-historical ones to be exact. It took a similar time for Wasel to draw the beautiful papermaps in parallel.
How the GT1 maps were created is discussed in further detail here in an old log entry from 2019.
Image – This is how GT1’s main campaign map looks with all the historical battlefields.
This approach has its pros, but also quite heavy cons:
- - As you can see in the above image, most of North America is void of battlefields. As each battlefield is 8×8 miles in scale, the populated area is limited. We added 4 “random map” sets to fill the void. The maps within these sets (mountainous, farmlands, wetlands, plains) are called “random” as one in the set is randomly chosen when a battle is initiated.
- - Only the most important battlefields have sufficient reference material available. The topography of historical battlefields looks very different today, and proper maps (or battle descriptions also focusing on the topography and terrain features) are hard to come by. Even if drawing a map out of only rough or almost non-existent reference material, doing it by hand still takes a lot of time. When we look at different historical periods from the 17th to 19th Centuries, the amount and quality of reference material for the Civil War battlefields is probably the best, all other conflicts have it mostly much worse.
- - Most importantly from the gameplay point of view, the campaign to battlefield topography link is missing. This means the cunning maneuvers on the campaign map play no role once battle is joined. As the nearest available battle map is loaded, this could be a hundred miles away from the area where the campaign map depicts the battle taking place, with a completely different topography. The river you were following and hoping to anchor your flank to is missing, and so are the roads, hills, forests…
The 20th Battle of Manassas?
We tackled all 3 main issues by developing a map generator, which creates the battle maps from campaign map data. The data is created from multiple bitmaps that cover terrain height, infrastructure and vegetation. Location data allows adding the names on the map in correct locations.
In GT1, whenever you fight a battle in the Northern part of Virginia, you end up fighting it out in the Manassas (Bull Run) map, and always more or less around the Bull Run -line. The new system allows creating an unlimited number of battlefields that will always represent the campaign map situation accurately. The terrain is generated according to data in that exact location, including all the main terrain features you’d expect to see on the map. Now, army placement on the campaign map plays a much bigger role, introducing one important aspect more to the aspiring Grand Tacticians!
While the introduction of the terrain generator does not remove the possibility to use hand-drawn maps, it also introduces two more pros: scalability and moddability. Depending on the campaign map dataset scale (i.e. how many meters does one pixel in the bitmaps represent), and the size of the “slice” (X pixels vertically/horizontally), the battlefield scale can be easily changed. The data is read from bitmaps and text files, meaning it does not require any dedicated modding tools to create a complete dataset to generate maps.
The Terrain.
We also made some changes in the terrain itself, and the unit to terrain link, to allow more realistic unit behavior in different types of terrain. These aspects are built around terrain types (and properties) and navigation data, that also control units’ pathfinding.
In GT1 the terrain types and navigation data have a quite simple connection. The terrain types are limited to only a few (open ground, fields, forest, swamp, water), while most differences are visual only. Further granularity is added through linear objects like roads, streams, fences… Units can move on all terrain but water (if not frozen), and very steep slopes, but otherwise, there are no limits. Also, how the terrain affects units is always the same: forest slows down skirmishers and cavalry brigades just the same, and does not prevent artillery deployment like in reality.
From a pathfinding point of view, all terrain is the same, so when giving a movement order (player or AI), the units do know to prioritize roads for fast movement, but do not make a difference between an open plain or swamp. This leads to units moving through difficult terrain more often than necessary, getting tired and slowing down, which in turn breaks group (for example division) cohesion, and affects especially the AI.
In the new terrain engine, the number of different terrain types has been expanded. For example, there are forests of different tree density. They are now included in the navigation engine, so each terrain type can have its own navigation characteristics. This is further augmented with unit heaviness, which determines how different types of units are affected by terrain. For example, very light units (such as skirmishers) have no issues moving through a forest, but a large cavalry formation or artillery battery cannot enter a thicket, or try to cross a swamp. This is part of pathfinding, so giving movement orders will take this into account, units preferring easier terrain, and going around obstacles – when allowed to.
Image – Left: the old terrain system. From a pathfinding point of view open terrain, forests, fields are the same, even if the latter ones slow units down more. Right: the new terrain system. Here each terrain type (different colors) has its own pathfinding properties and characteristics for different types of units.
While at it, we also added further detail on how weather affects the terrain. Instead of raining true/false as in GT1, we now track precipitation and terrain wetness separately. The former increases the latter, and when the rain stops, the terrain will slowly start to dry up. During winter, the same is true with snowing and terrain snow coverage, which increases or melts gradually.
Like said, this is the first building block in the re-worked battle layer. In the next log entry we’ll take a look at how the unit system has changed, and what kind of effects this will have on game play, performance, AI and moddability. Until next time!
Most Respy,
Ilja, Lead Designer
The Grand Engineer Corps.