Wednesday, 17 August 2016

Dissection of a Rendering Choice in No Man's Sky

Update: please note that this is now a historical post provided for educational value alone. The patch on 18/8 for PC removed the strong blur pass and fixed the AA settings.

So there has been lots of talk about internal render resolutions and game output this console generation. Is this game a 900p one, does the XB1 get forced down to 720p and then upscales it? It's a good topic for people who care about technical quality (say, all us render engineers who write the often boring code to throw polygons at screens via GPUs) and an endless swamp of people intent on having "heated debates" about their favourite consoles and which is best.

Anyway, No Man's Sky has come out and lots of people have mentioned that it looks muddy or low res, even on PC. Some people are speculating on it being rendered at a lower internal res and upscaled to explain what they are seeing. From everything I can see, this isn't correct but it's an amazing opportunity to dissect what is really going on and why it looks like that might be the case.

Straight off, how the game is running for me just in case this isn't true for you. SSAAx4 (rendering at 4x res and downsampling from inside the game) in the settings straight isn't working at all. No effect. I'm not the only one who has noted this so I'll call it either widespread or a feature that's not actually implemented yet. The other two options are FXAA or no AA. My experience is that FXAA, if it does anything when turned on, isn't the implementation you should have built into this game to make it actually fix aliasing issues. I also assert that anyone using SweetFX or drivers to inject SMAA/MLAA/FXAA into their game at the end of the render chain is also doing next to nothing for their game in the same way that doesn't work when you upscale a game and then apply it. (FXAA looks for the typical shapes [eg L shapes] of aliasing in high-contrast areas and selectively blurs them, but this only works when you've got those shapes as pixel-wide features to find.)

The reason why and the reason why lots of people seem to think this game is rendering at a lower res than stated or is just "really muddy" (as the pros have called it): because there's a 1px Gaussian blur being applied to this game before output. I would explain this is part of a HDR/bloom solution; only it isn't, it eagerly blurs everything, not just highlights. It's a blur on everything that weights significantly from the non-central pixel in the neighbourhood; a strong blur compared to what you normally see in real-time graphics.

And here's the major issue with that: it blurs the scene without any anti-aliasing being done first. This gives a bloom (light for highlights, dark for low features) to every bit of severe aliasing including the thin line geometry and shader aliasing going on. It does soften the aliasing, but this means FXAA can't find it and clean it up because it's no longer a hard line but a blurred one.

"But doesn't the blur fix everything wrong so what's the issue?"

Glad you asked - this is where slicing up what we see in screen captures of NMS really pays off. We do complex anti-aliasing (when rendering, even though it's often pretty expensive and comes with technical limitations that tie our hands) and not a blur because a blur doesn't work right.

Above is an example I generated to show anti-aliasing. It's zoomed up somewhat to make the pixels clearer but that was a clean zoom so each pixel edge is preserved (unlike how you'd normally blow up an image that also blurs it - the same is true of the zoomed in bits of the top image below). Take an aliased line (1) and blur it (2) and you get a bloom around an aliased line. This is a very clear visual and you'll be spotting it in No Man's Sky all over the place. But if you run anti-aliasing on that first line (3) and then blur that (4) we can see how that line looks good under the simple Gaussian 1px blur.

This is why you can't just use a blur: it leads to something that's still very much a stair-stepped but not with clean edges you can fix (it's a right pain to make line 2 into line 4 and AFAIK totally impossible to do that fast enough for real-time rendering; however making line 1 into something very much like line 3 is much cheaper/easier). If you want to run a blur for artistic reasons on your scene then anti-aliasing first will give the blurred line a really great and clean profile. The blur works with the anti-aliasing to give a result that's hard to deny.

A really weird thing I noted when finding this: the blur is always a 1px blur; same when running at 1080p and 4K. But there are twice as many pixels per inch of screen with a 4K render (outputting to the same display) and the scene being rendered is the same for both. The game-distance from any point to any other is the same but the pixel count to get there has doubled.

Why does that matter? It means the higher the resolution you set NMS to, the smaller (in scene size) the blur radius used and so the less annoying (for me*) it is. This i not how you should do a blur if you want it for an artistic effect and means anyone playing at 720p is being coated in a much larger radius blur than high-res players. I find that really helps to recover the "sharpness" of the scene so rendering at 4K and downsampling to 1080p leads to a much nicer scene than using 1080p native, just because there is less blur to muddy the scene.

* And I like soft rendering - if it was a good blur that improved the scene not drew glows around every bit of aliasing, I'd be all for it and the artistic justification behind wanting a blurry final scene for the visuals of this game). I'm one of the few people who thinks TXAA was actually an ok AA solution despite it being very soft. I will take soft and stable (my eyes really don't like visual instability) over sharp and flickering every time.

Thursday, 2 June 2016

Forza Motorsport 6: Apex (Beta)

This is part two of a series about my personal history with the Forza series. This should be a quick review of F6: Apex and speculation about what it may mean for the next numbered Forza game. As you may have gathered from that earlier post, Forza was the series that got me to care about the more simulational aspects of driving and racing games.

And this does need to be made distinct. When I'm playing DiRT Rally, it is an off-road driving game. When I am joining some friends to bash round a track in PGR then it is a racing game. My preference is for the former but I also like a touch of the latter (with AIs or humans - as long as they're not playing bumper-cars, doing anything crazy that can't help anyone in a sim-style game) to spice things up at times. And Forza, Forza gives me both.

By the time I'd stopped throwing dozens of hours into each game in the series, I was driving an automatic with no vehicle assists and the braking line to jog my memory of each track and provide per-car guidance, cockpit view with each speaker talking to me about each wheel I needed to keep on top of. The AIs in Forza 4 and Horizon were pushed up to the top tier but my main interest was in finally breaking past the front AI and getting some clean air to compete with my Car Club for the leaderboard of clean laps in the car class. Earlier events in the career provided more time to get precise with the controls and demands of the tyres, later events generally provided longer races and so the same opportunity to get some clean laps before the end, even with more challenge handling the cars and getting out in front.

Being a cut-down version of the main Forza 6 title, this is about testing the engine for Windows 10 as part of Microsoft's realisation that the vast majority of gaming people they sell something to are buying Windows, not Xbox. So it's not got the progression curve that allows you to get familiar with a vehicle on a selection of tracks before deciding to try another car as you slowly ramp up the speeds and so difficulty. The lack of many tracks is less of an issue because the price tag is free [you can pay cash for unlock credits for the cars - this is a lot less gross in a free product than a $60 game and is also entirely superfluous here as you will unlock every single vehicle]. Rather than unlocking cars with currency, you complete three objectives per event which gives you points and those points in an event unlock up to three medals - your medal total defines which cars you have access to. No purchasing is certainly a very different feel but that plus the lack of customisation (beyond paintwork there is nothing, no custom decals or performance parts for changing vehicle class or even moving inside the classes) left me far more detached from my cars. So the progression curve has been obliterated from every angle - hopefully just an experiment for this free cut-down edition and not a serious consideration for the next retail game. Considering the damage done to the series pushing F2P micro-transactions with a broken curve in Forza 5, hopefully they will keep looking to refine the series to mix progression with constant novelty.

Along with the three optional objectives, which are a nice way of encouraging removal of assists or certain feats while racing, there is a main objective that gates "completion" of the event. Then your completion time and multipliers from the AI difficulty and assists settings adds up for a final event score. There is also a 4th, top score reward which turns the medals into a platinum - it would be nice if this had been set slightly higher as if you're playing without assists then your multiplier will quickly make it trivial to get this once you've grabbed the three challenges. The completion time or a fastest lap time should weigh more significantly on this total score calculation to provide real differentiation as if you've not got a challenge to hit a certain time then it almost seems as if lap times don't matter at all.

This also infects the leaderboards for each event which are now all about your score and not about your lap time. Not only does this replicate the issues noted above about removing the focus on a single clear fast lap from the earlier implementations but it also doesn't even track clean vs dirty. It's just a single event and in that event you'll surely have drafted or done something to dirty some of it so everyone is unclean and it is entirely absent from the tracking. As I noted when recounting my history with the series, this goes completely against my impression of what was the core of the series. The ranking that put even the slowest clean lap above the fastest dirty one.

Not only are Car Clubs missing, hopefully an oversight from the cut-down nature of this game, but the leaderboards that do exist are ranking us on chasing challenges and abusing turns while minimising our assists. Those are still tracked by the leaderboards but as they act as multipliers for the score then they also push the rankings. As I got into Forza 6: Apex then I moved to manual transmission with clutch to enjoy a new challenge and assist both braking and acceleration but the score multiplier is now such that I have to really mess up to do badly on the leaderboards. This seems wrong; I no longer have an incentive to play through the campaign (what of it there is here) with a focus on clean fast lap times or even with the option of seeing those ranked once I finish an event.

I do appreciate that since Forza 4 they have added a new top tier of AIs, pushing me away from "Pro" to challenge myself to be able to cut through the pack and get past an "Unbeatable" leader (who seems to be driving an automatic from what I can tell, which does mean they're not impossible to catch). The Drivatars seem totally unremarkable when you turn off the "aggressive" mode that ruins them but that's a big step up from Forza 5 - although you do have to wonder how a series spent so long working on a system that ultimately basically replicates the AIs before they started tuning profiles to try and match humans. One area where progress is desperately required is the weather and time of day.

The problem with playing games in a post-DriveClub world is we know what fully dynamic time of day and weather provides to keep a track exciting, lap after lap. Now DriveClub was divisive, enough to break some reviewers into fabricating justifications for why they just didn't enjoy it, and wasn't aiming for the same level of sim as Forza. But every time I went to a night track or had to adapt to the deep water on a rainy tract in F6: Apex, I wished for the more dynamic way that DriveClub handled it. "You can lock it down to give you something to learn precisely but the game excels at making sure every lap can feel a bit different to keep you on your toes." This needs to be part of the next Forza. We deserve to be able to learn that a couple of laps into a 4pm race on this track then corners 4 and 6 will involve being blinded by a low Sun and for that to be a dynamic feature, not a static constant. The deep water here is great but how much better would it be if it came or went depending on conditions as you took a 10 lap event on the track. Bright day turning into pitch black with track-side lights to help guide your progress as your headlights fought against snow or fog that has just rolled in: this is something we can have with modern engines with no pre-baked lighting.

There is great potential for the series here. A full game that steps away from some of these issues noted (some of which will almost certainly be rectified by a retail release with enough content to justify the price) could not only recapture any lost fans but also grab at all the PC fans of driving games or people who had a PC and a 360 but now only have a PC and PS4. The visuals are slick (perfectly fine on a GTX760) and the dynamic settings keep the main game's frame-rate up, even if it sometimes has to make the rear-view mirror into a slideshow to maintain it.

As to the base game: make the challenges and event points about buying car unlocks, not leaderboards; bring back Car Clubs and a focus on clean laps; add a fully dynamic system for track conditions; push in the expected features (multiplayer, visual and parts customisation, cars and tracks, a full career progression) and Forza Motorsport 7 for Windows 10 could be something to get very excited about. As a free preview, this does more than enough to justify anyone downloading it to take a look. Those with a racing wheel should keep an eye on the development blog for when that support gets added into the beta.

Wednesday, 25 May 2016

My History with Forza

[Getting to] Forza Motorsport (xbox, 2005)

I initially played a bit of everything: from Destruction Derby to Carmageddon's focus on more combat than racing, from the more pure experiences of the endless Need for Speed titles to Screamer. If it arrived on PC, I probably had a go on at least the demo. On the MegaDrive it had been the likes of Out Run, Virtua Racing, and Super Hang-On that kept my attention. But, by the time Forza started out, I'd settled into some early-2000s series that stood out. Burnout was just getting started, pure arcade handing and innovative exploding puzzles. Midtown Madness was going back to the more open checkpointing of something like Carma that later defined Rockstar's racing attempts, amongst others.

Sega GT didn't quite connect for me but the Dreamcast had been where Metropolis Street Racer and San Francisco Rush 2049 took hold. The more relevant of those two to Forza, MSR had also spawned two Xbox sequels under the Project Gotham Racing name before Forza even arrived, and PGR3 was known to be coming for the new console out that year. While not aiming to be realistic, PGR had helped teach me I needed surround-sound for driving games just to hear where the car behind me was before a corner. Those lovely drifting corners that felt a million miles away from the arcade grooved arcs of Mario Kart or Ridge Racer.

The other series that was letting me know the importance of audio positioning was TOCA Race Driver (later named GRID). Two games deep before Forza arrived, this was where I probably first got a serious taste for something less arcade-y. PGR was at least demanding you brake for the corner and plan your trajectory, but the TOCA games pushed that a bit harder and asked that you not sweep the back end out as you did it if you wanted to keep pace. By no means a sim, they did expect a bit more and set those expectations on real-world tracks - something which allows driving games to tap into your memories even between series as you know every corner of a track layout after playing it over several different series.

Finally, I can't end this pre-Forza introduction without talking about RalliSport Challenge. Where Colin McRae Rally had never quite captured me and Sega Rally had been some fun I possibly didn't fully grok at the time, RSC felt like it arrived just in time for me and was everything I wanted from a timed challenge on a set of tracks you needed to learn. Like PGR2, RSC2 leveraged the new Xbox Live system for online and, crucially, leaderboards to compare my times to everyone I knew. I still read lots of references to the series as a high point for rally games and there are a lot of giants in that genre it competes with.

I enjoyed the original Forza well enough but I wasn't throwing tens of hours into the series on the original Xbox. Therefore, I don't actually have particularly strong memories of the first game, possibly in part due to it coming at the very end of the generation. Likely more relevant was all the far more arcade-y racing and driving titles I'd played before this, detailed above.

Forza Motorsport 2 (360, 2007)

This game seems to be seen as potentially a slight low point in the unbroken chain of the initial four numbered titles. Moving to a new platform but without radically pushing forward from the original strong showing. My memories of the game are of a launch window 360 that was dying by the summer of 2007. My online profile doesn't even record that I played this game, because the networking had already died on my 360 before it arrived. Offline only, leaderboards were gone.

But I continued to enjoy the series with the difficulty assists on (effectively arcade-ish mode), but now really taking advantage of that dynamic racing line that allows you to learn a track without being terrible at each corner before you get a feel for the braking point you need for each car. An assist that allows you to drive at least somewhere close to passable on your very first attempt at a track: these are the teaching touches that let me really get into a game. Rather than making the game easier, it removes a stage of forced memorisation from being good at taking each track with each car.

Of course, trying to go back now is rather challenging. The AI instantly feels retro, with their driving a lot closer to being that classic on-rails (and non-reactive) design than later iterations. Just at the very basic level of controls, Forza 2 forces you to unlearn use of the clutch, because there is no manual with clutch option so the manual control arrangement puts the handbrake where most players now expect a clutch button. There are no in-car views to drive from (to perfectly spacialise the audio feedback for surround speakers and give an impression of the car's corners). Quality of life additions like rewind (to reverse a mistake or an AI blindly ploughing into you as it doesn't react to your clear positioning) and a career progression that focuses on providing choices (or even just race competitors that always correspond the car you bring to the track) is also very noticeably absent from the package.

It was later while I was first playing Forza 2 that the console finally gave the final white flag, the Red Ring of Death that got it swapped out for a warranty replacement by Microsoft. Bad memories, even if mainly by association. By the time I was ready to dive back in, the sequel was arriving...

Forza Motorsport 3 (360, 2009)

This where they really got me. This is the start of my phase of easily dropping 100 hours into a Forza game upon release and then going back for more every now and then until the sequel had arrived.

Just as Forza 2 had made the racing line a dynamic indicator to avoid needing to memorise braking points for the standard racing line, this game added the rewind assist. And what an addition that was, even if we'd already been playing games that gave limited access to that feature from Codies the year before. TOCA Race Driver was now without that brand association and called GRID but in 2008 they came out with Flashbacks - a rewind that meant if you messed up a corner then you could go back and try it again. Turn a race-ruining mistake into a second chance to keep going to the finish line. Colin McRae Rally was now called DiRT and also added the same assist, giving Codies two runs at the formula before Turn 10 had a chance to release their attempt.

The difference here, compared with Codies' system, was that you weren't limited. Turn 10 let you go wild with racing the perfect lap - if you had the patience, you could drive how you wanted. But it wasn't a clean lap. And this is a small stroke of genius for how this assist worked to give you more time racing on the edge without breaking the leaderboards with your friends. Cut a corner, use another car to change direction, draft for a boost, or rewind and your lap time was flagged as dirty. The leaderboards not only ranked your best laps but also automatically ranked clean laps above dirty ones. Even the slowest clean lap was worth more than a dirty one. You wanted to rewind to avoid disaster and being forced to restart a race but the leaderboards at the end were all about getting that clean lap. They also noted which assists you had on when you got that lap time.

This was the start of my journey into getting the depth of the simulation in the Forza games. The lists of top laps not only strongly encouraged me to worry about cut corners and making that one perfect lap (without using the rewind to fix a mistake) but also showed how all my friends were doing with assists on and off. After a while, I started experimenting with turning down the assists and seeing how the various cars handled without the more arcade edge. By 2010, I realised that with rewinds there to undo mistakes, I could experiment with the cockpit view and started to get a taste for it and the kinetic feel of that view.

Forza Motorsport 4 (360, 2011)

And here, here is where it all really came together. Forza 3 had captured my attention and put me on a path to wanting to know how the game was meant to be played, how the fake cars provided detailed feedback to do more than throw them through a corner and hope for a good exit. The dual games of starting off in the pack and working through the other cars cleanly and quickly before racing the top spot, then driving into the sunset to get those clean laps for the leaderboard comparison at the end. Checking for more optimal paths where the racing line was too conservative or suggested braking where it wasn't required.

The big innovation here that brought the series and how I played it into alignment was Car Clubs. World or even region ranked leaderboards are pointless, I've not got world class reaction times and I'll never be able to compete at that level even if the developer is keeping them completely cheat-free. Friends are where it's at. But I only have so many friends who play driving games and sometimes I'm playing quite early on after release and an empty leaderboard is no good. Forza 4 split the difference and provided a way of joining up with enough people to always have a leaderboard with some competition without it just being anyone. I joined a club with all my friends and got to know a few new names that became my regular competition for the better times.

I started out in 2011 with assists already scaled back somewhat from the end of playing Forza 3 but during my time with Forza 4, I definitely started to push further into the higher classes without going back to the assists to manage all that power. This was all automatics but I was otherwise clean: no ABS, STM or TCS. Using a basic joypad, the steering was on normal because you need to be able to flick the stick to make small adjustments while it damps the input to take that as a small wheel turn too fine to make on a basic thumb stick.

Earlier I noted that by 2005 I knew surround was essential for hearing the engine of the car behind me to know which side it was potentially going to attempt to pass on. By 2011, I had moved to only use cockpit view so started out with Forza 4 that way. And I got much better at using my ears to get a better feel for an assist-free way in which Forza tells you what you need to do. I'd not grasped this so clearly in Forza 3, starting out with assists (even for the slower cars) and an external view. Front speaker for your engine, four surround speakers for each tyre. Each one shouting out information about where the braking or acceleration is going to let go and how likely you are to hold this turn at this speed. Perfect.

Forza Horizon (360, 2012)

This was where Forza started to lose me - not during Horizon but immediately after it. The cadence of the series stepped up to annual releases and jumped to a new platform the next year. This game was great, from the open world to the soundtrack framed around a music event. I played it intensely but five days after the game was released in Europe, I'd completed every event and seen every hidden spot. A few days later I'd polished off all I cared to of the simultaneous online experience, only lacking the Free Roam achievement (as those seemed to be a poor copy of that idea from Burnout Paradise, where I did enjoy them several years earlier).

Horizon showed that the Forza handling model could be extended to allow tyres to touch something other than tarmac without destroying the feel. The assists may have been cranked up a bit and everything made more forgiving but it still felt like a Forza game. Making things more forgiving (the Horizon off-road handling was never aimed at simulating real sports cars on grass or gravel but rather making the game exciting to play) is not surprising when adapting a model that had previously said a tyre that touched off-track instantly lost all traction and two wheels or the underside of the car touching grass or gravel would instantly apply a massive magical braking force to the centre of the vehicle to try and avoid corner-cutting - a magic decelerator you can still find in spots in the latest FM games to avoid off-track cheating. One of the big changes for Horizon's handling seems to be that all vehicles had super-brakes - it takes a moment to get used to it but clearly helped in rapidly dealing with unexpected traffic or track changes. With assists off, Horizon provided a huge range of differently handling vehicles and a great range of courses to throw those cars at without it ever feeling too much like your choice of vehicle was fixed by the event's terrain.

Horizon had a great day-night cycle and some gorgeous visuals for the location on the 360. To this day, it still stands up surprisingly well and the low resolution of the 360 is offset somewhat by decent anti-aliasing and a soft look that masks how little processing power and texture space there was for those real-time shadows that came from a day-night cycle.

In writing this, I went back to try the DLC I'd missed during that single week of play in 2012 and see how much more was added to the game after I stopped playing. A clever free DLC called the 1000 Club offers a short list of challenges for each vehicle that effectively extends how much you can do in the open world while feeling rewarded. I can now say that I've enjoyed flipping through the handling of at least 146 different vehicles in Horizon in the last few days. All done now with manual clutches, which also gave me a greater appreciation of the range of handling (and even ease at which you can read the actual car's dashboard for information vs using the game's UI or just working purely on audio feedback) for that system. It's a smart addition that would have kept me playing for longer if it had been there at launch.

The main DLC/expansion (beyond the car packs that often feel superfluous) is some rally events and a new off-road handling pack that added a few extra parts for each vehicle to allow the handling required for some nice rally feel. I had a lot of fun here, especially after I turned off the braking line assist that appears to not have been tuned for the new rally parts and offers some pretty questionable advice. One of the really weird things is they made the rally expansion for you to lose (in a game and series otherwise all about you dominating the pack). 50 cars in each event with the need to do reasonably well to progress and unlock all the rally events but never the need to get to the top. Even going for Hard rather than Unbeatable, I was getting comfortably into the sharp end of the global leaderboards (top few percent) while also losing out to the top AIs. Fighting my leaderboard rivals (at the sharp end of my Car Club or from the global pool if I'd already topped that crew) was often easier than coming above the AIs one notch below the highest difficulty. It's a small touch but I found that an interesting choice (you can obviously drop the difficulty if you want some AI times that you'll find it harder to be much slower than on Easy).

Unfortunately, you can also see some of the ways the series was going into paid cheats appearing here. The 1000 Club repeatedly offers to unlock fast-travel anywhere if only you would pay some real-money currency (on top of the game already offering to unlock cars for real cash every time you go to spend your in-game credits - as I noted in 2012) and the Rally expansion tells you that while the events have to be unlocked in order and a points score exists for the final event, that only really matters if you're not prepared to use real money to unlock them all now. The events seemed easy enough to unlock but offering to remove that with cold cash paints the challenging nature of that expansion in a far less favourable light.

Forza Motorsport 5 (XB1, 2013)

Then the Xbox One happened. An underpowered and overpriced system focussed on an American TV customer that got hit doubly hard in Europe due to exchange rate moves. This was more expensive than a launch PlayStation 3 where I live and was clearly an inferior model of PS4 with different exclusives. It wasn't even as if it was a strikingly different silicon design. MS paid AMD to put a cache in rather than a 50% larger GPU and opted for weaker memory bandwidth to guarantee they'd get 8GB from the first plan to enable a larger OS footprint. Forza 5 launched with a severely cut back selection of content compared to the last Motorsport game as they moved to higher fidelity assets. I had a quick poke around on a friend's copy and decided to wait two years for the version packed with more content. They even doubled-down on the paid cheats and broke the progression curve to try and force more players to pay for currency, something I'd noted was starting to fester in the series when Tokens got added to Forza Horizon.

Forza Horizon 2 (360 & XB1, 2014)

This failed to recapture the magic of the first game for me. I wrote at the time "more devoid of life than the original, certainly a weaker sequel" after a few hours of play. I was quite happy to live in the somewhat more arcade-y (especially with those strong brakes) world of DriveClub that year, with dynamic weather and time of day making every race into a dynamic discovery of exactly what the track had to offer.

Forza Motorsport 6: Apex (PC, 2016)

Last year offered up Forza Motorsport 6 (XB1, 2015) with the promise that the progression has been walked back from the almost F2P-inspired design of Forza 5. But the console was still not priced well and I was happy to continue with DriveClub and jump into DiRT Rally.

So here we are today. Forza runs on Windows 10, at least in a free (and currently in beta form) variant to test the waters. This post is already getting rather long so we'll save the review for part two of this series. There are some major issues that come out of this being a stripped down experience. There are some issues which may reflect poorly on the series as it diverged from my personal perspective of achieving a peak in Forza 4 (and the path it didn't take towards perfecting that specific design). But I am now using a manual gearshift and flirting with moving the AI difficulty from Pro to Unbeatable (a tier missing back in Forza 4), so it appears to be back to pushing me to go deeper even with those issues nagging at me.

Tuesday, 19 April 2016

The PS4K (NEO): Some Notes

Here are some really quick notes based on the new technical data on a supposed PS4K mid-gen refresh that reworks the SoC (and possibly the RAM but I kinda guess that even the same mainboard design and chips they're currently using can probably clock that fast once the SoC's memory controller is poked a bit). I may come back and rewrite this properly but for some off-the-cuff notes, I'll share what I'd already noted on Twitter.

Ye, the free RAM upgrade (seriously, try to find chips that can't do 7GHz out of the box and AMD must have gotten their controller down by now even if that's something they usually go wide on vs nVidia's narrow bus with high frequency) - 224GB/s is the normal figure for 7GHz so maybe they're still not quite up there with the controller but I think that's more likely than making a wider bus. That makes my list as "most current PS4 are possibly one small tweak from being able to be overclocked like that anyway". Same with 911MHz vs 800: ye, most of the chips probably already get made that can hit that. Even the Jaguar cores moving from 1.6GHz to 2.1: not out of the question and certainly what a chip 3 years more mature could probably get away with under the same Voltage lines (ie power constraints: see GTX 950s that released as 90W parts but now are sold as 75W so no PCI-E power connectors required).

So the actual big news is double the GCN blocks than the current PS4. That makes sense for making it so that games can look visibly better on the new hardware and so bother to make this a second unit with software set to work on it slightly differently than the PS4. If you're building a 4K media box (and Sony have to, they make movies and even kinda have that TV division that's been 15 years without making a profit, right?) then that's not a terrible idea. If they're shrinking to 14nm then that's basically totally fine and easy to budget into a reasonably priced SoC at this stage. Hell, if you didn't double the GCN allocation then it'd look a lot like a CPU-underpowered version of next year's AMD APU (because that is getting AMD's next gen CPU cores: Zen rather than the mobile-focussed Jaguar tiny cores and has a modest amount of new GCN blocks).

As I said on that there Twitter: this isn't even that soon for a mid-generation upgrade. It's just last gen was a long one. UK window between xbox & 360 release was 1359 days. Today is the 872th day of PS4. A year from now: 1237 days into the PS4's EU lifespan. If you're going to release a mid-gen upgrade this is when you need to be getting it ready for release otherwise you might as well wait for a PS5 and a full generation with no forcing devs to keep making a lower-end settings config to make sure it still runs on a PS4.

I played GTA V on the PS3 Slim. If that had been a totally solid fps rather than the sub-20 creaking mess that R* managed (because that was all those consoles could hope to deal with for that scope of game)? That sounds like it would be worth that PS3 Slim being $50 more expensive than it was to me. And that's speaking as someone who had to buy the Slim because my OG PS3 died (optical drive) outside of Sony's warranty. My 'new' 3DS doesn't get a lot of use but I'm really glad I've got a much stronger SoC in it than the device launched with, even if only a few games actually make good use of that. The 'new' bit of the price tag was small, the potential benefit from a much faster and slightly more expensive SoC being inside is large.

Will the PS4K mean some games are released that are fine on it and run like junk on the PS4? Definitely. Is that the fault of the PS4K: nope. Play Just Cause 3 or grab this week's release for £45 on PSN of Alekhine's Gun: we're already at the point where PS4 games can run horribly because that's not a cert fail and some devs just don't get to finish their games. Don't like it, don't buy them; but a higher tier just means some people will get to pay to avoid that bad experience, just as you can buy your way into 1080p60 for most games today if you're prepared to pay for a gaming PC.

The current PS4 is a 1080p console, call it the baseline (shader perf per pixel required). The GPU is 1.8TFLOPS to give a very rough "how big is the GPU" metric (as much of gaming is shader perf limited).
You can get a GTX 970 for not that much: 3.5TF (so 2x1080p).
Current premium PC is a 980Ti: 5.6TF (3x).
The new big Pascal is coming (we know what it can do): 10.6TF (6x1080p - beyond 4K with PS4 level image quality on a per-pixel basis)!
It can also do half-precision mode: up to 21.2TF (12x1080p) and that's going so far beyond 4K as to almost hit 8K!

The new PS4K specs would make it a 4.1TF GPU. So that's not only significantly more than the current design but also putting it between PC VR spec (970) and PC hardcore spec (980Ti) - a good place to be in today for a device that'll be running VR in some months and has a new generation of PC GPUs coming with those numbers that are horrifically large now they've finally gotten to die-shrink to 14/16nm after years stuck waiting for a process that could make commercial 300-600 mm^2 chips that large GPUs demand.

You could maybe get some 4K games out of it, in the same way that a few games on PS3 even got to 1080p via lower per-pixel quality. I think many games would prefer to render at 1440p or something and then scale for output and so give you better anti-aliasing. You can also up the level of detail stuff so that PS4K games were on par with a PC release. When my GTX 760 [2.3TF but dealing with 2GB of RAM that really puts pressure on the new engines] is rendering the Division with far less issues of draw in and shadow detail than the console version then the PS4K can definitely benefit from more perf and being able to really push out the LoD issues. Even when hooking it up to a 1080p TV and using a game with some really good anti-aliasing tech already.

As long as Sony force devs to have a decent config file that allows the games to run on the original PS4, I can only see this as a great step for games on consoles. Make it so we have a base game and a config file for each system. Now let future systems patch in their new config file and, assuming compat that I expect them to maintain between x86 and GCN-derived GPUs (or even just the Metal-like not-GL API that perf games code to), we get to a point where it's actually almost zero effort to release a PS5 where you just put in a PS4K disk or load the PSN download up and it renders in 4K native with greater LoD distances and so on. Because of course you can do that: PC gaming has been all about making games that allow the sliders to go to 11 and one day even budget systems can run them like that.

When I play PS2 games, I do it on a PC because almost all of them can be hacked to roughly run to 1080p or beyond with anti-aliasing etc. And those games aren't even aware of this. Much better than using the PS4 to play the exact same game. Consoles need to get better at that because we're already well into the territory where last gen games look ok when "ported" to next gen via nothing much more than LoD tweaks and resolution increases (if you're lucky, they rewrite the lighting code). Let's call it a living archive and give console games an even longer sales tail rather than allowing 1% of games to get a "HD remake" and everything else is left to die.

Saturday, 5 March 2016

The Photography of Virtual Worlds

I'm assuming most people reading this are already aware of the various virtual photography communities. Dead End Thrills is probably the biggest.

This is something we've done forever on PC and now even consoles have dedicated space on the controller for a capture button (on top of the few games, often driving titles, that have put in an offline-render photo mode to really show off the art assets without the real-time rendering constraints). Hell, Firewatch even ties their virtual camera into a printing service, letting far more people realise they can print out their virtual photography because some of this stuff really does look good.

With VR about to arrive, people are about to really feel like they're present in the virtual environments we've been rendering for decades. The desire to take snapshots of places you're stood is only going to get stronger. Games built around photography are likely to bloom in the next decade, especially if they link the captures to a decent offline render pass so the files exported are the best quality the assets can be shown in. And not just games that add a camera as a proxy for a gun (for kids), adding jumps (for the more adult, horror games) or time constraints: those can also be fun games but I'm talking about photography as the act of having all the time you want to get the shot just right. The process of getting everything to be just how you want it at the instant of capture, moving to find the location that lines every elements just where you want it in the frame. I can even see a healthy market for big publishers reusing their AAA assets (every open world so far) in photography games.

An interesting things I noted while in the beta for The Division: even on tweaked medium settings picked to get to 60fps (because PvP promotes reaction times over nicer looking 30fps), even with a GPU I'm getting tired of waiting to replace (which is literally on the list as a minimum requirement for running the game), games with a decent anti-aliasing and lighting techniques can look pretty amazing. With only a few hours, a limited section of the map unlocked, and the constraint of primarily being there to shoot a gun (or be shot at), I still managed to get a few nice shots and can't wait to go back and take more. I just wish there was a button to hide my UI (and maybe even the protagonist) to do it.

Saturday, 27 February 2016

Super. HOT. Super. HOT.

In medias res, the brilliantly white level starts with two bright-red, crystalline dudes in front of me, guns being brought to point at my face.

The guy on the right easily gets there first and a black bullet comes straight at me with a flowing red trail emerging behind it. Time creeps forward with the bullet slowed as if through treacle.

I lean to the left, trying to also look around slightly, causing time to speed up, and I feel the bullet brush past my ear. But I've now formulated a plan.

I reach forward for the black ashtray on the table in front of me and manage to throw it at the dude on the left before he manages to get a round off. It smashes into his face, stunning him and, far more importantly for my plan, causes him to let go of the shotgun's handle. Shards of black glass that used to be an ashtray will keep him busy for the moment and that moment is all I need.

The gun's forward momentum from being brought to bear on my head keeps it coming closer to me, close enough that I can reach out and grab it out of the air. Already with a slug in the chamber, the guy on the right can only wait for his next round to arrive in the barrel.

Aim, shoot. This time it is me creating red trails in the air.

The guy on the right tries to dodge but it's not enough. His head explodes into a thousand reflective fragments as the buckshot impacts.

Now I've got a choice to make as I wait for the next shell to load, hopefully to take out the guy on the left: how do I spend that fraction of a second? For a start, now the super-imminent danger is over, I need to look around and see what else is coming for me right now. Work out where I am, what happened before these gentlemen decided I needed to not be here, and make sure there aren't any more bullets already heading in my direction...

Super. HOT.