At the end of last month Company of Heroes 2 was released. It’s the sequel to what many consider to be the greatest real-time strategy game of all time. Since then we’ve been playing the game almost non-stop and trading e-mails with the team at Relic that designed the game’s back-end, called the Essence engine. I’ve learned a lot from talking to Relic about Company of Heroes 2, and hopefully I’ll do those conversations justice in this article.
One of the most common complaints about the game is how demanding it is. There are really two topics that I need to touch on to fully explain this issue. First off the Essence engine is an extremely complex piece of software and when it was designed the team operated under a singular mindset when it came to rendering complex scenes: no cheating. The other half of the answer to this question stems from the quality of the game’s built-in benchmark. When this benchmark was assembled the aim was to create a scene that was so difficult that it represented an absolute worst case performance scenario.
Reviewing The Original
Let’s step back for a moment from this discussion and delve into what makes the Essence engine so complex. The original Essence engine debuted with Company of Heroes back in late 2006. At the time it was a DirectX 9.0c capable engine, but thanks to the development of two expansion packs and a commitment from Relic for long-term support, the game was updated to support DirectX 10 in mid-2007. Upon the release of this update Company of Heroes was the first game on the market to support DirectX 10.
Company of Heroes had a number of novel graphical features for an RTS. It natively supported Anti-Aliasing, bloom, Havok-based physics, particle effects like fire and smoke, dynamic terrain deformation and destructible buildings. Additionally it allowed for up to eight players to battle it out on the same map in real-time. It really combined the best of RTS game-play mechanics and modern graphical techniques into one package.
Modernizing Company of Heroes
Seven years is a long time in the video game industry and a lot has happened since Company of Heroes was released. Modern graphics rendering techniques have moved far past the level of complexity and quality that the original Company of Heroes managed to achieve. With Microsoft’s DirectX 11 firmly implanted in the PC gaming ecosystem and lighting techniques like ambient occlusion freely available to developers there was clearly room for Relic to improve upon Company of Heroes’s graphics.
It’s from this background of technical ability and industry-wide progress that the engine powering Company of Heroes 2 was created. ColdTech is what Relic dubbed its new game-play mechanic that is centered around the harsh winter environment found on some of the game’s maps. Blizzards will engulf the map periodically during game-play, and infantry units will freeze to death if they can’t find a warm place to wait out the storm. The concept is a simple one, but the technical implementation of periodically rendering whiteout conditions with thousands of particles rushing across the screen is not only difficult to implement, but costly from a performance perspective.
One of the neatest things about ColdTech and Company of Heroes 2 in general is the way the game deals with unit movements. When you walk in the snow every step you take compresses the fresh powder beneath your feet. Like-wise every step that an infantry unit takes on certain terrain in Company of Heroes 2 creates a small 3D deformation. More than just imitating the real-world though, Relic has made these deformations persistent throughout the rest of the game. Thus a footprint left on the ground near a capture point early in the game, will be there from the moment its created unil the end of the game.
As a game-play mechanic this is useful feature because it allows intelligent players to track enemy movements and informs them about what units the enemy might have in the area. But from a performance perspective the idea of letting thousands of footprints, tread-marks, and tire-tracks build up on the map over the course of the game seems like an insane idea, and to a degree it is.
The real-time strategy genre is filled with games where late game performance is compromised by the massive number of units on the battlefield and Company of Heroes 2 is no exception. But the Essence engine aims to ease this pain is by gracefully handing the load that tracking so many persistent objects creates. Frame rates will continue to drop the longer a match goes on, but the game won’t crash from tracking too many objects. Make no mistake, Company of Heroes 2 requires quality PC hardware to run at playable frame rates; but once you cross a certain “good-enough” level of performance the game is very good at maintaining those playable frame rates as the difficulty of rendering the game increases.
Another important game mechanic in Company of Heroes 2 is Ice. Since the game is set in Russia during World War II it’s not uncommon to play on a map with a frozen river. The advantage of having a frozen river is that infantry and vehicles can cross over it. But of course Ice can be broken; and shooting out the ice supporting a heavy tank and then watching it plunge into the freezing water below is a rewarding way to spite your opponent in a hard-fought match.
But outside of just having the ability to destroy ice, Relic has also seen fit to make cracks appear in the ice as it becomes weakened by heavy units crossing over it or by enemy fire. These little cracks in the ice dynamically change how the light reflects off of the ice. From a performance perspective rendering semi-transparent Ice with real world reflections is a costly, but then dynamically adding cracks to the ice that effect how the ice reflects the world is an even more costly proposition.
The other big new game-play feature that Company of Heroes 2 brings to the table is its new Fog of War system, named TrueSight. Most RTSes use a simple FoW system that allows a unit to see what’s going on around it irrespective of 3D objects that might obstruct its view. In Company of Heroes 2 buildings, trees, and other objects that block a unit’s line-of-sight also stop that unit from revealing what’s behind those objects thanks to the new FoV system. According to Relic what a unit can see is calculated on an almost per unit basis for every unit on the map. This is a much more complex way of deciding what’s visible on the map than traditional methods; consequently it’s a more resource intensive way to track the fog of war.
The three biggest game-play changes from the original Company of Heroes are also pretty resource intensive due to the level of complexity they add to the game. Thus it’s really not surprising that they all contribute towards make Company of Heroes 2 a tough game for even high-end systems to max out. But more than that it’s Relic’s focus on, and commitment to, the PC platform that informed its decisions to add the kind of complexity that ColdTech and TrueSight require.
Another improvement from Company of Heroes to Company of Heroes 2 is the game’s texturing system. The original Company of Heroes used a rather clever system that rendered high quality terrain textures at the center of the screen and then used increasingly lower quality textures towards the edges of the screen. In Company of Heroes 2 the same texture quality is applied across the screen thanks to a texture system that Relic developed that’s similar in concept to, but simpler than, the MegaTexturing system used in last year’s RAGE.
Picking Their Battles
Relic had a lot of options when they were developing the engine for Company of Heroes 2 and they chose to allocate the CPU and GPU resources of the PC platform towards rendering new game-play mechanics rather than simply optimizing the game for lower-end systems like most RTSes have been doing as of late. That’s not to say the game shouldn’t be playable on low-end systems and laptops, but users should expect to make quality compromises compared to you can get on a high-end desktop.
Speaking of options, hardcore gamers might have been disappointed to hear that Company of Heroes 2 doesn’t support Crossfire or SLI. In layman’s terms Company of Heroes 2 doesn’t allow you to chain multiple graphics cards together for higher frame rates. The team at Relic talked to Nvidia and AMD about enabling multiGPU support, but ended up asking the two companies to disable support for multiple GPU rendering in Company of Heroes 2 at the driver level.
According to Relic Company of Heroes 2’s large memory footprint made the latency of transferring data between GPUs untenable. This in turn meant that an alternate frame rendering solution (like Crossfire or SLI) may not produce a higher frame rate as the GPUs would be bottle-necked by the latency of PCI-E bus. The other issue is a driver level bug where textures would go missing in the game. More or less Company of Heroes 2 is a bad candidate for meaningful multi-GPU scaling. The company didn’t close the door on adding support for multiple GPU at a later point though, so there is still hope for the extreme gamers among us.
For those of you debating building a new system optimized specifically for playing this game, Relic told us that Company of Heroes 2 is much more likely to be CPU-bound, rather than GPU-bound. Apparently the Essence engine supports the use of up to eight threads simultaneously. But all the threads being run on those cores at some point have to come back and finish executing on the first core. Thus single threaded performance is very important according to Relic.
One of the things that surprised me the most about Company of Heroes 2 is that under certain scenarios the engine actually renders new frames faster than the old Essence engine, despite doing significantly more work per frame. For example we noted higher frame rates in Company of Heroes 2 during 2v2 matches on medium-sized sunny maps than we did with the same setup in the original Company of Heroes.
Melt Your PC; With CoH2
Now that I’ve covered the engine side of the performance equation let’s look at the in-game benchmark itself. This benchmark was designed as a showcase of worst-case-scenario performance in Company of Heroes 2. To that end it’s a very effective benchmark, but its relevance to the frame rates you’ll actually get when you play the game is limited.
To demonstrate the gap between the built-in benchmark and reality will be doing some testing. Our platform is a Core i7-3770K, Radeon HD 7970 Ghz Edition based desktop system with a 1080P display. I’ll be using the highest quality settings in Company of Heroes 2’s in-game benchmark and then comparing the results inside of that benchmark to performance results from a late-game 4v4 match with the same graphics quality settings as the built-in benchmark.
As you can plainly see the performance gap varies from marginal to massive, but in all cases real-world game-play produces higher frame rates than the built-in benchmark. The team at Relic are aware of this phenomena, and mentioned in one of their e-mails to me that they were a bit hurt by community members who were judging their game based on the built-in benchmark rather than by their own game play experiences.
In any case I hope that this article has cleared up any lingering questions about Company of Heroes 2 and the performance characteristics of the game’s Essence engine. The team at Relic have worked really hard to produce this game, and they have been incredibly forward and thoughtful in their responses to my questions. Company of Heroes 2 offers the pinnacle of modern real-time strategy graphics, and we’re very pleased to add it to our testing suite.S|A
Have you signed up for our newsletter yet?
Did you know that you can access all our past subscription-only articles with a simple Student Membership for 100 USD per year? If you want in-depth analysis and exclusive exclusives, we don’t make the news, we just report it so there is no guarantee when exclusives are added to the Professional level but that’s where you’ll find the deep dive analysis.
Latest posts by Thomas Ryan (see all)
- A New Way of Thinking with AMD’s R9 Fury Nano - Aug 28, 2015
- Making a Sandwich out of Intel’s Skylake - Aug 28, 2015
- AMD Launches The A8-7670K APU - Jul 20, 2015
- AMD Launches the Radeon R9 Fury (non-X) - Jul 10, 2015
- Looking at the OpenCL Performance of AMD’s R9 Fury X - Jul 10, 2015