World of Tanks Client Analysis (Part 3)

Part 1: http://ftr.wot-news.com/2014/07/18/world-of-tanks-client-analysis/
Part 2: http://ftr.wot-news.com/2014/07/20/world-of-tanks-client-analysis-part-2/

By Thiemo Jung

Welcome to part 3 of my analysis of the World of Tanks client.

I will use the same techniques used in part 1 and 2, to analyze the old rendering mode and show differences and similarities. This part will be short, because the difference is not that big.

Battles with the old rendering modes have a average frame rate of 65 to 70, with occasional spikes to 120 and dips down to 20.

Old Rendering System

As both rendering system use the same texture and vertex resources. The main difference is they no longer use deferred rendering, and shadowing is also turned off, reducing the required rendering calls in less than half.

Without deferred rendering, the scene no longer needs metadata rendered into 2 additional render target, only color data is stored, reducing the require memory (for render targets) and bandwidth down to one third. With shadowing turned off, the scene is only rendered from the view of the camera, the other passes from the view of the lights is skipped. This combined the required bandwidth is approximately reduced to 25% (or even less) of the new rendering system.

But some shaders are still really long (a vertex shader of the tracks is 200 instructions long, this is 5 to 10 times longer than you would expect), but I did not reverse engineer them to find out what they are doing. They still use normal mapping (fake depth) and gloss mapping (or something similar), which is still expensive compared to the contribution to the final image.

They stream data as with the new rendering system, it seems the stream system is decoupled from the actual rendering techniques.

The problem with the frequent allocation of render target is not present in the old rendering system. The still allocate rendering targets mid frame, but for some static text that is rendered into it, this optimisation is probably counter productive and should be disabled for more stable frame rendering.

The redundant state changes of the new rendering system are also present in the old system, but on the old system this is not as severe as with the new system, because there are less stuff to draw.

Everything else is very similar, usage of the d3d9ex effect system, the amount and resolution of textures per tank and the streaming of the map.

Conclusion

Fixing the problems with the redundant state changes, would help both rendering systems. Optimizing their streaming system should also help both rendering systems to make the framerate more predictable (resulting in less spikes and dips).

They should also take a look at their shaders, in both rendering modes, to optimize gpu usage.

25 thoughts on “World of Tanks Client Analysis (Part 3)

  1. I’m interested in knowing more about the aspects of the software that are potentially damaging to a PC.

    A class-action for compensation might net us 100 gold or more!

    :/

      • If a piece of software has your PC doing enough read/writes that it is like a stress test, then I would call it damaging due to a significant shortening of device life.

        The earlier analysis pieces suggested that this is the case.

        :/

        • It ain’t working like that. You can’t call ordinary use damage. R/W operations are normal use, even a high amount of them. Besides you can always move the temporary folders to a HDD. And yes windows / other programs probably write / read much, much more in temp folders then WoT, unless you only use WoT on your PC.

          • Ok, I’m referring to what the same author of this article suggested in his previous articles. I have no idea why either of you would respond to me unless to say ‘that was not suggested in the previous articles from this author’.

            There is no hope for humanity.

            :/

  2. At start “new rendering” gave me more fps than old one. After some client updates it became more requiring. I think new rendering system could replace old one, if it would have more effects disabled on low details.

  3. WG has dug a hole to themselves by giving instructions for programing only in russian.
    Obviously too few people are working on fixing stuff.

  4. Do we get a Part 4 exploring the network side of things, including the BS the screwed up with 0.8.8?

    Really nice work so far!

    • Networking and other stuff is scheduled for the next part. But without reverse engineering their network protocol, the result of the network analysis is probably not as in-depth as the other parts.

  5. But some shaders are still really long (a vertex shader of the tracks is 200 instructions long, this is 5 to 10 times longer than you would expect), but I did not reverse engineer them to find out what they are doing. They still use normal mapping (fake depth) and gloss mapping (or something similar), which is still expensive compared to the contribution to the final image.

    This means turning of the track effects/tracers will improve performance on weak PCs?

    • The shader mentioned is responsible for drawing the tracks attached to the tank, not the track traces.

      • And turning track tracers off will probably help a bit.

        Track tracers are generated when they are needed, so the require streaming, and the streaming code of wot is not optimal.

  6. Maybe someone can take a loook into my laptop? It keeps on freezing randomly. It also DCs me from ONLY wot whenever it freezes. Add random lag spikes….

    • Update/Check your drivers, all of them, even the driver of the network device can cause this.

  7. Can someone help me please?

    I have problem with battle loading, i derfraged my drive, updated drivers, lowered graphics and i also reinstaled wot several times, and i tried to put it into other drives but nothing of this helped it still loads arround 20-60 seconds sometime faster, sometimes slower.

    My drive is HDD WD 320GB 7200rpm(if i remember correctly its faster one, definetely not 5600rpm)
    CPU is Athlon (black ed.) 2-core 3.28Ghz OC
    And network isnt problematic too ussualy i get arround 50ms ping

    • Where is your temp folder located? Wot uses it to unpack shaders from the .pkg files (see part 1), this can have quite some impact on loading times.

      • temp folder is on C(48.8GB) while game is on D(320GB) what can i do for better loading time ?

  8. Pingback: World of Tanks Client Analysis (Part 4) | For The Record