The World of Tanks Blitz team talked about the implementation of the new features and graphic improvements in WoT Blitz Update 7.0: gun recoil animation, shell hit marks, dynamic shadows, and more.
In case you missed it
You might find these articles interesting
How Blitz Started
Kirill Tokarev: Guys, first of all, congrats on the anniversary! Time really flies. I remember when I was back in Russia and worked at mail.ru on one of their mobile portals and I did a review on Blitz. That seems like ages ago! For our international audience, can you give a little intro to World of Tanks Blitz? How did it start, what were the first initial goals of the project?
Development on World of Tanks Blitz started in early 2012, and our goal at that time was to recreate the success of World of Tanks PC on mobile devices. An additional goal we had when we set out was to prove that complex shooters can be right at home in the App Store and Google Play Market. Yes, there was a time when people didn’t believe that was possible.
Kirill Tokarev: Running such a stunningly beautiful game on mobile must be incredibly difficult. Could you tell us a bit about the way your team decided to optimize it? How do you make it run on such a tiny platform like a smartphone?
Our biggest secret is probably our artists. These guys can deliver amazing visuals with a very modest number of polygons. There’s also a bunch of technical optimizations we utilize:
- Only tanks are being dynamically lit. Lighting of the environment is baked in lightmaps.
- We use static occlusion culling: at the stage of map production, we bake the data on object visibility from different points in the arena and in different directions.
- Tank shadows are rendered using the shadow volumes technique. Update 7.0 brings high-quality shadows that use shadow maps technique, but currently, only high-end devices have the capability to render these at 60 FPS.
- We don't use post-processing to draw an outline around an enemy tank when you aim at it. Instead, we draw a shadow volume mesh (the artists model it for every tank so that we can use the shadow volumes technique mentioned above) with a stencil test.
Gun Recoil Animation
Kirill Tokarev: Could you share some of your thoughts on the fantastic additions in the new release, like your Gun Recoil? How does it work and how was it implemented in the game?
The animation of a gun recoiling is quite simple in itself; the really tricky part of this feature is a completely different matter. We have about 400 tanks in the game, and for the majority of them, the gun mantlet and the barrel are made as a single mesh. Remodeling this number of vehicles is too much work, so in order to animate the movement of the barrel, we “cut off” the barrel from the mantlet while loading a tank in the game.
All in all, some 3D artist work was required for sawing them all off; we weren’t able to come up with an idea of defining the barrel-mantlet boundary automatically but gave them the opportunity to specify the bounding box of the barrel in our internal tool for tank setup. Two artists set up gun recoil for 400 vehicles in just one day!
Shell Hit Marks & Tank Tracks
Kirill Tokarev: How do your visual additions work together with the decals and tank traces? It’d very interesting to learn how you built those things and how the visuals complement the gameplay.
Tank tracks, together with shell hit marks, were made using decal tech. But while the first feature is purely visual, the second one has a great impact on the gameplay. A complex armor penetration model is one of its pillars, but at the same time, it is very difficult to understand the mechanic. Shell hit marks allow players to see exactly where they hit and what happened with the shell (penetration/rebound /non-penetration). It’s a kind of visual feedback, thanks to which newcomers will quickly understand the basics of our gameplay, and more experienced players will be able to hone their skills faster remembering where each tank is easier to penetrate.
The story of these features’ creation is interesting: although the shell hit marks are undoubtedly more valuable for the game, it all started with tank track marks. More than a year ago, one of our render programmers was working on a deferred render prototype for World of Tanks Blitz. Having an almost fully working deferred render, he suggested implementing tank tracks using deferred decals. He and another render programmer made this feature during Blitz UP — this is the name of the quarterly internal event in our studio, during which all project programmers can devote one working week to their ideas. Later we discontinued the work on deferred render, but by that time the game already had depth prepass (we added it for soft particles), and another render programmer suggested using it to implement decals. We did optimization for mobile GPUs (replaced depth prepass with reading depth from tile memory on devices that have OpenGL extension ARM_shader_framebuffer_fetch_depth_stencil) and implemented decals using this technique.
Only after this massive amount of work was finished, we realized that we could make not only static decals and tank track marks, but shell hit marks too. Due to the complex geometry of tank models, and also due to the fact that their visual and collision geometry are different, the implementation of the last feature wasn’t a simple feat.
Lightmaps & Shadows
Kirill Tokarev: Could you tell us a bit about the way you’ve been working with maps in general? How important are shadows for good visuals? How do Shadow Maps help you enchain the look of the project?
When working on a map, one has to solve plenty of tasks related to visuals, gameplay, and tech — all at the same time. Lighting is definitely one of the key areas of arena creation. Not only it allows you to come up with the right atmosphere and mood but it also helps the player to navigate the map.
Until the 7.0 update, the lighting system in Blitz consisted of lightmaps for environment objects and shadow volume-based dynamic shadows for the tanks. These two techs don’t match well; for example, when a tank drives under a bridge or into the shadow of a building, we see two shadows superimposed (unlike in real life). Still, this approach isn’t very demanding performance-wise — so we’ve used it since the game’s launch.
Shadow maps tech allowed us to make baked and dynamic shadows work together. After the 7.0 update, surrounding objects cast shadows on tanks. That looks much more natural and livens up the picture when your tank is on the move.
Also, the world around the tank is much more detailed now. A lightmap per se is a set of relatively low-res textures not allowing for crisp shadows for fences, poles, trees, cars, etc., so with the new shadow tech, the environment looks more pronounced and appealing.
It's also worth mentioning that we blend lightmaps for static objects together with shadows from shadow maps. This lets us deliver correct and detailed shadows while keeping all nuances and reflections of shadows for complex volumes, peculiar for baked lighting.
In other words, with dynamic lighting tech employed, self shadows and cast shadows will be applied to an object in the same way — in any spot where light doesn’t reach. Such lighting looks primitive, and the resulting picture seems flat. Hence the player has problems with navigating and also with perceiving the shapes of in-game objects around. A lightmap texture, on the other hand, contains lots of data on how much light falls on the objects and ‘re-reflects’ between them. Combining both lighting techs, we get the best of both worlds (yet, starting with a certain distance from the camera, we use the lightmap tech only — due to performance considerations).
Kirill Tokarev: What's your technical approach to the amazing visual effects in your game, stuff like flames and smoke?
When you create fire and smoke effects, the key thing is making a texture for them. We employ FumeFX and Houdini to simulate the said effects and export them into the texture atlas. After that, we start the work on the effects’ dynamics — within the in-game particle editor. To mix the smoke with the background, we use the standard Alpha Blend shader, or an Alpha Additive shader (in case we need the smoke to be bright).
A Look inside the Mobile Game Industry
Kirill Tokarev: Overall, what would you say are the biggest challenges of building such complicated projects on mobile? Do you think mobile platforms are going to be more optimized and more technically interesting in the future? Do you think game tech will get even more procedural and more technically approachable? It would be interesting to learn more about your take on the way the industry will develop in the future.
One of the main complications in modern 3D mobile game development is that your software must support a broad — truly immense! — range of devices with very different GPUs. A render programmer has to work with profiling tools from five different GPU vendors, and an artist has to assess their textures compressed to four different vendor-specific formats. Games like ours — whose creators intend to provide pretty visuals on top devices while not estranging low-end device users — have to be scalable: you must give the player a switch for almost every graphics feature. Also, there’s a huge problem with performance control: overheating and throttling requires a sophisticated methodology for performance testing on mobile devices.
If we look at the evolution of mobile devices over the last 8 years, we can observe that the performance of top ones grew multifold. At the same time, there are many budget smartphones on the market, with GPUs comparable to that of the iPad 3. Because of that, this venerable model marks our minimum system requirements even now: a whole lot of players buy inexpensive gadgets but want to be able to play the best games.
As far as game tech advances are concerned, these mostly happen on ‘large’ devices (PCs and consoles). In the mobile game industry, we are mostly looking at these and drooling. Still, as a whole, the industry is now aimed at optimizing the artists’ work (due to understandable reasons), and we follow this trend when improving the World of Tanks Blitz engine.