Company of Heroes 3 - Campaign Map World Design
- Cam White

- Jul 7, 2025
- 5 min read
Company of Heroes 3 is a AAA real-time strategy game set in the Mediterranean theatre of WW2, focusing on intense tactical combat in fully destructible environments. Strategic choices come to the forefront in this installment with the addition of the Italian Dynamic Campaign, allowing players to approach RTS Missions how they choose and tell their own stories.
On this project I was a Campaign Designer. I worked on many features during this game’s 5-year development, but my primary contributions revolved around world design and systems design on the Italian Campaign Map.
Campaign Overview
The Italian Campaign Map is a turn-based overworld that connects RTS missions across an open world style Mediterranean theatre. From managing air, land, and naval units to upgrading armies and securing critical towns, every strategic decision made on the map shapes the flow of the campaign and the outcome of historical battles on the road to Rome.
I like to describe the campaign map as the journey to the mission. The gameplay bookends the RTS mission content and the player’s choices lead to different outcomes.
Campaign Map Open World Design
Two of the areas I owned on the campaign map were objective content and level design. This involved planning tasks for myself, other designers, artists, and engineers.
My implementation tasks included:
Scripting the primary objectives
Blocking out the terrain, points of interest, and encounters for all of Italy
Designing systems to support these areas in collaboration with engineering and UI
Terrain Types
The campaign map level design was centered around Terrain Types. The basic idea was that roads provide the fastest movement, but leave units exposed in combat- whereas towns, forests, and mountain terrain provide slower but safer movement.
This system was introduced later in development to encourage more decision making around movement and land unit positioning. I did the paper design, guided the engineers on implementation, and collaborated with the art team on visual language.

My process for using terrain types in the world design involved a ton of historical research. I used Google Earth to examine the general terrain, then I looked to battle maps and read combat reports to understand the challenges soldiers faced in these areas. This was translated to the map design to present the player with similar decisions.
While the goal is historical accuracy, it is still a game first and foremost, so liberties were taken in many cases to blend the historical realities with spaces that create opportunities for our mechanics and add variety throughout the campaign.
Primary Objectives
The primary objectives serve as a guiding light to pull the player forward, but many objectives and missions are considered optional. The intent was to ease the player into the open sandbox gameplay by introducing a series of key decisions common throughout the campaign and gradually take the training wheels off.
The opening to the campaign map was scripted around the historical beach landings at Salerno. This section is quite scripted but provides the player with a series of clear A/B choices and branching outcomes.

The following primary objectives open up larger sections of southern Italy and highlight several key regions each with a major historical mission. It’s at this point the gameplay begins to feel like more of a sandbox. The player is presented with choices and points of interest to capture but if they want they can ignore all of that and instead push towards their own goals. The work here involved careful evaluation of the possible approaches, scripting each outcome, or in some cases limiting the outcomes where appropriate.
Points of Interest
Each point of interest on the map generally involves a major RTS mission. The intent on the campaign map was to provide scripted bookends to bolster the experience of the mission itself. Monte Cassino was one of the best examples of this.

The lead up to this mission involves turn by turn dialogue from our main characters discussing their options for capturing Monte Cassino- primarily whether to bomb the historical abbey or not. Choosing to bomb a town or not is a key theme of the campaign. One that the Italian Partisan representative, Valenti, does not approve of, but the American and British generals agree on (for once).
This Monte Cassino bombing decision is presented as a narrative choice but is executed through any of the player’s bombing abilities. Use air or naval bombardments to weaken the town and the abbey will be destroyed in the mission- making some of the objectives harder. But work with Valenti to complete reconnaissance side-objectives and the outcome for the narrative, mission, and campaign map gameplay will be different.

Dynamic Objectives
Context Locations was a system I designed for the campaign map that spawned objectives at dynamic locations based on the player’s current campaign progress.
In past demos, objectives had been hand scripted to spawn at specific locations. This worked in a contained demo but didn't fit the sandbox style gameplay planned for the full game. With context locations, side-objectives were created independently from positions on the map. When an objective is told to spawn it then selects from hundreds of potential locations and filters them based on conditions set for that particular objective.
This way designers could ensure an objective spawns along the front line, or within a certain proximity of the player, to adapt it to their playthrough. Depending on the player’s decisions throughout the campaign these objectives can spawn in entirely different locations, or not at all, but this system keeps the tailored feeling of each objective.
Result
This work on the campaign map represents a huge amount of my shipped work on this 5-year Company of Heroes 3 project. I was very involved in planning for world content design and I’m proud to say we ended up shipping more objectives than originally planned, in no small part thanks to the system efforts supported by the engineering team. Because of my broad experience in campaign, after this project shipped I was moved to a Product Owner role for live ops expansion content.



Comments