
I noticed once that on my computer the maps in WoT are loaded for a very long time - more than a minute. You come in, sometimes, into battle, and he has been going on for about 30 seconds. And sometimes you even find your tank in the form of burning debris. My computer, of course, is old and has long been asking for an upgrade, but first you can try to do something programmatically.
So, the first thing is to determine the cause of the brakes. The list of suspects, in principle, is not very large:
- CPU
- Ram
- HDD
- Network
- Kryvorukost game developers
- Barabashka
Let's start operational search activities with the confrontation. We take an excellent utility
Process Monitor from Sysinternals, we launch, we add to the filters the monitoring of the process worldoftanks.exe and - let's go. We start the game, start the battle, wait for the map to load and look at the monitoring results.

As you can see from the screenshot, CPU, memory and network usage is far from the maximum. But the HDD download schedule is very uneven, there are peaks and dips. Let's take a closer look. Click "Tools-> File summary ...". Bingo! Here we see a whole bunch of input / output operations (70,602 pieces, to be exact).

The total amount of data read during the data loading is approximately 450 MB, the time of file operations is more than 50 seconds. This means that file operations take most of the time the map loads. It is no wonder - in WoT well-developed maps, models of tanks, all kinds of houses / trees / stones. 450 MB of readable data looks like the right price for all this. But how can we speed up loading time? After all, all this data the game anyway you need to read. There is an old proven way to speed up file operations - a RAM disk. But here's the trouble - in the forehead to apply it will not work. The game takes 11 GB, and on my machine only 4 GB of RAM. That is, even creating a RAM disk of 11 GB in size and putting the whole game on it, I will not deceive the laws of physics and the operating system - the disk can and will be created, but the data on it will be transferred to the same hard disk that we want to use. Not an option.
Well, let's dig deeper - let's see which files take the most time to access. Open the “By folder” tab and see the following picture.

Most of the resources eats access to files in the folder% World_of_tanks% \ res. Here you can select the following subfolders:
- audio: 14.48 seconds - folder takes 200 MB
- content: 9.93 sec - folder takes 844 MB
- spaces: 6.19 s - folder takes 419 MB
- vehicles: 8.60 sec - folder occupies 1.7 GB
If we could put the files from some of these folders into memory, the loading of the map would be much faster. For example, by placing files from the audio and spaces folders into RAM, we will win 21 seconds of time at the cost of 619 MB of RAM — quite well. But in the forehead this cannot be done - how can you explain to the game that some of its resources lie here, and some - there? In this place I already wanted to hit hard hardcore in the
spirit of Harkonnen 'a:
- We load the necessary files into memory
- With the help of some Microsoft Detours or ApiHijack, we hang hooks on the CreateFile, ReadFile functions (and maybe something else) in the process of Worldoftanks.exe.
- In the hooks we determine which file is trying to read WoT. If one of ours - we give him data from the memory, if left - we transfer the call to the real functions of file input / output.
But, unfortunately, it did not work out - an idea occurred to me that allowed me to do everything at times simpler and by this spoiled everything :). The idea was that, say, it would be cool in this place to be a user of * nix-systems, where there is an excellent mount command that allows you to mount anything anywhere. In Windows, this is not ... Or is there? Some vague memories soared on the periphery of consciousness, and I reached into Google’s head for information (when the guys from Google finally did a search in my head — something was completely lazy!). So, this is what we have under Windows:
- subst - does exactly the opposite of what we need. Allows you to create a new virtual disk, the root of which will be the specified folder. And we need the opposite - to link the existing disk with the "virtual" folder.
- The method described in Microsoft KB 307889 - at first glance, does what we need. Allows the NTFS file system to create a connection between a folder and the root of the disk. Beautiful thing, but, unfortunately, did not work with my RAM-drive (even when I formatted it in NTFS).
- Finally, I decided to search where I should start such a search - in the list of utilities from Sysinternals. And, of course, there was what I needed. Utility Junction allows you to mount to a specific folder any path in our file system (there is another similar one - linkd ).
Thus, the final algorithm looks like this:
- Take any RAM-drive (for example from here-this list ). I took this one .
- We think how much RAM we can allocate for caching.
- We rewrite the folders with the game resources on the RAM-drive (we rename the original folders - we still need them).
- Using Junction, we mount folders on the Ramdrive in the game resource folder. Something like this:
“J: D: \ Games \ World_of_Tanks \ res \ audio r: \ audio” - Start the game and enjoy.
By the way, all these points can be implemented in one batch file, and in the second - a rollback of everything back.
')
Of course, in this whole matter it is important not to overdo it, so that the volume of files on the RAM-drive does not become so large that the OS decides to use swapping - then the whole idea goes to hell. But that's what happened with me:

The time for accessing files in folders on the RAM-drive dropped to almost zero, the map began to load much faster, I began to appear often before the start of the pre-launch countdown, to have time to exchange a couple of phrases with allies before the battle began. In general, what I wanted - I achieved. It is a pity that it was not possible to dig deeper into the depths of the game and use hooks - but my method does not violate the WoT license agreement, which is also important.