Resolution Gate is back and this time its Assassin’s Creed: Unity that is in the spot light. Ubisoft is no stranger to upset gamers, and to be fair there really is no right approach to take because of the parity between Xbox One and PS4 hardware. I was reading that Ubisoft has rescinded their earlier comments and stated that the 900p resolution lock is due to the the game being “CPU Bound” and nothing else. And it is here that I thought I would give my two-pence about a statement that seems inaccurate to me.
Ubisoft Assassin’s Creed Unity, 900p Resolution Lock due to weak CPU? Here is the second (technical) opinion
In the PC Gaming Industry, the target audience (PC Gamers) is usually very very knowledgeable about the technical aspect of their rigs. This stops AMD and Nvidia from attempting to use obvious marketing gimmicks, and when it does happen, the companies take reasonable flak for it. Sadly, however, this is not the case in the console Industry where gamers on average do not have the technical know-how of their box. This leads to technological jargon being wielded as a marketing strategy against consumers who would take the ‘tech explanation’ of a company as nothing less than fact. Before we continue, lets back up a bit and lay down the basic points of the case as they were. Here are some relevant extracts taken from VideoGamer.com‘s exclusive interview:
“We decided to lock them at the same specs to avoid all the debates and stuff,” senior producer Vincent Pontbriand told VideoGamer.com on 6th October 2014. Some time later, the statement was redacted and the following was offered on the official Ubisoft blog: “I simply chose the wrong words when talking about the game’s resolution, and for that I’m sorry.”…”Ubisoft does not constrain its games. We would not limit a game’s resolution. And we would never do anything to intentionally diminish anything we’ve produced or developed.” Source: Ubisoft Blog
The above is then followed by an exceedingly long explanation of why the resolution being locked to 900p on both consoles is due to completely technical reasons. If you were to summarize the entire piece you would get something along the lines of ‘ this game is CPU-Bound because we are rocking an incredibly high amount of NPCs, which resulted in both consoles not able to go above 900p’. Everyone here with me so far? Now, this is where I will quote some facts. Anything I list down here is easily verifiable if you happen to have the time to Google for it.
Both the PS4 and the Xbox One APUs feature the same (2x) Quad Core, x86 Jaguar Based Processing
The PS4 GPU ‘Pitcairn’ is roughly 40% faster in terms of raw GPU horsepower. (1.31 TFlops Vs. 1.84TFlops)
The Xbox One CPU has a higher base clock of 1.75Ghz (~150Mhz more than PS4).
Both consoles have an RTOS and therefore ‘to-the-metal’ access to its hardware.
Now here is the thing. The decision to lock both consoles to 900p is attributed to intensive CPU usage. But this is the part which is not entirely technically accurate in my opinion. In CPU Bound situations, increasing the resolution doesn’t really affect the frame rate since the output isn’t being limited by the GPU. The graphical settings and the resolution at which the frame is rendered are almost entirely the domain of the GPU. Note that the the final output frame is rendered by the GPU. The only thing a CPU is doing is processing the logic of the game and issuing ‘drawcalls’ or ordering the GPU what work to do in laymens terms. In the case of a GPU Bound scenario however, lowering the resolution can do absolute wonders.
Let me explain a bit further. Imagine a scene of Assassin’s Creed: Unity where there your camera is over a rooftop and you can see hundreds of NPCs on screen. What is happening behind the curtains is that the CPU is calculating the scene infront of the camera and sending the drawcall to the GPU. Basically, its number crunching. However, the resolution does not come into effect till this point. Lets state hypothetically that it is able to give 45 drawcalls per second to the GPU at a resolution of 1920×1080 (1080p). Since we are dealing with an RTOS here there would be negligible bottlenecking on the software side and your GPU would get the information necessary to render a frame exactly 45 times a second.
If you were outputting to a 640×480 frame (something that would make modern GPUs Idle) the CPU would still have to do all the necessary calculations for the entities on screen. Increasing just the resolution (and keeping all the graphics settings same) would theoretically have absolutely no effect on the output FPS! The increasing frame complexity will be easily handled by spare videoprocessing capacity. So you get one more fact here:
1. If Assassin’s Creed Unity was 100% CPU Bound, increasing the resolution would make negligible difference to FPS on both the PS4 and the Xbox One.
Notice however that I said theoretically. In modern era the usual rules are becoming increasingly irrelevant and there is no such thing as a purely CPU-Bound title. You can have a game that is relatively CPU Bound, but you can never have a game (defined as a commercial title) that is 100% bound by the CPU. Only in extreme cases (A low end Intel Pentium 4 paired with a GTX 980) can you actually experience pure CPU bottlenecking. What would actually make a difference to the CPU is not resolution but rather FOV (Field of View). A lower FOV would mean less entities on screen for the CPU to process and therefore less numbers for it to crunch. A higher FOV would mean exponentially more (if your camera is on a rooftop) entities for it to render and therefore an increasingly CPU-Bound scenario. Still confused? Take a look at the following images I rendered in a hurry:
(Helpful Note: Click on the ‘i’ to enable captions and/or click on the slideshow to open lightbox fore easier viewing.) The first frame depicts the calculation done and the drawcall which the CPU sends to the GPU. The same scene is rendered at 480p and 1080p respectively. As you can see, the instructions sent by the CPU are the same, the results are not. Now notice the next set of slides:
Here the FOV is drastically increased and the elements on screen increase along with it. This increases the work of the CPU because it has to calculate more entities, and the GPU, because it has to render more polygons. I.e resolution has almost no effect on the load of a CPU but has a major effect on the load of a GPU. Therefore decreasing the resolution of Assassins Creed Unity, if its fully CPU Bound is pointless. But like I said before AC:U is also GPU Bound, which is why its locked to 900p. The reason for this could be that both consoles perform poorly at 1080p but the probable reason is that it performs poorly in 1080p only on the Xbox One and the original reason provided by Pontbriand was infact, the real reason.
Assassins Creed: Unity is, relatively speaking, a dominantly CPU Bound Game because the NPC logic processing is extensive.
Since the game is resolution locked to 900p, and we already know that resolution makes no difference to a fully cpu bound game, then, practically speaking it is also GPU-Bound, which means that:
It would almost certainly net more frames per second on a PS4 than on an Xbox One under the same settings or the approximately the same frames per second under slightly higher settings (or resolution).
— Usman Pirzada (@usmanpirzada) October 11, 2014