The Concept
For each map, the very first step was to design a 2D Concept about what we wanted to see and play in the map. The maps could have a range from 1024×1024 to 2048×2048 pixels, where 1 pixel was 1 meter.
Design a large map meant to add less assets in the scene in order to allow the engine run properly. In this way, desert-like maps were the most appropriated for large sizes and towns or cities suit better in smaller scenes, so, we could add a large amount of details.

From 2D to 3D
Then, we created an orography according to our design. To do it, we imported greyscale heightmaps to the in-house engine in which we worked. It allowed us to make easily a terrain because of the different grey tones indicated the different heights. We got a substancial memory savings by using this method.
Adding terrain details to the map
After creating the terrain, we added roads using bezier curves in the map editor. We were able to select different road materials, like asphalt or soil among others, based on the terrain of our map, as well as crossroads and forks.
Then, we added no-interactive objects to our map. We had two categories: vegetation (trees, bushes and grass) and props (houses, benches, fences…). When we worked on it, we had to keep in mind that large objects could block the path for the AI and a huge amount of small objects, like forest, could slow down units.
Realism vs Gameplay
What I learned by working in this project was that realistic environments not always fit with the expected gameplay. For example, streets in small towns should be wide enough in order to avoid issues with the AI of units and troops, and allow them to walk around the town. Same problem had to be taken into account when building maps for the cities.
Other problem I had to face here was the impossibility to differentiate one city to another, because the lack of different models of building. Finally, a solution we proposed, was to add an iconic and representative building, monument or place in a non-playable area.