Image for post
Image for post

Frame Analysis — Overwatch

Overwatch is a game that focuses on teamwork. As a team you need to work together to wrestle control of a portion of the map from the enemy team by directing aggression and protect teammates as in the Tank role, hitting weak points in the enemy’s defenses in the Damage Role, and improving your team’s performance by healing your team as well as increasing their damage, speed, and keeping them alive when they’re in danger with the support role.

Now I’m not the best player of the game, I certainly don’t put in the hours upon hours a professional streamer would constantly playing the game. Therefore take what I say with a grain of salt. That being said I do enjoy the game and find it pretty engaging, challenging, and fun.

What’s Fun

Overwatch is a shooter, so those familiar with this genre will find themselves right at home here. That being said, this game is much more creative than other shooters with unique weapons and abilities on top of the usual shotgun, sniper, or rifle.

These unique abilities form individual roles that a player could have:

  • Tanks — which could be subdivided into individuals that specialize in Shields (Reinhard, Sigma, Orisa), Protection (Zarya, Dva, Winston), Distraction (Winston, Hammond, Roadhog).
  • Damage — Which can also be subdivided into specialists in Sniping (Widow, Ashe, Hanzo, McCree, Soldier), Demolition (Junkrat, Pharah, Reaper), Flanking (Genji, Tracer, Doomfist, Sombra), or Utility (Torbjorn, Symetra, Mei).
  • Healer — Which again can be subdivided into Ult Protectors (Lucio, Zenyatta) that protect their team in the event of a powerful attack from the enemy, Damage Boosters (Ana, Baptiste) that can help with damage dealing, and Midfight Boosters (Moira, Mercy) where their contribution is enough to tip the scale of a midfight in favor of their team.

There’s more to these individual roles, but the combination of these roles in a team can lead to interesting macroscopic patterns:

  • Death Ball — Stay entirely together and fight as a single unit. This can be slow or extremely mobile, with the more mobile variant referred to as Dive and the slower one referred to as sometimes as Goats (but that term tends to be specific to 3 tanks, 3 supports).
  • Long Range — Kill off far away targets before their team has a chance to protect them. These can come in 2 variants, Poke, where the constant damage pressure overwhelms supports and tanks, and Snipers where a peaking player would instantly be picked off from long range.
  • Bunker — Hold a position outright, and try to prevent the enemy team from taking it. This can also come in two variants, Firepower where there’s extreme damage pressure from the bunker, and Cow where the bunker is isolated in a contested position such as a choke or area with clear line of sight on the objective.

Each of these play styles counter the other, but despite the “rock paper scissors” appearance, should your team play well enough it’s possible to beat a team that’s countering yours.

What’s not Fun

Overwatch is a very social game, and is also a game that offers internet anonymity, as a result there can be some aspects of the community that aren’t sportsperson like.

  • Upset Teammates — It can be easy for someone to let their emotions get the better of them and start complaining, but it’s possible to block players, mute players and hide chat should that be a problem.
  • Hackers — They’re extremely rare, especially with a game that has so much social credit, where players with a lot of experience tend to play together, reducing the likelihood of running into one of these people considerably.
  • Experienced Players targeting Newcomers — A copy of the game isn’t too much money for someone determined to do this, so it’s become somewhat common for people to have multiple accounts, and the matchmaker sometimes has trouble detecting these individuals and matching them with their skill tier (known colloquially as smurfs). Odds are most folks that are presumed as smurfs just happen to play well at that moment.
  • Losing — This game involves a lot of team work, and should your team lack that, or make decisions on their own that lead to their isolated death, it will lead to your loss.

Rendering Architecture

So let’s review how Overwatch renders a single frame.

Note: This is not an official analysis of the Overwatch renderer, we won’t be discussing everything that their renderer does, just key aspects of it and referencing techniques where appropriate.

Shadow Depth Passes

Overwatch begins a frame by generating orthographic depth projections for each of their shadow casting lights, rendered at 2048x2048 in medium settings. In this scene there is 1 directional light and 1 omnidirectional light rendered as a cubemap that’s 512x512 per face.

Following the depth prepass there’s a pass where shadows are resolved in a supertexture with different noise samples that are composited together later during lighting.

Prepass

Overwatch has a standard prepass, with View Space Normals, Albedo, Metalness, Roughness, Emissive, and View Space Depth, encoded for use in later passes. The distances in view space depth imply that they use centimeters (cm) units.

These and subsequent passes are rendered with 50% more pixels on the Y axis for fast anti-aliasing due to upscaling being set to 150% in medium settings.

Ambient Occlusion

Ambient Occlusion is rendered first with view space AO, then composited with baked ambient occlusion.

Reflection

The reflection pass begins with a prepass that’s used to determine target surfaces to use for reflections, which is then composited with the metalness and roughness of that surface to determine the final mask in green.

Then there’s a raycast from those appropriately reflective surfaces, a horizontal blur to help with azimuth reflection scaling, something physically based reflections approximations have trouble doing, a grow pass, then a mip level pass for metalness and roughness pre-integration.

Diffuse Lighting

The diffuse lighting pass renders lighting for each individual light object visible in the scene, this scene had more than 20.

Specular Lighting

If the prepass wasn’t already indicative of the presence of a PBR renderer, this confirms it, here we’re rendering our specular lighting by taking advantage of our prepass and image based lighting from the skybox.

Bloom

The bloom pass here is pretty standard across the gaming industry, the same scaling-bluring-compositing effect that can be found everywhere from Unreal to Unity to everything in-between.

Masks

In the mask pass, Overwatch renders out allies, then enemies. First they render the mask, then grow the mask, then apply a sobol operator to the mask to get the final outline.

UI Pass

Prior to UI pass, there’s a prepass that renders out aspects of the UI that are encoded as scalable vector art to a render target. It also renders these at different blur levels for shadows or bloom effects.

Finally, the UI pass, where all the UIs are drawn, completing the frame.

Conclusion

All in all, it’s clear that the rendering engineers, technical artists, and individual artists over at Blizzard are very attentive to their rendering budget, so while not extremely flashy, this design is clearly meant to run absolutely anywhere and everywhere at a smooth 60 frames a second and it shows.

If this was insightful or if you have any suggestions for a game to analyse, let me know in the comments below, and I’ll see you all next time.

Written by

https://Alain.xyz | Graphics Software Engineer @ Marmoset.co. Guest lecturer talking about 🛆 Computer Graphics, ✍ tech author.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store