/tg/ loves it some Dawn of War. This goes without saying. Unfortunately as has been widely documented, Dawn of War is fraught with problems; the way the game plays is hideously unbalanced, the factions don't play anything like they should (Eldar being both swarmy and utilitarian, for example), and as such, this has left a lot of players out in the cold, asking obvious questions: Is there a way to fix this? Is there anything that makes this game better than it already is?
The answer to both is yes, and the answer comes in the form of Mods.
Mods in DOW range from conversion and add-on packs to add units, to mods to re-work the game to play more like vanilla Dawn of War. They can completely revamp how the game handles, or simply re-balance gameplay to more-clearly approach something resembling actual balance.
Warhammer 40,000: Dawn of War II – Retribution is a stand-alone expansion of Warhammer 40,000: Dawn of War II real-time strategy game developed by Relic Entertainment. Command any of the six unique factions in the next stand alone expansion of the critically acclaimed Dawn of War real-time strategy franchise. Dawn of war 2 Retribution Mods Hey im looking for a good mod for the game and i cant find any i see alot of Elite mod but not much else and i dont like the look of it much either. Showing 1 - 1 of 1 comments. Is there any MOD that make DoW 2 ( and DLC's ) graphics little BETTER?? Game is great and i played every 40k game on PC and DoW 2 + DLC's is still THE BEST GAME in 40k universe but graphics are dekade old:/ - any advice?
What Modding Can And Cannot Do[edit]
Modding in DOW can do a lot of awesome things. It can re-add slashed content (such as the Flamers for the Imperial Guardsmen, or optional weapon upgrades for the Imperial Guard Sentinel), it can make better use of existing resources (making weapon and tech-tree upgrades that make sense, for example), or it can mod how some units operate to make them closer to their codex equivalents. Alternately, they can change weapon and damage algorithms to make the game more balanced, ratchet back overpowered units, or add whole-new-units or factions! All of which, it needs be said, is Awesome.
On the downside, there's an extent to which Modding can do. A lot of DOW's more infamous issues are hard-coded into the SDK and cannot be fixed without extensive modification to the interface; for example, until it was patched, there was no way for modders to fix the targetting bug possessed by Tau Broadside Teams and Imperial Guard Heavy Weapons Teams. Sometimes, modders can make clever work-arounds to bypass existing issues, but this is not always a hard-and-fast rule. Idiotic nonsense like how DOW handles terrain (and letting units shoot right through it, for example) can't really be fixed with any level of modding, no matter how advanced. Except the Titanium Wars mod does do exactly that, fixing the terrain bullshit LOS to true LOS.
Dawn of War Modding[edit]
Dawn of War is arguably one of the least mod-friendly games that actually allows mods. There's a number of reasons behind this, but the general gist is that the developers did not go out of their way to embrace the modding community (despite constantly touting supporting it), and never released things like the engine coding or SDKs to the public. This, paired with the fact that no mod auto-updates in Dawn of War, did a lot to make all the various mods available in the Dawn of War series fight with one another for community spotlight and run-time, with each mod having a small but bustling community attached to it. Because there's an enormous population of fa/tg/uys and ca/tg/irls who still play Dawn of War, there's a sort of disconnect and general stigma against the modding community, when they've arguably handled a lot of issues better than the original developers.
But that's neither here nor there. You want to know about Mods, and that's why you're viewing this page.
Favored Dawn of War mods of /tg/
The Following are some of /tg/'s favorite mods for Dawn of War. This is by no means a comprehensive list, and needs to be updated by the community so they can add their own entries. It's highly encouraged that you check them out; they range from the epic to the lulzy. Almost every mod has its drawbacks, as well; Firestorm Over Kronus, for example, tends to use a lot more resources than regular Dark Crusade, whilst Dawn of War Pro's slower gameplay and more literal scaling tends to put a lot of players off - but that's part of what makes them enjoyable. Try them out and see which one(s) you like. People worked hard on these goddamned things, and it shows.
Anyway, here's the list that would probably enhance your life by many notches:
- First and foremost, the Camera Mod. Technology marches on, and the zoom level on a big screen (or anything in 1080p) looks like you've squished your face into the tabletop. Most big overhauls include this, but if you're using nothing else, use this one. Especially if you're new to the game, to save you a lot of panning. (Dark Crusade edition here)
- Firestorm over Kronus/Firestorm over Kaurava/Purgation of Kaurava - An epic mod, Firestorm Over Kronus ramps everything up about the game and then some. Sick of fighting with the limited battlegroups Dawn of War enforces? Want to fight with entire goddamned armies that remain faithful to the Force Organization Chart? Pissed that Chaos lost most of its weapon upgrades in WA? FoK does all of that, and even adds the Black Templars as a playable faction! One of several mods that /tg/'s Dawn of War veterans will heartily recommend. Available for Dark Crusade and Soulstorm.
- DoWpro - Dawn of War Pro is a mod that first arrived in Winter Assault, as a direct result of said expansion completely changing the overall gameplay of Dawn of War too much for many players' liking. Originally intended as a 'closer to Vanilla' mod that made the new expansion play like the previous Dawn of War game, it gradually expanded into its own beast, adding cut content and new materials to flesh out the concept further. It's notable both for inspiring several gameplay changes that were added in both Dark Crusade and Soulstorm. If you're a fan of the slower pace of Vanilla and the added options it had, then this mod might be just what you're looking for.
- Ultimate Apocalypse Mod - Another very prominent mod which introduces Titan and epic-sized units, expanding with more Advanced Buildings and a shit ton of new units for every race and making everything fucking epic. Massive battles with hundreds of units smashing into each other, very CPU intensive, but only when it wants to work. Soulstorm exclusive. The music is sort of buggy for the main mode, with only a few bits of the soundtrack playing. This will lead you to quickly turn off the music, load up youtube and play some other songs when you get tired of generic epic music. It also adds character leveling and campaign wargear. Also adds the ability to build walls and superweapons, the later in the form of nuclear strikes (IG, SM and SoB, along with a death Ray and EMP), various warp or psychic powers (Chaos and Eldar), WAAAAGH, raping your enemies souls (Dark Eldar), FUCK HUEG particle cannons (Tau), tons of RAPE in pyramid shape (Necrons) and biological bombardments (Tyranid). It also allows you to deepstrike Baneblades by manually putting spawned baneblades into mars-pattern commands, but it requires a minute or so before it's ready to be deepstriked. Includes Daemons and Daemonhunters to the mod and gave the Dark Eldar a titan.
- Unfortunately it seems that as of late that Lord Cylarne, lead dev of the mod, had the ego go to his head and literally alienated his own team to the point of quitting. This has led to a general decline of quality in the releases themselves as well as lengthy wait periods. It seems the future of UA is uncertain and not in a good shape.
- Titanium Wars Mod (Also available for Dark Crusade and even backports Sisters and Dark Eldar) -(Unless you're Russian, you will have quite a hard time looking for a place to download the mod) The godfather of Titan-like mods which adds a good repertory of Titans for every race at the same time it keeps it fluffy and crunchy. Also the only mod fully compatible with the campaign. But it doesn't end there, no. First it merges soulstorm with daemonhunters mod, witch hunters mod and tyranid mod (which the later mods developers did not like so much, read: flamewars and bans over moddb), and adds a good bunch of new units to every faction apart from titans. Furthermore, the mod makes all races more or less balanced (by giving all of them a couple of so overpowered units that can blow each others base along with your computer in a HUEG fucking fireball), although removes air units. In its last version the Administratum was (oddly) added as a faction, based around throwing loads of PDF soldiers and old vehicles while begging for help from other factions through a radio beacon (you can ally with Chaos, smurfs, tau, Inquisition or IG).
- An Alternative download link if you don't feel like reading Russian is available. Though this isn't password protected, it is being maintained by a third party. If you want something by the actual dev, you'll be forced to go through Yandex, with their miserable download speeds.
- Codex Mod - Another cool mod for those who felt disappointed by Firestorm over Kronus mod. while the mod does add new armies there a bit lackluster with lacking tool tips for most of them and some army's like the grey knights feeling too similar to regular marines. Also alters existing army's to keep them related to their respective codex and army sheets. What makes the Codex mod so highly recommended is that the mod can be easily edited to allow different race mods to work in the same game including superior versions of the Chaos Demons, Choas Renegades, and Daemon hunters. Use this mod as a hub for other mods to get multiple races working together along with updated versions of the base factions. mods marked with a '*' are compatible with Codex.
- Battlefleet Gothic Mod - Considering how many terrible mistakes Games Workshop made by shutting down Specialist Games, a group of modders decided to undertake the very heavy task of turning DoW into a computer game version of Battlefleet Gothic. Considering that a big-name game studio's doing something similar as of late, one can only wonder just how this might have compared to that game...
- Witch Hunters* - Before the Sisters of Battle were added in Soulstorm, a modding community got together to add them to Dark Crusade, and good god, were they successful. Notable for having models far more delicious than the SoB models Relic/Iron Lore put out for Soulstorm (seriously, the canoness seraphim induces HUGE thoughts of heresy). The Witch Hunters Mod was once abandoned since the team behind it disbanded, leaving only a beta, but it was a fan favorite and was eventually updated for Soul Storm and given a full release. The new Witch Hunters faction has you start as the Adeptus Arbites, then gives you the ability to call in reinforcements from both the Sisters and the Inquisition as you tech up, eventually giving you the choice between two mutually exclusive tech buildings, each unlocking different units, abilities, and upgrades.
- Inquisition Daemonhunt* - A magnificent race mod which adds the Ordo Malleus Daemonhunters, one of the Inquisition branches as a playable army (Pre-Matt Ward dickery), totally recommendable if you like them. If your having trouble finding a working download look in the comments on the front page of the Moddb page for a location.
- Armageddon Steel Legion Mod* - Oh, fuck yes. Tired of just having the original Imperial Guard to fight with? The ASL Mod adds the manliest of Ork-killers, the Armageddon Steel Legion, who play significantly differently than the other Imperial Guard force. With tons of units to play with and better scaling than the original, the Armageddon Steel Legion Mod's biggest drawback is how bad it (arguably) makes the actual Imperial Guard in Dawn of War look by comparison. Whereas the Vanilla Imperial guard is based mostly on the 3rd ed codex, this one is largely based on the 5th ed one with some IA options and the removal of things like Ogryns and Fliers. The A.I here, like the Tyranid mod, is fiendishly difficult and loves to drown it's foes in bodies whether on the defence or on the attack. Better pray you brought lots and lots and lots of anti-vehicle options because whether it's in mechanized or armoured flavour the Steel Legion is going to have all the vehicles. No air units though, so thankfully you won't have Vendettas hounding your ass.
- Tyranid Mod* - The title says it all. The Tyranid Mod adds the Tyranids to Dawn of War! Naturally, this includes new units for this race as well as an unique gameplay dedicated to swarms and controlling your units through synapse. Be warned, the Tyranids are a fiendishly hard A.I opponent and will drown you in corpses. You're going to need a lot of flamers to stem the tide of bodies. And they don't need power, like at all, though they do have an alternative resource that works like Faith for the Sisters of Battle in the most recent versions. And did you bring anti-vehicle weapons? Well they'll all be useless. Not a single Tyranid has vehicle armour of any kind! Although many have Daemon armour.
- Daemons mod* - Exactly what the title says; Daemons Mod adds motherfucking Daemons as a playable faction, complete with their own unique units and abilities. Also of note is the ability to summon fucking ANGRON to the field.
- Black Templars* - Angry about 6E canning the Black Templars as an individual army? This mod, which is made by the FoK boys, is just for you. Giving the Templars things like Vows for the Emperor's Champion, a Castellan in fucking TERMINATOR ARMOR and the Land Raider Achilles, this is definitely a mod to play!
- Dark Angels* - Probably the mod that finally got the Dark Angels' organization down, this mod gives them three different and balanced ways to play: Deathwing, which gives all your commanders Termie Armor (and Belial), Ravenwing, which gives everyone bikes and Sammael, and the regular mode, which gives you Azrael, the other major guys, and the ability to use either of the other two forces as you may.The finalized version has been released including Lord Cypher,a reworked Deathwing(this means plasma termies are in) and many more!
- Dark Prophecy/Black Crusade: A MASSIVE mod that adds shittons of new stuff for the Imperial and Chaos factions. Space Marines can now emulate certain famous chapters and Chaos can also emulate certain traitor legions and warbands (including
the FallenTRAITORS THAT HAVE NO RELATION TO THE DARK ANGELS WHATSOEVER). The Sisters are overhauled too, now being the Inquisition with access to all three branches that can summon Sisters, Grey Knights, and Deathwatch depending on which Ordo you select. It also adds in backported DoW2 Tyranids. Current progress is...uncertain at best, as the mod is being done by one no-doubt overworked fellow who is building absolute fucktons of models for extra-specialness. - RAGE: World Eaters Warband*: Adds in the World Eaters and their armies of Khorne Berzerkers to DoW1. Noted for being very dedicated to Khorne with tons of melee combat and an economy that focuses more on how much you kill rather than how many listening posts/generators you spam. Yeah, Khorne be happy with this. Notable for the little details thrown in such as how most of the units even come in squads of 8, just like Khorne wanted.As of lately,a new version is in the works,which apparently will include a Khorne Banelord Titan and a Infernal Sicaran Battle Tank.
Soulstorm Bugfix Mod: The unmodded Soulstorm is riddled with bizarre bugs, problems, inconsistencies and typos. The bugfix mod fixes pretty much everything a mod possibly can without messing up game balance and incorporates the Dawn of Skirmish AI mod to make the computer not play like a total retard. Very strongly recommended for any LAN games or single player games of Soulstorm. The Bugfix mod also offers some additional mini fix addons, such as fixing the AI Necron Lord, who otherwise refuses to use either the Nightbringer or Deceiver forms, and for repairing some long-standing broken armour piercing values on some weapons and abilities, whose brokeness suggests that Relic forgot how their own engine worked/Iron Lore had no goddamn clue what they were doing.Superseded by the Unification Mod below.- Unification Mod: Allows you to play a number of different mod races in a single game with minimal effort. This is the best race combiner mod out there. Whereas most race combiner mods ([like this one or Codex above) can cause problems with getting the various component mods to play nicely, Unification was carefully designed to give the best, crash-free experience possible. Best of all, it's still being updated to this day. Update: A new version is currently in the works. The lead dev of the mod (Gambit_1) has ensured that it will be the most refined and compact version to date, it will also be much easier to combine race mods and to install.
- Renegade Guard*: based on the the Renegades and Heretics army from Imperial armor V-VII. Bit of a mixed bag this mod. On the one hand the infantry models all look excellent and they use autoguns not lasguns to help make them more unique, the buildings all are versions of the imperial guard with chaos decorations but they're traitor guard so it fits the theme. But
all the sound files are from the regular Guard force meaning your chaos madmen are still praising the emperor, andthe mod uses regular Leman Russ not Malcadors, but that's a nit pick. Over all we give it eight strangled kittens out of ten and a recommend. Update: The mod has been updated with thematically appropriate voice-acting and new units, including Beastmen and a fuckawesome Decimator Daemon Engine. Give it a try. - Salamanders*: As you can expect the Salamanders play a lot like regular space marines except they're slower, have more health and have better melee thanks to a 'non codex' squad of thunder hammers. overall not bad but don't feel like you need to run out and get it now. A finalized remake version dubbed 'Reforged' has been released and includes lots of new content as well as reworked units and abilities, most notably primaris marines. Special characters are also featured, such as the friendly giant himself and Tu'shan.
- Harlequins*: Lets you field the Harlequins as there own factions. Notable for going to old lore let you field Mimes, and all of the harlequin leaders like Death jesters, Shadowseer and their own jet bikes. Only time will tell if this will get a 7E facelift...
- Thousand Sons*: This mod was in production for literally almost a decade, and NOW it is finally out! Copious amounts of mind-bullets, daemon summoning, and walking dustbins are to be expected, and Ahzek Ahriman himself can be summoned, able to fire a metric fuckton of spells.
- Adeptus Mechanicus Explorators: A rather homebrew-centric army, this takes some mobile servitors and armed tech-priests protecting a giant tank that acts as their HQ similar to the Necrons. There is a second AdMech mod out there that attempted to be more FW-friendly, but there's not as much progress there, while this one has a beta out.
- Strongholds Mod: See all those awesome faction mods in the list above? This mod lets you use them in the single player campaign missions for Dark Crusade and Soulstorm. Havefun storming Victory Bay as a RAGE-filled horde of Khorne Berzerkers, or whatever weird combination you feel like trying out.
- Emperor's Children: A mod which adds the Emperor's Children as a playable faction. Contains a bunch of new custom models and unique lore-friendly additions such as sonic predators and noise terminators. Special characters from the lore are included, most notably Miriael Sabathiel who finally gets the attention she deserves. You can choose either Emperor's Children branch (which allows you to unlock full heretical might of Third Legion, including Lucius the Eternal and Fulgrim), or Miriael's branch of Fallen Sisterhood, which even allows her briefly to daemonhost Slaanesh! Update: A new version is currently in the works, it will add lot's of new content along with a bunch of other improvements (as if the mod isn't packed full with toys for us to play with already) which includes, but is not limited to: Knights of House Devine (Slaaneshi-dedicated house that is actually canon), Fabius Bile (which may or may not have his own branch), an actual chaos land speeder, chaos thunderhawk and Daemon Primarch Fulgrim in his true serpent-like form.
- Imperial Fists: For those of you who believe the best offense is a good defence.
The Eranthis ProjectRedux Mod: A WIP HD overhaul for Dawn of War, upgrading both sounds and textures (and more recently, making some significant gameplay alterations) Makes the game look and sound better whilst also trying to improve certain mechanics. The mod is currently in open-beta.
Dawn of War II Modding[edit]
Oh hell yes. There's plenty of mods here, too, but, like the case for Dawn of War, they haven't been widely supported. They include things like mod packs that add the dreaded weeaboo space communists or stupid sexy evil space elves.
Dawn of War II mods:
- Elite Mod - A must-have for all of those who felt a big let down with Dawn of War 2 Retribution and how it was left for death without fixing many of it´s problems. Re-balances many things and also adds some new units; plus you have the possibility to play as the Grey Knights.
- Codex Edition - Don't confuse it with Codex Mod from DoW1 as they are quite different. Codex Edition adds many more new units and adds realistic damage. Worth to take a look.
- Space Hulk mod - HOLY SHIT ITS SPACE HULK FOR DAWN OF WAR 2, COMPLETE WITH ANGRY MARINES!!
- Warp storm over Aurelia - Adds fluffy crunchy codex stuff but doesn't change gameplay much otherwise. Definitely worth checking out.
- Destroyer 40k - Adds some really pretty Grey Knights and lots of new upgrades for Marines and Chaos.
- Stratagems - Features specialized Victory Points and other capturable assets on a 6 Player team battle map for DOW2 Retribution Multiplayer and Skirmish.
- Vengeance of the Blood Ravens - a mod that aims to make DoW II lore-accurate; that is, a handful of Space Marines face off against hundreds of Orks/Tyranids (which is balanced by unit costs and such). Worth a try for a bit of a different experience. Update: The latest version has added several new baneblade variants (including Banesword, Stormblade, Shadowsword and Stormsword) all of which function properly, though the plasma blastgun of the stormblade is a bit underwhelming, but that's a minor problem. The creator of the mod (DeusImperator) is also planning to add the 3 iconic SM superheavies in a later version: The almighty Fellblade, Glaive and Falchion.
- Forgotten Emerald - A mod for the Last Stand which aims to completely overhaul all heroes, diversify their builds and rebalance some waves. Want an autocannon Dreadnought summon? Now you can. Want to play a Marked Champion of any god? FE's got you covered. Wanna be a badass and use Termie armor? It's in active development. The mod's in an open beta currently, and so far only the Captain, the General, the Sorcerer (renamed Chaos Champion) and the Farseer have received overhauls, along with waves 1-10 of the Colosseum. Other heroes have received minor balance changes, and Anvil is pretty much the same, except for Catachans, who can summon Terminators.
Dawn of War III Modding[edit]
Warhammer Retribution Mods
The game may have been cancelled, but there's still some cool stuff here. Unlike the previous two titles, this game has Steam Workshop support, so you can easily find, install, and uninstall mods on the game's workshop page. If you want to make some mods of your own, Relic put together a modding wiki to guide you through the process, which you can find here.
Dawn of War III Mods
- The Exodus Mod - Probably the best mod on the workshop, and highly recommended for anyone looking to play Dawn of War III (especially multiplayer). Exodus is designed by one of the top online players in order to rebalance the base game and resolve many of the community complaints. The changes are too numerous to mention here, but primarily the mod:
- Increases unit health to offset Dawn of War III's terrible attrition problems
- The AI has been improved to make it more challenging
- Elite unit abilities have been toned down so a single Wraithknight can't O.K.O. an entire army
- Power Core mode has been re-balanced to make it a slower-paced and more tactical experience, rather than the mad-dog rush it usually is.
Seriously, if you were turned off by Dawn of War III before, give this mod a try. It may not fix Gabe's fancy acrobatics, but it makes the rest of the game a more strategic, enjoyable experience.
- DEATHWATCH - While the Exodus mod is mostly focused on re-balancing Dawn of War III, DEATHWATCH is focused on making it bigger. The successor to the excellent Rework mod, DEATHWATCH (despite the name), includes major changes to all three factions, adding new units and new gameplay mechanics. All non-character Elites are now trainable units with their own squad caps (so you can have four squads of Terminators running around), makes units more resilient to compensate for DoW3's horrible attrition. It also features 11 new units, including Fire Dragons, Sternguard Veterans, and Flash Gitz. Check it out on the workshop to see the full list of changes. The mod creator has discontinued work on the mod, but it still works fine.
- Codex 8: Dark Eldar - The first race mod for Dawn of War III, this mod adds Dark Eldar to the game.
- Codex 8: Chaos - Adds Chaos Space Marines to the game.
- Codex 8: Factions - Adds Dark Eldar, Chaos Space Marines, and Imperial Guard factions to the game.
- Classic Dawn of War Maps - A collection of all the maps and modes people have ported over from the original Dawn of War and Dawn of War II.
- The Last Stand - Adds The Last Stand from Dawn of War II.
- The Angry Marines Mod - FUCKING HERETICS!
Try all of them out. You'll be glad you did. I guarantee it.
by Relic Entertainment and Intel Corporation
Download Article
Download Warhammer* 40,000*: Dawn of War II*: Retribution* Performance case study [PDF 1.8MB]
Abstract
During the development of Warhammer* 40,000*: Dawn of War* II: Retribution*, engineers from Relic Entertainment and Intel Corporation analyzed the game for performance on mainstream PCs. We used a PC with a 2nd generation Intel® Core™ processor with Intel® HD Graphics 3000. At the time, Retribution was GPU-bound on that system. This case study describes the steps we took to find and speed up the most time-consuming areas of the game. Looking at the GPU workload, the pixel shaders for the terrain took more time than any other parts of the frame, so we experimented to find the best ways to speed up the terrain. We tried several techniques: clamping the maximum MIP level, removing ‘texkill’, eliminating overdraw of the pixels under the game’s HUD, and reducing texture sampling. After studying the terrain shaders in detail, they were improved by adding a threshold test to avoid certain texture loads. After this change, Retribution now runs 1.4x faster at the target resolution and quality settings on the test machine.
Overview
As they were developing Retribution, Relic engineers wanted the game to run great on Intel graphics hardware. Older generations of this hardware have not been up to the task, but the latest generation can run games like Retribution quite well. Relic and Intel engineers studied the game’s performance and worked together to optimize the game. After optimization, Retribution looks and plays great on Intel graphics hardware, and we hope you enjoy playing it!
This case study will help you better understand how to find and eliminate similar issues in your games. For general guidance on tuning games on Intel graphics parts, see the http://software.intel.com/en-us/articles/intel-graphics-developers-guides. In this case study, we used the Intel® Graphics Performance Analyzers (Intel® GPA) to measure and analyze Retribution in order to set the stage for tuning the game. Intel GPA also let us try many graphical experiments in real time before making any changes to the game code. If you’re not familiar with GPA, you’ll get a sense of it in this case study, or you can get more info from the Intel GPA site.
During development, the most expensive part of each frame, by far, was rendering the terrain. In that part of the frame, time was mostly being spent in pixel shaders, which were sampling and blending a large amount of textures. The pixel shaders were changed to be more selective, so that they only load/blend textures above a certain threshold. After implementing that change in the pixel shaders, the game runs much better and looks great.
We tried several other experiments to speed up the game, but the resulting improvements were small in comparison with this one change.
Picking a representative scene
Before optimizing, we needed to know where to look (any time you optimize, you need a well-defined “workload” to measure ). To get a quick sense of the game’s performance under various conditions, we brought up different scenes from the campaigns and did a few simple experiments while watching the frame rate. For this, a simple frame rate monitor like Fraps works great, or you can use the Intel® GPA System Analyzer Heads-up Display (HUD) to watch the frame rate (this HUD is added to your game when you profile in real time). The idea here, before doing any analysis, is to get a quick sense of where your game shows average and worst-case performance, so you can study those cases.
For games that have single-player campaigns and multiplayer modes, campaigns are generally easier to benchmark. The Retribution campaigns have similar performance with multiplayer, so we started with the campaigns for simplicity. If the two were very different, we would have analyzed both.
We tried a variety of resolutions, but the most interesting results were at 1280x800. This was the resolution range where some of the quality settings ran fine and others ran too slow, so it gave us a great starting point to understand performance while the game was in development. Figure 1, Figure 2, and Figure 3 show the performance at 1280x800 resolution, at the predefined “Low”, “Medium”, and “High” quality settings (see the game’s graphics options). While the game does let you zoom the camera in and out from the default camera height, all tests were done at the default zoom level.
Figure 1: Prologue
Figure 2: Ork Campaign – Typhon Primaris
Figure 3: Space Marine Campaign – Calderis
Of those scenes, the Ork scene (Figure 2) had the lowest frame rates.
Retribution also includes a built-in Performance Test that shows a representative battle. It’s a great way to simulate a multiplayer game workload in a repeatable way. If you’re developing a multiplayer game, you should consider adding a built-in performance test like this; it’s great to give your customers a quick way to see the performance of their configuration settings. It’s also a very handy way to benchmark. (To find the Performance Test in Retribution, look in Graphics Options.)
Figure 4 shows the results of running the Performance Test at “Low”, “Medium”, and “High” quality settings. Here we didn’t need to use Fraps to collect the data. The game reports average, min, and max results with the average shown here.
Figure 4: Performance Test
Even though we were just picking a workload for benchmarking, this was a good time to start thinking about what we saw. These tests suggested a number of possible contributors to frame rate, but the number of characters had no large effect on the frame rate. Later experiments would help us narrow it down. At this point, our working theory was that the terrain was affecting the frame rate more than other elements of the scene were. There are other tools in the HUD to help with a rough assessment of this. See the discussion of wireframe below.
Looking across all of the campaign scenes and the Performance Test, we saw good performance at Low quality settings. Although the game was playable at 15 FPS, both Medium and High quality left some room for improvement. We decided to focus our attention on Medium quality first. The Performance Test and the Ork scene had about the same average frame rate, which was slower than the other two cases. Of the two, it was easy to capture nearly-identical frames each time we brought up the Ork campaign. This let us easily make changes and consistently test them. We expected that performance improvements we made for the Ork scene would improve the Performance Test as well (and we confirmed that later).
So, the rest of this analysis was done using the Ork scene shown above, at 1280x800 resolution and Medium quality, unless noted.
Major bottleneck: On the CPU or GPU?
With a workload to study, it was time to locate the major bottleneck. If the game was mostly GPU bound, we could speed up the game by making graphical changes.
Intel GPA can install a HUD that runs on top of your game. Figure 5 shows it running on Retribution. This HUD shows real-time performance metrics and lets you take different kinds of captures of your game as it runs. The HUD also includes some simple tests so you can check in real time if your game has a GPU bottleneck. These tests (known as overrides) let you change aspects of how the graphics pipeline works or change in real time how the game presents content to the driver and hardware, so you can measure the impact of those changes. Since you see and measure the changes from each override in real time, you can get a very quick sense of how the game is spending its time.
Figure 5: GPA HUD on top of the Ork scene, showing real-time metrics
The simplest override is the Disable Draw Calls override. With this override, all draw calls into the graphics driver are short-circuited, so they return immediately without doing anything. Since draw calls are discarded, the game display goes black while the override is in use. This does not disturb the rest of the rendering, so the game continues to run although we can’t see anything. The relative change in frame rate shows whether the draw calls are consuming a small or large amount of the frame time.
We also have the Null Hardware override. When Null Hardware is used, the driver processes all calls as usual, but simply discards all calls and data as they would normally be provided to the hardware. The Null Hardware override thus includes all the overhead of the driver; the Disable Draw Calls override does not include any driver overhead for draw calls. The Null Hardware override lasts for a few seconds before reverting (you can configure its duration in Properties).
By comparing the performance using these overrides with the original frame rate, you can see how much of each frame was spent in the hardware, in the graphics driver, and in game code plus DirectX* and the operating system.
The HUD also supplies a number of other overrides. Table 1 shows the ones we tried, along with their results for this scene.
Table 1: Overrides and their performance
When we compared the original frame rate to Disable Draw Calls, we saw a large performance jump. This told us that the draw calls (in both the driver and the hardware) were taking a large portion of the frame time. With this override, the frame rate went from 16 FPS to 105 FPS, a 6.6x speedup! This override shows how your game would run if the graphics driver and hardware were infinitely fast. Without any graphics driver or hardware time, this game ran at 105 FPS. Clearly, this game was bound somewhere in the GPU hardware and/or driver.
Looking at the other results, we saw Null Hardware run at 52 FPS, about a 3.3x speedup. This is about half of the Disable Draw call frame rate, so clearly a large amount of each frame is spent in the graphics driver, but an even larger part of the frame is spent in the hardware.
To better understand how the hardware was getting used in real time, we tried a few other overrides. But what do they show? The 2x2 Textures override shows how the game runs with simple textures (reducing texture load times and texture processing in pixel shaders). The 1x1 Scissor Rect override turns off pixel processing by passing only a single pixel through the pipeline. Finally, the Simple PS override replaces all pixel shaders with a trivial shader that emits a constant color.
These overrides told the rest of the story. Reducing the game to a single pixel gave a frame rate about the same as null hardware. Swapping to a simple pixel shader also gave about the same performance as null hardware. Using simple textures we saw a 1.6x speedup, which is only a modest gain when compared with the Null Hardware result. So, some amount of each frame was dominated by the use of more complex textures, but the majority of the frame time in the hardware was spent processing pixels in the pixel shaders.
Other overrides will sometimes show interesting results at this point, but this combination gave us a clear direction for more analysis. In particular, for other games you might learn much from the Z, culling, and alpha overrides, and from showing overdraw visualization and wireframe.
To confirm that we were bottlenecked in the hardware, we also used GPUView (from the Windows* Performance Toolkit, part of the Windows SDK). When we looked at the CPU queue, we could see that the queue was full all the time. This showed that the hardware always had queued work available for it, so we knew that the game was running faster than the hardware could process.
Figure 6: GPUView shows a full context CPU queue
In Figure 6, the GPU HW queue is at the top, and the context CPU queue is the large, filled region on the bottom. You can see the commands flow down in the queue over time. Here we clicked on one Present packet to highlight it. You can see it progress down the queue until it was processed on the right of the figure.
In this trace, the queue held about 2.5 frames worth of commands at all times (when the queue is this full, you can tell by scrolling through the queue and counting the Present packets). It’s good for a game to pipeline its frames to keep slower graphics hardware from going idle between frames, as long as you’re careful to not run too far ahead. Later experiments confirmed that Retribution pipelined at most three frames in the queue. Any more would have started to add a noticeable UI latency, so this looked like the right amount of queued work.
It was now clear that our bottleneck was in the GPU hardware. Armed with this information, it was almost time to capture a frame for deeper analysis. But first, we could learn more by looking at real-time data in the HUD.
More real-time data: Roughly what were we doing?
The real-time counters displayed by the HUD can give a good sense of how a frame runs. Using Intel GPA on any DirectX graphics hardware, the HUD shows HW and SW counters from the CPU and DirectX. When Intel GPA run on Intel graphics hardware, they also show hardware counters that are specific to Intel graphics hardware.
The HUD can show four counters at a time. You can show different counters by looking at the HUD monitor’s profile settings. Changes take effect immediately.
First, we noted all the metrics that the HUD can display. Then we did some experiments with the overrides in the HUD and captured those values as well to see how the data changed.
The data in Table 2 shows a few areas for investigation, but mostly we confirmed what we found by looking at the frame rate changes from the overrides. A large amount of each frame was spent on the GPU, and most of that was in pixel shaders.
Table 2: Counter detail with overrides
With this information, it was time to capture a single frame, so we could study how we were spending time in the pixel shaders.
Looking at a frame: Details emerged
After capturing a frame in the Intel GPA HUD and exiting the game, we used the Intel GPA Frame Analyzer to show the frame with detailed stats about how it was drawn. In Frame Analyzer, the frame is also “live” and can be experimented on, so you can try various changes and see the impact.
Figure 7 shows how Frame Analyzer displays all the calls across the captured frame. Each unit of work (an “erg”) in the frame is drawn at the top, and the rest of the window holds various summary and detail panes. We can display the ergs in various ways to better understand them. The default view is shown here, but it can also be useful to plot GPU breakdown vs. GPU duration. See the dropdowns in the corner for various options.
Figure 7: GPA Frame Analyzer shows terrain is the most expensive
Dawn Of War 2 Campaign Mods
First, we looked at the summary information for areas of interest (highlighted below) and then started running experiments to better understand how to speed up the frame.
Table 3 shows several areas that might be making the frame run slow, but the pixel shader time was the single biggest piece of the frame, so we focused our attention there first. Selecting the longest-running erg, we saw from the render target that this erg drew the terrain. Selecting several of the most expensive ergs confirmed that most of the work in each frame was dedicated to rendering the terrain.
Table 3: Frame Analyzer summary shows a few areas for further study
Frame budget: Confirming that terrain was expensive
It can be useful to look at your game’s frame “budget”, to see how much of each frame is spent on each part of its rendering. This lets you decide if the right amount of each frame is devoted to the right geometry and the right look. By selecting different ergs among the longest-running group of ergs, we could see that most of the longest-running ergs were dedicated to rendering the terrain. But how much?
To find out, we manually picked different ergs to see which ones rendered the terrain. Tip: often, terrain work is grouped together, so the terrain ergs are next to each other in the timeline, and can be multiply selected at once. When we knew the first and last ergs that contributed to the terrain (or post-processing, or characters, or whatever), we selected all the interesting ergs to see a summary of the terrain work.
When we selected the terrain ergs, we saw that just over half of the frame time was spent on the terrain. The total frame time was 63.8 msec or 15.6 FPS. Of that, terrain time was 32.6 msec or 51% of the total frame.
Looking closer at the longest-running ergs, we saw that they had the most complex pixel shaders in the game. They tended to have many texture reads, with as many as 36 texture reads per pixel. Each shader sampled up to 8 terrain texture layers (at 4096x512), plus some additional textures.
The terrain textures looked like this:
Figure 8: Sample terrain texture
Experiments: Try to speed up the terrain
Now that we had located slow parts of the frame, it was time to try to speed up the frame. In Frame Analyzer we can change many aspects of how a frame is drawn and see the effect immediately.
Experiment: Clamping Max MIP level
With so many textures, we hoped that reducing the MIP levels of the textures might give us a large speedup.
In Frame Analyzer, we selected the ergs in question and manually overrode the MIP level on each of the terrain textures. Here’s what it looked like.
Table 4: Higher MIP levels ran faster but at much lower quality
MIP level 1 still looked OK, but the visual quality beyond that was unacceptable. We found only a modest speedup at MIP level 1. This change might have been useful, but it would not solve the larger performance issue.
Experiment: Eliminating ‘texkill’
In Frame Analyzer, you can edit the pixel shaders directly to try various scenarios. Some of the shaders included use of ‘texkill’, which can sometimes be replaced with faster code. We tried replacing the ‘texkill’s with a fall back path that simply outputs a transparent black pixel. We found no significant performance change; the original code was fine.
Experiment: Eliminating unnecessary texture reads
Looking at the shaders more closely, we found areas that had many texture lookups. In the Terrain Tile shader (PSTileLow), every terrain texture layer is sampled and then blended. The blend uses a number of computed Weightfactors and other parameters. Figure 9 shows the original shader code from PSTileLow.
Figure 9: PSTileLow shader showing layer blending
That was the PSTileLow shader. There was also a higher-fidelity version, PSTileHigh (see Figure 10). That version has similar sampling logic, but it will only sample terrain layers if the Weight is above a certain threshold value. This keeps the shader from working with textures that don’t contribute much to the desired result. Changing the PSTileLow shader to use the same technique gives a more complicated looking shader, and one we hoped might run faster.
Figure 10: PSTileHigh shader blends only above thresholds
The revised shader used tex2Dlod instead of tex2D. We used tex2Dlod since the sample was inside a dynamic branch and tex2D instructions aren’t allowed inside dynamic flow control. The tex2D instructions couldn’t be used here because the GPU always works on 2x2 pixel blocks at a time, and it needed to calculate the derivatives used for the MipMap LOD and anisotropic filtering. To add dynamic flow control to our texture instructions, we needed to directly compute the pixel’s LOD and use that in the explicit tex2Dlod instruction. This made it possible to change the shader so the texture lookups only happened when the layerWeight was above the threshold.
Although Frame Analyzer isn’t a full shader debugger, we can change the shader by hand (dynamically), to test our changes. In this case, when we changed the shader, we saw some significant changes.
Table 5: Threshold check speeds up the frame
Adding the threshold check gave us a major speedup on the slowest part of the frame and a significant speedup to the whole frame.
To understand this change even better, we wondered if reducing the memory reads per pixel would give a speedup. So we looked at the MIP level of the textures in question to give us smaller textures to load. Table 6shows the results, highlighting the significant differences.
Table 6: Adding threshold check makes shaders run faster
The modified pixel shader with the threshold check did run faster. As we expected, the overall frame ran faster, and we showed a significant reduction in GPU duration and specifically in PS duration. There is a reasonable drop in post-filter texels, as we would expect, and a significant drop in GPU texture reads. While clamping the MIP level to 1 also ran slightly faster, that gain was small in comparison. Also, the frame looked nearly identical to the original frame, so changing this shader had no negative effects.
So, the MIP change was not worthwhile, but the pixel shader edits were a major speedup. These results were measured when the few most expensive shaders were changed by hand. When all similar shaders were changed across the game, the frame rate went up to 24 FPS.
Experiment: Avoiding overdraw of pixels under HUDs
Looking at the game, there are two significant HUD areas: the mini-map and the unit info/command area. Both areas contain irregular opaque objects that get rendered on top of everything else on the screen. They’re highlighted in Figure 11.
Figure 11: These HUDs cover ~10% of the screen real estate
All pixels rendered beneath the HUD are simply overdrawn when the HUD is rendered. They take up roughly 10% of the screen real estate. What if there was a way to avoid that overdraw by not rendering those pixels in the first place?
It sounds simple to avoid calculating the wasted pixels by reordering, so the HUD is rendered first. That way, we could let the graphics hardware’s early-Z detection save us from calculating any pixel beneath the HUD. This was not so simple here because the game uses multiple render targets. The game has render passes for color, lighting, and post processing. It wouldn’t make sense to draw the HUD first, because then the HUD would be subject to post processing passes.
It is possible to block out the HUD regions in the earlier render targets using simple quads with a depth of zero. This could be as simple as issuing one extra Clear call right after clearing the surface at the start of the frame. This Clear would set the depth buffer to zero for the rectangular parts of the frame that would eventually hold the HUD. When the Intel engineers were considering this, they did not have access to the source code to make this change. Instead, an internal development tool was used to block out these rectangles in all the overdrawn render targets. This increased the frame rate from 24 to 27 FPS, for a 1.1x speedup. Because of the added complexity of in-game toggles for the HUD and varying HUD locations (e.g., between letterbox and widescreen modes), implementing this would have required significant engineering as well as content pipeline changes, so this change was postponed. There are also other HUDs that might have theoretically yielded a still bigger speedup, but they’re very small and would have had minimal impact.
Results in the final game
After incorporating the shader threshold changes discussed above, the game runs much faster. Before optimization, the Ork scene ran at 17 FPS at 1280x800 and Medium quality. Running on the latest graphics drivers, the released game runs at 24 FPS, or a 1.4x speedup. The same change also yields a similar speedup at low quality and similar speedups on other levels and on the game’s built-in Performance Test.
Now, when we examine a frame, we see much less time spent on the terrain. Figure 12 shows the frame capture with the terrain ergs highlighted. From the highlighted parts of the frame preview, you can see that this is terrain.
Figure 12: Terrain now takes up a smaller part of the frame
Looking at the same view but displaying the ergs with GPU duration and GPU breakdown, it is even more obvious. In Figure 13 we can see that the terrain takes up about 26% of the frame, which is a big improvement. Before these changes, terrain had taken over half of the frame. This confirms that the single biggest bottleneck on the GPU has been optimized.
Figure 13: Terrain shown with GPU duration and breakdown
Looking at this another way, how much did the CPU and GPU workload balance change from optimization? The HUD overrides give us a fast way to tell.
Table 7: Overrides before and after changes
When we run with draw calls disabled, the game runs at about the same speed as before. This shows that the performance of the game on the CPU is largely unchanged. The actual FPS, though, tells the whole story; it’s significantly faster due to speeding up the slowest terrain pixel shaders.
Conclusion
This case study shows some useful techniques for finding graphics bottlenecks and making and measuring experimental changes. There are more techniques that can be used. Retribution did not have this issue, but if your game has intermittent drops in frame rate, you can set up triggers from the Intel GPA Monitor to capture the slow frames. If you’re not sure what the data means, the newest versions of Intel GPA include a feature called Advisor that can make recommendations based on your measurements. Advisor was first released as a Beta feature in version 4.3.
We hope these techniques are useful for you on your project! You can learn more about Intel GPA and download it from www.intel.com/software/gpa.
About the authors
Paul Lindberg is a Senior Software Engineer in Developer Relations at Intel. He helps game developers all over the world to ship kick-ass games for the PC.
Doraisamy Ganeshkumar is a Senior Software Engineer on the Intel Developer Relations team. He helps PC game developers optimize pre-launch titles using the latest Intel technologies. His current focus is to help provide the best Out of Box gaming experience for PC gamers.
Special thanks to Juancho Buchanan and Karl Schmidt from Relic and Mark DeLoura and Morten Haugaard from THQ for all their work on performance improvements to the game and contributions to this case study.
*Other names and brands may be claimed as the property of others.