Performance and benchmarks

50% is actually your canvas resolution(1080p), zoom works as an internal resolution rendering.

I finally did a test where I was looking at the individual processors. As expected, as others have reported and as we know, definitely one core getting impacted quite a bit more than the others. I’ve circled in red about the time the benchmark test was going…

Seems a tad weird that it was maxing out/hitting the top of the chart on that heavily impacted one on occasion

To try to settle the question of how many threads the game can use, I have just run a load of tests with different affinities. If you set the affinity of the Steam process before running the game up, the game will have the same affinity that you set for Steam.

Explanation of the affinities:
1 - 1 thread of 1 core
11 - 2 threads, both on the same core
101 - 2 threads on two different cores
111 - 3 threads, 2 of which are on the same core
etc

Hopefully these results make it clear that the game can use more than two threads, indeed it even performs a little better when allowed to use all 12 threads compared to being limited to 6 threads on 3 cores. As expected, 101 is much better than 11, i.e. if it can only use 2 threads, it’s much better for them to be on two different cores. 1111 actually performed worse than 111. The game clearly has mechanisms where it can split activities across more cores, but this can in some circumstances make it perform worse if the overhead of splitting the work exceeds the benefit. It will also depend on what activities end up on threads that are on the same core. My suspicion is that some of the score variation that people see between different runs of the benchmark could be eliminated if the game avoided using multiple threads on the same core.

Note that I’m not saying the game will always work in this way. The fact it worked this way in these tests shows it is capable of working this way, but doesn’t show that it will always work this way. Without access to the source code, we can’t know what algorithms it has to choose how to divide work across threads and cores. So if it works differently on your PC, it doesn’t show that’s the way the game always works, you’ve just observed a different one of the multiple ways it can work.

As an example, there were major problems with the 5x00X CPUs and Warzone working badly on them unless a config file was changed to set a different affinity. The game was defaulting to different affinities for AMD and Intel CPUs.

3 Likes

Writing the above post gave me an idea. I tried 101010101010, i.e. giving the game 6 threads to work with, but all on different cores. This gave the best score, 1265:

3 Likes

Once more the game only uses one core and half of another for sound and devices, the game might use more cores when loading textures or filling the vram while opening it, but the game while being played it uses one single thread, you are still using wrong the task manager i can put screen with my 16 threads being maxed out and i can claim it is the game using all of them…

This is not an internet theory that is how the genie engine works from vanilla game and guess what it is the same engine for hd and DE, they couldn’t make the game to use multi threading, only aoe 1 DE got that but this did not.

There might be something wrong in ur end if you have more cpu usage while playing the game, better run the antivirus, be sure no one is mining with your computer, double check the windows defender real time protection(it scans all apps when launching).

Also if you notice a higher score, you should know that ryzen and intel have strong cores and relative slow cores, setting affinity to one strong core would give you better scores than letting windows to choose randomly, that is all.

One more attempt to show that the game uses multiple threads. Indeed it turns out it uses rather a lot of threads. Anyone can check this for themselves by running Task Manager, going to the Details tab, right clicking on any column heading, choosing Select columns, and checking the box for the Threads column. You will then be able to see the number of threads the AoE2DE_s.exe process is using. I’ve shown the result when running the benchmark in the image below, along with a view of the individual threads using the free sysinternals process explorer. The threads shown in the top middle list are all threads of the AoE2DE_s.exe process, as shown in the title bar.

I set the game to only use the 1st, 3rd and 5th logical processors. As it has 12, each one is 8.33% usage when maxed out. You can see that the game has 2 main threads, which account for the close to full usage of logical processors 3 and 5. There are then many other threads, and the ones visible account for 33% use of logical processor 1, with many more threads below those, i.e. it’s in line with what is seen in the graph on the right. The usage of the other logical processors is not the game, but is reasonable for running those monitoring applications on top of the benchmark.

I also asked a developer, who told me that while the game uses the original engine, it has been extensively modified for this game.

As I said, anyone who wants to verify this for themselves can easily do so using Task Manager as I described in the first paragraph. Note that the exact number of threads can vary a bit, I’ve seen from 90 to 104.

2 Likes

Great write up. I can also confirm this is technically correct.

However, note that @breeminator points out there are only two main threads, and those threads max out only 1/12 each of his cpu. That is, there are two single-threaded processes which constrain the maximum game performance.

This explains why the layperson’s perspective is that the game is not ‘multithreaded’. A full multithreaded program should have peaks that consume 80% or more of the total cpu, if the game needs that much processing.

When modernizing an existing piece of software, there are occasional opportunities that are easy to convert to full multi-threaded. However, if most users are running older CPUs which cannot take advantage of it, then the project budget may be better spent optimizing single threads or adding new features. Without seeing the code, it would be unfair to suggest the developers are not doing the best they can without a complete rewrite.

Background: I am a professional software developer and have written a number of multithreaded commercial software products that fully utilize the cpu.

2 Likes

Currently i have soms issues with my PC. So i tried another PC. The benchmark is kinda weird. The benchmark test is a lag fest. The PC is also a potato PC. So i didn’t expected anything.

Turned out that the test still ended up as 955, while the game was unplayable. So i tried to benchmark again: 760. No idea why there is such difference between the outcome of both tests.

At least i know i cant play the game at this PC.

That is because the memory gets filled, at the second benchmark the lecture is slower cause of the increase of the pagefile size, using slower storage speed as ram or even vram, so the more test you run probably the score is going to get worse, low vram and ram causes that specific issue.

In the past it was always the other way around: The second test was almost always higher, because a lot of things were already loaded from the first test. So i was surprised this time it was the other way around.