HotFix: Graphics Update Review World of Warships
Greetings, fellow Captains! Warning! This video will tell you about tile texturing, the advantages of static surface models, inverse Fourier transform, PBR, photogrammetry, and other incredibly complicated tools of a game designer. Get ready to learn how we update the graphics in World of Warships. Make yourself comfortable, it will be interesting! Why do we need to update the graphics? We decided to update the in-game graphics because, first of all, players expect us to do so. Players constantly upgrade their rigs, purchase new GPUs and CPUs.
Respectively, we can't make them enjoy the game without providing them with new technologies utilized by these computer components. The second thing that's highly important for us is that the game is constantly growing— the number of ships, islands, and maps available in the game is constantly rising. If we continued using old technologies, at some moment, the client size would become unacceptably huge, so each new update would be painful for our players.
The new technology that we're currently implementing allows the size of the in-game content to be reduced threefold, while increasing its quality tenfold. How will the maps be updated? The old islands didn't satisfy us to the fullest extent because there were scaling issues, issues related to the level of detail; and these issues could result in a disparity between the scale of houses and the scale of trees and islands. Actually, the islands don't possess a high level of detail, and the lack of detail makes it look like the scale is falling apart, and the overall picture isn't so great.
We decided to rework the maps because of that. We had two paths to follow: the first was to enlarge the textures, but in this case, the game client would bloat to an enormous size because textures take up quite a lot of space. And there was a second way to work toward shading improvements.
Thus, we selected the second approach and started working on the ways how the system could be improved and updated. We shifted to the system of so-called tile texturing that utilizes small textures for mapping. So we have textures of grass, rocks, sand, and many others, that differ depending on the specific map— specific tiles correspond to a specific map, whether it is a snow, grass, or some other map. The new water, what is its feature? The old water was good— it was actually using the maximum capabilities of the video cards that were available to players at the moment the game was released. But as soon as we tried to move on, as soon as we wanted to add more water details, to make the water sharper, make the waves higher and more realistic, add more relief to them, because the wave isn't a scrolling texture with a shape of a sine wave.
The waves are complicated, they have curves and peaks, the water can be choppy. So the old water system broke entirely at that moment. It turned out that if we increased the level of detail in the old water, players would see infinite small waves that were very annoying to look at, and there was no way to overcome that. That's because the approach used for the old water is basically ray tracing when we're trying to determine how a ray from an observer hits the water and how the wave is directed at that place.
A new approach is different, it uses the surface roughness, a statistic model. In other words, we imply that for the current heaving of the sea, a single pixel on the screen some distance away— it can be several meters or even kilometers of the surface— has some specific surface properties, some specific roughness. So shifting to this different computational model allowed us to advance.
It was a fundamental difference. What is the new water capable of? The guys did their best. The game now has a huge number of sliders for adjusting everything we want. Whether we want a calm or stormy sea, we can make it. Water translucency in sun rays, flecks of sunlight, light strips— all of that can be specified, and all these effects will make the water unique on all the maps.
Is the new water close to reality already? Currently, we model the in-game water like it can be viewed in reality, I mean, we change and create the image of the world and ocean in every in-game frame. In other words, when we used our previous approach, we basically merged several wave-height textures and computed waves out of them. Now we're working with the real spectrum of the ocean. We use data obtained by oceanographers on the basis of the sea spectrum analysis to simulate, reconstruct, and recreate images of wave shapes from the inverse frequency representation of the ocean.
It's the inverse Fourier transform. What did the shift to DirectX 11 bring? The shift to DirectX 11 allowed us to use functions that had been unavailable to us before. Basically, DirectX is some kind of a layer, and every program interacts with this layer while accessing the video card. There are all kinds of video cards and different manufacturers, thus, video cards are slightly different from each other on the inside.
So, in order to hide all this variety from game developers, graphical APIs such as Vulkan, OpenGL, and DirectX were designed. Each version of the DirectX interface brings new features supported by all video cards that support this standard. And we can utilize these features.
When we saw that our players were ready for this transition, when we saw that a great number of players would be able to experience these new features and improvements, we moved from DirectX 9 to DirectX 11. This step provided us with the capability of using more complex lighting methods and composite materials, which are currently utilized on the islands, when surfaces converge in real time by quite complicated laws. That allowed us to improve the visual quality of the game. Eventually, we switched to the tile system. The advantages of tiles are that first of all, the textures are significantly smaller than unique textures. Tile textures can be multiplied numerous times for some specific masks.
In other words, if we have a sheer cliff, it's comprised of multiple rock tiles; if we have islands, a grass tile is multiplied. However, in order to avoid it looking as if all the islands in the game consist of just two textures, we use the masks that allow us to vary grass tiles by adding sand, and rock tiles by adding grass or sand. “Does the sun shine the same way for everyone?” Before we updated the water, we had significantly reworked the in-game lighting system. We just came to using Physically- Based Rendering—“PBR” in short.
It implies that instead of presenting all surfaces as multicolored plastic, we shifted to a system in which every surface has its own unique behavior. In other words, the system accounts for internal material properties such as microfacets. Therefore, metal looks like real metal and glistens like real metal, plastic looks like real plastic, and moss and grass have their specific light-scattering properties and look realistic. It allowed us to utilize properties of real physical objects in the game, including photogrammetry, which involves transferring high-precision scans of real physical objects into the game. One can say that we used realistic natural objects to create our in-game objects. So the system can compute map space, some small rocks and grass that are actually helpful when we apply textures to masks.
Depending on the height obtained as a result of photogrammetry, textures are layered one on another. As a result, sand will always be below grass or protrude in some places, depending on the map of heights. If we use cliffs or rocks, rocks will be slightly above grass. When we combine all of that, we obtain an overall picture that is similar to what we can see in reality.
We can make such a picture ourselves. We call it sculpting— the entire space of the maps can be made using specific 3D software. However, the human eye can detect that some parts of such an image aren't real. That's where photogrammetry comes in— it fills this gap between reality and an artist's work to make an image look realistic.
We're currently working on updating two game maps— Hotspot and Two Brothers— and the Philippines Port. We can say that these locations have become a proving ground for developers to search for solutions within the new modeling method. It's well-known that the progress of the game's visual effects is inseparably connected to the development of the processing capabilities of CPUs. This condition required a non- standard and creative approach, as well as new tools.
Now, everyone knows that multiple cores and threads can be used for parallel computing, but initially our game engine didn't support that. The process of shifting the systems to make it possible to compute frame data in parallel was performed stage by stage. So now we can prepare data for the main run in parallel; here the main run denotes everything we can see when looking at the camera view. This includes data for computing shadows and reflections. Many things can now be executed in parallel.
Thus, we have an improved rate of processing, and we can process more data per time unit. How can you add a real volcano to a map? We take an old map that we already have. At the very beginning, we're looking for references, approximate images how it would look in reality. If we, for example, take the Hotspot map, it's clear that we'll take some Southern maps for reference— the Philippines or Fiji for instance. Then we compose an entire picture of the map for ourselves and start choosing respective textures and tiles that I've already mentioned. After that, we choose 3D objects— trees, flowers, and so on— to make the map look real.
Then we start reworking these objects, I mean, in some cases we use photogrammetry, replace objects in some places, add more hills and cliffs to some spots. Then we export all of that to our toolkit where masks and tiles are used. After that, with a single mouse click, we export all of that to the game engine, to the map, and begin polishing the final visuals. We adjust the color hints, we might add green, light, or yellow to some spots; add or remove some cliffs; make an accent on some parts of the map, and so on. We remove the content that has been updated with new textures and replaced, like for example, Hotspot. That allows the game client to be slightly compressed, so, in the current system at the given moment, the map takes up less space than its previous version.
Is it going to storm? Speaking about things that we wanted to implement but have only now managed to accomplish, ships react to the water's surface. There are now points of contact between ships and water, and ships react to the movement of waves depending on the shape of the ocean below them— rollers will roll ships, while ripples will just shake them a little. So now ships can ride the waves and roll under the influence of the waves— it's all a real simulation which is computed every frame. We evaluate these effects, and perform physically-based rendering. When we looked at the water, at these flecks, light, and how they interacted with a ship, the first thing our eye could catch was a ship and its wake.
The wake effect didn't correlate with the in-game water we had at that moment. That's why we decided to update the ship's wake effect as well, all water effects. Is the reticle swinging? Firing accuracy currently doesn't depend on ship's rocking. It was made at the request of our game designers. Currently we're capable of making huge rollers using the in-game water, but during the first stage, we agreed that we wouldn't make it so that the ship's rocking affected its firing accuracy.
Players would hit their targets as they did before. In addition to the new wake effects, we tried to make the ship's motion when turning more realistic that it was. I mean, if previously this tick-shaped effect at the ship's bow was utilized, then now, after we've searched through a lot of reference materials, we try to make realistic motion of the wave and spray relative to a ship's turning. Why did the water remain "unreal" for so long? The graphics update took a lot of time because we needed to do a lot of background work first. The Big World engine, which we used initially, didn't support modern technologies and multiprocessing systems. That's why, in order to make a beautiful tip of an iceberg, we had to start with making a huge underwater part of it, prepare a geometry processing method in the game, explain to our artists how to use a new toolkit, and make this toolkit that would allow us to create new content for the game in the first place.
All of that took most of the time. What's underwater? While we were developing the new water, another task emerged. Our remarkable game designers created remarkable underwater gameplay, and we needed to support their efforts.
So it turned out that taking the same input data of the hardware that our players have into account, we had to learn how to render two worlds— the underwater and surface ones— at the same pace as before. As it turned out, when one submerges underwater playing a submarine, they require more detail in close proximity— players need much more information to feel comfortable and not to feel as if they are in an empty outer space. All the requirements for object details have risen accordingly. It was a great challenge from the development perspective. Many effects were used to simulate the subsurface light scattering, the existing underwater haze.
Another issue is the water's surface when we're looking at the ocean from the underwater perspective. That requires some specific simulations. The new water simulation gives us solid and correct experience and makes it so that the water surface starts behaving realistically. The feature that we are able to see a plethora of details up close strongly affects our experience.
The old water, for example, couldn't provide for so many details. We can now increase this level of detail for submarines and for ships while we're looking at them from a close distance. That's why many optical effects that are perceived absolutely naturally by a human eye have been executed in the game naturally as well because our new simulation system allows us to achieve that. The main issue for us is to converge the underwater and surface parts because we've been constantly working on the surface part only and haven't paid much attention to the underwater part. We've reworked all the maps where submarines can be played.
We also decided to make a more detailed underwater world on our HD maps. In other words, if there is a beach on the surface, it should also continue as the beach underwater, and the same applies to cliffs so that this congruence between a submarine and the underwater world becomes even more tangible. Why were the trees changed? The issue related to the old trees resided in the fact that there were too few of them, and they didn't look consistent with islands—the trees looked flat, dark, and one couldn't see through them at some spots where it should be possible— so we decided to rework the vegetation system.
When we realized that we had to update the vegetation system, we faced an absolutely huge volume of work that we were yet to do. In order to deliver a ton of content in a single update and to make that feasible, we had to create a lot of good and convenient tools. A huge amount of effort was spent on that—creating new working tools took two thirds of the entire new vegetation development cycle.
So the main requirement for the vegetation update consisted in adding more trees because everybody understands clearly how real tropical islands look. I'll remind you that there are barely any islands. At some moment, we thought that we shouldn't make islands with such a high level of detail because they would be entirely covered in trees. In addition to the vegetation that we created on the islands, we also gained the capability to add vegetation to the underwater part. In other words, the game will feature sea grass. Is it time to buy a new rig? When we analyzed the hardware that our players have, we realized that the range of computers was pretty old by Steam's measures.
It's quite reasonable because many our players, for example, play World of Warships and don't play any other games, and they play on the rigs that are available to them. I mean they aren't ready to buy a new rig for the sole purpose of playing World of Warships. It's quite a common case, although it's getting closer to an extreme one, when players use rigs manufactured in 2010–2011.
It's clear that they play the game on super-low graphics settings as a rule on such rigs. However we can't update the game graphics, break something, and then announce to our players that they won't be able to play the game starting with this update. Video cards that players are using now don't utilize their full potential, so we can transfer a huge number of computations from the CPU to GPU.
This provided us with the capability to improve the graphics quality without any performance drops. We managed to reduce the computational load on the CPU by transferring the load to fast video cards. The CPU was somewhat relieved, and it has an opportunity to perform some other useful work. We have a marvelous performance testing department.
No change to the game can be made without the performance check. We always have rigs that correspond to real computers that players use to play the game. If we see that our changes don't work properly on some configuration, it won't be able to get to the game, it won't get to our players.
We optimize everything we can. Unfortunately, we couldn't apply the new water effects to low and very low configurations, so the water effects aren't updated on these graphics settings, even though we managed to introduce some minor improvements there. However, everyone who can set the graphics settings to medium and higher, will see a truly updated graphics quality. Those players who possess modern and good rigs… Well, what are these good and modern rigs actually? By good and modern rigs, we mean those personal computers that were released on the market five or so years ago.
These are literally top rigs that our players have. These players will respectively get better visuals, and we'll be able to utilize the hardware capabilities to a greater extent than before. Will there be any icing on the cake? When we updated the islands, increased their level of detail, added new water effects and the vegetation system, we were closely inspecting the game client. We then realized that something was missing, and we obtained an opportunity to add birds and fish.
It's probable that even animals will appear on our maps at some point. Will all of that appear in the game at once or within a year? When we were thinking about how we should deliver these changes to our players, we realized that it wouldn't be very noticeable if we were to deliver them in small portions. New islands, forests, and water actually provide for completely different visuals and perception quality. And you can see by yourself that a huge volume of work has been done, and that this work is worthy to be shown to players and to be proud of. It goes without saying that we aren't going to be complacent— we want to update our remaining maps further and we want to continue improving the in-game water, despite how ideal it looks now.
There's always room for improvement, and we would surely like to receive feedback from our players on what they think about the improvements we're introducing. I hope players will like our work. New game development ideas and technologies help the developers to polish the game, but the main driver for the World of Warships development is your passion for the game, Captains. That's the thing that inspires us to search for creative solutions that will make the game better. There is still much to be done, so stay tuned and follow the updates.