How important is software?
Welcome to another techno-babble video which is looking at the always evolving video game development process and how so many factors can effect this. This new generation has been a real good demonstration of how fast things can shift!
Not all companies, teams are ready or indeed informed in enough time to react to this, with time being the single biggest factor in software development on the whole which I know firsthand only too well.
If we look for a demonstration of how rushed - or at the very least - premature the now gen consoles where launched we need to look no further than the game that set a sad level that has been repeated far too often already this generation, Battlefield 4! This was a game that was in development since 2012 which would have been a PC developed game with joint PS3 and Xbox360 concurrent project teams. With the PS3 being such a unique system from its architecture this means that not only code but actual entire methods have to be severely altered to work at a level that is sufficient against its peers. The 360 also has a more left of field design than a standard PC with it again like the Sony machine non x86 CPU (PowePC) and memory configuration. Being a precursor to the XboxOne schematic it also has a unified pool of GDDR3 RAM - not DDR3 as the X1 - along with a secondary fast cache of on chip Edram that sports 10mb that is used for the AMD powered GPU as a fast storage area for its work mostly AA , Depth and Alpha blending. The PS3 sported the much less extravagant and old school Nvidia RSX chip that lacked not only the amount of RAM available to the X360 but also its biggest leap was it unified Shaders that allowed the programmers to allocate the ALU's as needed thought the render pipeline, this now being the de rigueur for all current GPU's with the RSX having an older fixed or independent state hardware meaning that at points as always in a render process resource was left idle as it could not play a part in the cradle to grave state of Rasterisation.
This was then - by necessity - offset by using the far more powerful and ahead of its time Cell CPU to pick up the slack from the weaker GPU. The processor was a pre-cursor to modern GPU structured methods with it being designed around multiple processing cores that manage work concurrently with its own dedicated block of 256mb DDR3 along with its own scratchpad or cache to allow each SPU - of the 7 available on the machine 1 used for the O/S and 6 for the game! sound’s familiar I know - to work in its own data set before passing back to RAM or GPU if that was the work needed to be either rendered on screen or processed, these all being handled from the Main CPU (PPU) that managed them. This required a lot of structure in RAM design and contiguous allocation with space being small (256kb SRAM) per core for all calculation’s that is also visible to the PPU main core. With them being SIMD (Single Instruction Multiple Data) Vector units great at processing lots of data concurrently. And you can already see how this makes a huge difference from the X360 and again back to the main PC that is set-up with an x86 CPU that is connected to its own cache on chip along with a pool of system DDR3/4 and then the discreet GPU having its own split off pool of RAM (VRAM) most likely if bought in the last couple of years would be 1-2Gb of GDDR5 but some older cards could also have the much slower DDR3. This split allocation of RAM between system and GPU mimics the set-up of the PS3 but is not like the X360 or current gen that all have a unified pool of RAM used by both CPU and GPU. These are just some of the very basic structural differences Dice or any developer that has to make cross platform games needs to work with. Throw in entirely different language and CPU benefits with code on the last gen machines not having hardware managed branch prediction - or at best a very poor level - which is how x86 Out Of Order CPU's work allowing them to better - but not always mind - predict where a branch of a piece of code is most likely to lead thus what data will be needed in the cache when that hits. This pre-fetch method based on an If statement means that programmers can worry less about being prepared for MEM copy when this happens, this is one simple example from the last gen machine which means branch prediction is poor to nonexistent and on top they are In Order so it has to process the jobs as they hit in order received. With now Gen/PC x86 able to skip or reorder code Out Of Order to how the instructions were received. Meaning that code on the older machines had to take this into account resulting in software prediction being implemented across all code otherwise bad and very costly LHS errors can occur! And stalling can get very messy very quickly, but I will digress too far down a wormhole here so we shall cover some of these areas another time in another article.
My point here is to show how vastly different it is for developers to get a game, engine or any code up and running on any machine let alone the multitude that many have to work on. This gives you an example of how complex even a PC/Console development can be, compounded by adding in cross-gen platform development, brand new machines with early and incomplete SDK’s you can see the struggles that can come from this. The first thing is the decision to release rarely falls to the developer with the publisher driving this but no matter who or why it happens the results can be annoying at best (save’s not working, occasional stuck in scenery) to total game breaking (Loss of connection, no matchmaking, no servers, falling through falls, the list goes on). And the hall of shame this generation has been longer than it ever should have been from, BF4, Unity, Halo MCC, Drivclub and more that have had issues that affect the enjoyment or even use of the game which with the amount of delays we have seen over the past year or so it is a lesson I am sure many companies have now learned the hard way, with big hitters this year already being delayed like Uncharted 4 in 2016 and soon to be formally announced most likely Quantum Break, and as frustrating as this may seem it is far and away the best plan.
But these have not only been reduced to large bugs like above, they can also be for games that have not been completed or optimised yet. We saw at launch that Black Flag on PS4 had a near day 1 patch that not only improved the AA on the game but also increased the resolution 40% to 1080 from the then current 900p it shipped with, the XboxOne did not receive this same update aside a better AA patch. This was a huge improvement post going gold but it was not alone, COD Ghosts had its resolution improved over 2 times from its 720 launch resolution up to a native 1080p again the same as the X1 had to stay with. But the issues with the Developer environment clearly evident at the time this was one of a list of bad games for Microsoft’s console that showed a much larger gap than was evident in the hardware sheets – thanks to late API and the heavy Kinect Reserve -. Now if these came about due to the time frame or a PR exercise by the relevant companies to minimise sales loss is an unknown but we started to see the beginning of what we have now become accustomed to, one that I and many knew was coming. The day 1 patch has become a common occurrence now with the child on Christmas morning awaiting the surprises contained inside, will we see a Resolution bump, performance boost or extra effects added in. This has become so common in-fact that getting a game with no Day 1 patch is more of an odd occurrence than the other way around, sad but true. With all this covered with some background for you all I think if not excusing why these things happen it at least can explain how and why. But I will cover more on this area with my GDC articles that I am working on at present.
With all this in mind we have now come to accept that we no longer have final game code in our hands when we pick up the disc. Instead we may get 1 or more patches that fix these or more areas of the game, deadlines and budgets can be tight, with smaller teams that do not have vast amount of experience on the hardware or even coding in general. Developing games across PC and console has all of its own challenges some I have covered above, differences in API’s from DX path to PSSL or GNM(X) of the PS4 this all adds to extra work, space in the code along with the development process. What works well in 1 may have issues in another this balance and problem solving can make smaller issues much bigger.
As some will know I have a section called Final Verdict where I have a final visit on the game, hardware or whatever it may be post launch to see where the game now resides with these patches applied. My Driveclub re-review did this (a game that is now receiving additional modes like replay’s, buggies not to be confused with what we are covering here), again AC Unity had both a console and PC version to cover how it ended up. Console’s achieving the parity so requested by Ubisoft in the end with resolution and performance ending up the same, with the PS4 having launched with an Unlocked Frame rate that I covered with my video showing that it was a few suffixes behind the XboxOne edition. But now they both perform around the same level capped at 30fps with a 1600 x 900 resolution with many lessons learned on the engine that will help make Victory the AC2 of this generation – My prediction no fact in this – helping redeem for this. The PC version also gained a decent performance patch that helped with the AMD side but like consoles was in no way a positive reflection on its launch or final state, a situation amplified by the announced Tessellation patch for Nvidia cards that as I predicted in my PC video never happened.
FarCry4 had its share of trials with the launch version on PS4 sporting some lovely sun filled beams from the Gods that never appeared on the XboxOne version, but come the first patch on the game this also disappeared from the PS4 leaving the 2 versions aside the resolution difference pretty much identical. But the performance was another issue with them both being a solid 30 unless cross country travel was required when it could stutter on both as these loaded in but the X1 was slightly worse overall. Unlike the PC version which suffered heavy stutters that could be alleviated if you dropped textures to medium on lower cards (2GB) or high on bigger ones. The MipMap texels causing this with the game using Virtual texturing for the expansive assets and world an article I will cover later along with the rendering of the World in FarCry which is an impressive game in many ways considering the limitation put on the team by its cross-gen roots, something the developers have admitted themselves as I have said before many times. But the PC got some patches that improved its performance, Nvidia Fur got patched in after all but performance on all never changed drastically and aside the Texture issue it was a solid performer so long as you have a very good spec PC with even a cap to 30 on my AMD machine never being as solid as consoles. But a few patches later we saw the God-Rays return ( Screen-Space Crepuscular Rays) to both PS4 and XboxOne, these not being the same as the God-rays on PC from Nvidia that are volumetric in nature but can vary from nice to washing out a scene, both sets adding in a nice but ultimately superficial benefit to the game, albeit a pretty one. In addition point lights from fire where also added later after some more time to finish that you can see here as no light source present but these are now in place on PS4 and Xboxone. As like the loss of GodRays these come at no performance cost to the game across both and again highlights the single biggest factor in software development...time!
Well we have seen more than just this, with Dying Light also having its share of patches, with the Dev working on the PC base DX11 game this saw the first set of patches some that came from the vocal minority of the PC community ignorantly decrying the games performance woes when you upped the Slider to full even on i7/GTX980/R290X machines. The simple fix was to half the slider so that 50 is now the new 100 and everyone was happy with the “huge” performance boost on the same machine. Again highlighting the lack of any real knowledge or insight into this other than “Can I max it” which misses entirely the point of PC gaming and that is choice and scalability, knowing that you can make sacrifices based on your hardware and desire. Looking to Max everything on a PC is to miss the point entirely not to mention futile unless your pockets are endless and patience long with this still being far from a guarantee. But they listed and changed this, fixed some of the bugs like save issues, turning off the film grain. And with mod’s you can also turn off the CA if it so offends all the while enjoying the vast world of rotting enemies. But AMD machine’s suffered badly with this game and performance was very below par at launch, but it was another Nvidia linked game so this would have helped on the driver side greatly.
But the consoles also had issues as I covered in my Head 2 Head and Preview, draw distance was lower than the lowest on PC, PS4 had little Anisotropic Filtering on textures along with no Dynamic Light sources from cars or burning objects, instead handled with a Billboard bloom texture wrapped around the object. The PS4 version also suffered from a 30 Cap glitch that meant the frame-rate could jump up and down introducing judder and pacing issues into the game actually making the 30fps feel worse and was a pain. But cue some patches and what do we see now, well first thing is AF is now increased to what looks to be 8x AF across the board, making textures look much cleaner and benefiting the crisp 1080 display. Also LOD has now been improved and looks to be a bug fix with the LOD now looking much closer (see identical) to 0% on the now current PC slider. See here with the Launch version having no building in the centre and the missing of the Poster in the wall and windows. Again here against the PC version on 0% you can see the view is identical, with the Maximum (as was per launch true 100%) showing more tree’s and even what looks to be object adaptive tessellation as here on the Pipe which the patch to half this removing any LOD levels at all with everything being LOD0 hence the big performance benefit seen when this was chopped back. You can see as I walk closer on PS4 this extra geometry is drawn in.
But the benefits do not stop here now having full dynamic lights for fires, cars and burning zombies adding not only another visual treat but a very welcome one that makes a big difference to the emersion in the world and a very pretty world that Techland have created. With all these improvements now shipped it pretty much answers the same question that time and development can be difficult and costs have to come, here the Console version (or more so the PS4 version in this case) seems to be the later priority and we are now seeing these improvements, again showing that the DX11 or 12 migration tools/methods to GNM or GNMX need a little more effort than many expect. As per my last theory on DmC this is a situation that we have seen a few times and may be an API issue as I surmised or a combination of these things with time and team being evident here. But they have done a great job and very commendable keeping the game updated with much more to come like vehicles, possibly new areas which is great. But has this all come at a cost on the performance, well we know PC is as launched with better LOD than console being static with the chopping back only improving performance but has it lowered on PS4. NO is the simple answer, in fact the only thing that has happened is the Cap looks even more buggy now with the lock slipping off very frequently. Now these sudden and short On – Off –On -Off moments can make the game feel like it is dipping below 30 but it very, very rarely spends any time not North of that. As you can see here the frame-rate just keeps shooting up and down rather than simply staying locked. At this point even removing the cap so it can most likely hover around the 40-50’s if not full 60 which would feel much better, and would most likely run around the level of the now AMD machine which struggled to stick at 30 but now running around the mid 40’s making it feel much smoother and with V-sync enabled it is far more enjoyable. This is a great example of frame-pacing that I have mentioned before; you see your brain is good at filling in the blanks so a regular set pattern is better than a faster but sporadic one as evident here with the PS4. Presenting a new frame every 33ms means that on a normal 60Hz display – See 60FPS – the screen presents and then holds the image for 2 frames before presenting another one. In a 60fps or Hz game this means that every refresh is met with a new frame. So you get 11 22 33 44 55 or 1 2 3 4 5 6 7 8 9 10 dependent on the games rate. What you see here is these frames presented at varying intervals of 33 or 16ms so this becomes a 11 23 45 66 78 89 and the game judders as you can see this and more importantly your brain notices this and cannot fill in the blanks as well so it feels worse because the flip is so short lived as it happens no pattern is ever present. If they work on more with the game I would really recommend they fix this issue and either uncap for the speed (unless any PR issues get in the way) or fix the cap so it never goes above 30 as it can be annoying when it occurs. But overall the game has improved a lot now the team have had some more time to work on the code. See how Second Son or here with First Light that runs an Unlocked Framerate allowing it to run around the 40’s-50’s and with the V-sync enabled it is not only very welcome but feels much smoother and fluid, just as the now updated AMD PC version now feels and it is a shame that this is not an option in more games but whereas 1St party can do this 3rd party have far more restrictions in place and marketing deals can all effect many aspects of a game so we will have to see which solution Techland take on this.
But this is not the last of our latest catch up brigade, GTAV has also seen some patches adding up with a few that also show that launch date is more important than many things, but not classing GTA as being in the Broken launch games by any means. But with this being a PC port onto now gen machines in-time for another Xmas launch both versions although offering up some good improvements had issues. The XboxOne version hitting a native 1080 display but in firefights this could take a dip below 30 that could be felt, a problem the PS4 never really had along with better foliage in areas than the XboxOne. But the PS4 did have a problem with driving, and this was pretty bad when playing but here with my frame analysis you can see it can dip down to 23 and this is very choppy and can happen for prolonged sessions at times. The X1 could also have dips when lots of CPU work was happening it could spend prolonged dips just below 30 but was overall far more stable in this regard. But again we have seen some new patches and now we a nice smooth and locked 30fps on PS4 and by the looks of things aside the heavy firefights (But I have not had chance to test thoroughly) on X1 also. No driving across town at full pelt is delivered with a smooth and consistent 30fps which is very welcome, making the game feel much better and solid. No matter being chased or heavy action we now have a solid improvement, in-fact we are looking at more than 20% if you want to throw some bad boy stats at it. And this is welcome and again just shows how time, budget and most importantly software can make huge differences, hardware is important but not to the level of software.
We have seen many examples like this, Destiny Beta on X1 was 900p but a few months later with some SDK updates and Kinect release it shipped with a Native 1080, better effects and even a more solid framerate. Now before you say but the Kinect power did that ~10% back at stages in a frame is not delivering this kind of huge improvement, this was MS engineers, Bungie coding well and software solutions that fixed this. Even games that come from the same engine can see big improvements in a year or so. See COD ghosts here on PS4 with its final native display it still can drop frames and tear with it looking just like the last gen port that the PC received it was, jump to AW on PS4 and the game looks like a genuine leap on, with texture quality, animation, Post Processing effects all making it look even worse than it already did with the performance being about the same give or a take. The X1 with its lower resolution in SP and MP performs slightly better but it does tear when this happens with its adaptive V-sync in place with the PS4 simply holding the frame no matter how minimal the tear using full V-sync but in MP this is not an issue with a rock solid 60 on PS4 and pretty much the same on X1. Again Hardline even though it has not made huge strides in the engine aside the Screen Space reflections and better PBR as per my analysis one thing has improved from BF4 on the same machine and that is the performance is more solid in the 50’s than on the launch game as you can see here with a head to head comparison of MP showing that although not much has moved on they have at least balanced the load better within the constraints of the engine and CPU’s, again another example of software development one that will show I am sure bigger strides this year with Star Wars Battlefront from Dice with the same but improved engine.
This will continue and is always the case; last gen saw this with game's like Uncharted having Motion Blur patched in (along with control changes from feedback) amongst others. I will continue to cover games that have later patches that add, improve or maybe even degrade quality/performance as often as I can, along with me looking into covering some retro-analysis on games as I have been asked so please if you would like me to do this, please drop a comment below with your thoughts and suggestions on games to re-visit.