Tech Interview: WipEout 2048
Studio Liverpool on the making of Vita's finest racing game.
PlayStation Vita delivers what many thought impossible: a current-generation HD console experience in the palm of your hand. It's an exciting achievement, made possible by the most advanced gaming architecture of any mobile device on the market today combined with what many believe to be the most varied, high-quality launch line-up we've seen for any console launch.
While Uncharted: Golden Abyss has gone on to achieve considerable critical and sales success, many believe that the true star of Vita's launch line-up is Studio Liverpool's WipEout 2048 - a title that delivers a full-fat console experience and even improves upon WipEout HD in terms of game design and raw playability.
In this special Digital Foundry tech interview, we talk with Studio Liverpool's technical director Stuart Lovegrove and technical director of graphics tools and technologies Chris Roberts. We wanted to know just how closely Vita development mirrors that of PlayStation 3, what assets and coding techniques can be shared across the two platforms, and how closely involved the team was in the development of the platform.
We also go in-depth on the visual make-up of the game, the technologies the studio deployed to ensure solid performance, and how the team takes advantage of the bespoke rendering hardware in Vita's SGX543 MP4+ graphics core. Plus, we grab the bull by the horns: with Vita we see Sony embracing mainstream technologies, so what's to stop the system being overwhelmed by more powerful portable hardware in the years to come?
"We developed [WipEout 2048] completely in parallel with the hardware, from the beginning ideas of the device all the way up until the hardware launch."
We developed our game completely in parallel with the hardware, from the beginning ideas of the device all the way up until the hardware launch. Launch titles are something Studio Liverpool has done many times before, and personally I've been involved in five different hardware developments in my time.
We were fortunate that SCE involved us very early on in the development of the PS Vita hardware - we had a fairly good idea early on in the project of what would be possible, and the hardware spec didn't fluctuate radically. Whilst we did give feedback on the hardware and libraries, probably the main benefit to SCE was that we could send code drops to the library and firmware guys so they could test their compilers and code.
Our game became a bit of a testbed for the device, which benefits all internal Sony groups, and working within the WWS (World Wide Studio Group) is something that we actively participate in.
Not particularly, although it's less of a headache for artists when they tweak final lighting etc.
Having one display resolution is easier to develop for as it alleviates those old problems of designing for an HD screen to then ensure that it runs at all resolutions down to SD.
The PS Vita and PS3 are quite different beasts. The most obvious difference is of course the loss of SPUs which are blindingly fast but require a lot of time and thought to get the most out of them.
In the case of WipEout HD/Fury, much of the code we had on SPU was directed towards GPU support, e.g. geometry culling, lighting, issuing rendering calls etc. However, the GPU on PS Vita is quite capable considering it's a portable device - you can have it punching above its weight if you're careful/clever with it - and the ARM architecture is pleasant, efficient and handled the WipEout code very well indeed without any significant compromise.
I've worked on ARM technologies before (I'm an old BBC Micro user) so it was enjoyable to have the chip running our game again, the pipelines in the chip are very good at consuming our code and we didn't have to optimise very much to get things working.
"WipEout 2048 and WipEout HD/Fury both use the same shader system, authored in exactly the same way - this helped us get moving quickly on the new hardware."
WipEout 2048 and WipEout HD/Fury both use the same shader system, authored in exactly the same way - this helped us get moving quickly on the new hardware, and the PS Vita does quite well with HD/Fury's shaders, although not at quite the frame-rate we were looking for. A great deal of time and attention was spent hand-optimising the shaders for the PS Vita's GPU.
From the artists' perspective, and generally throughout the team, the methods of working are the same between the two devices, and in my experience it's the first time that has been possible on a portable device. For us it really is like having a console development pipeline when working on PS Vita.
The lighting on PS Vita is virtually identical to the lighting on HD/Fury. Ships are still lit using image-based lighting with blended diffuse and specular probes that we precompute along the track, and weapon effects use the same vertex-based lighting system, although on PS Vita both of these effects are handled by the GPU rather than SPUs as they were on PS3.
It's easier to talk about the differences - the real-time shadows on PS Vita are almost identical with the exception that we decided to use anti-aliased colour buffers for shadow rendering rather than shadow depth buffers.
This allows us to have transparency in our shadows and the memory cost of anti-aliasing is mitigated by the colour buffer only requiring 8 bits per pixel, so a 4xMSAA colour buffer uses the same memory as a 32-bit depth buffer, however it did mean we had to sacrifice self-shadowing on the ships.
"By using the existing PS3 code as a starting point, we were in a much better position to get the tech up and running whilst the art team thrashed out all the new content in parallel."
The post-effects are slightly improved in WipEout 2048 - tone mapping is more 'correct' because the PS Vita has efficient hardware supported buffer formats, so the exposure control and bloom effects in 2048 are generally better-quality than the HD/Fury counterpart. Also, in 2048 we have longer tracks that tend to require a lot more lightmap texture space - fortunately the SGX supports texture compression with higher compression rates, so even taking the longer tracks into account, there are also improvements in pre-computed lighting resolution.
This decision was taken very early in the project, based on an apples-to-apples comparison. In short, based on the initial specs we received, we expected that the PS Vita should be just about able to draw the existing PS3 assets at around 30Hz. By using the existing PS3 code as a starting point, we were in a much better position to get the tech up and running whilst the art team thrashed out all the new content in parallel - WipEout 2048 is a launch title, and we needed a predictable, achievable target to aim for in a finite time, so 30Hz was always the goal.
30FPS was always the goal for development of WipEout 2048, as we wanted visual quality. However a choice of a solid 30FPS doesn't mean that it is a bad frame-rate! I don't know of many handheld racing games that run at 60FPS?
Yep, resolution throttling is used in 2048. The same tenet from HD/Fury applies: if you are dead set on locking frame-rate and resolution your whole game is (graphically) restricted by the worst-case scenario.
This might be fine for games with fairly uniform content displayed each frame, but in games with highly random, unpredictable action, restricting things in this way means that a typical frame (where not too much stuff is happening) may only use 50 per cent of the GPU.
"Resolution throttling is used in 2048 - the same tenet from HD/Fury applies: if you are dead set on locking frame-rate and resolution your whole game is (graphically) restricted by the worst case scenario."
In terms of strategy, since it's impossible to predict when you're going to drop a frame, the only practical approach is to try and recover FPS as quickly as possible (i.e. by dropping the resolution) to get the v-sync enabled again.
It comes down to a compromise between the severity of frame-rate drops, screen-tearing and overall graphical quality. WipEout isn't really the kind of game where we can tolerate severe FPS drops, so we opt for the occasional tearing and more consistent frame-rate instead.
Similar to the PS3 version, even when the game is fully throttled to the lowest resolution it is not particularly noticeable to the user, especially when playing the game.
It's only there for worst case scenarios as Chris says and for the majority of the time we are using the full resolution of PS Vita, and that's 960x544. The resolution throttling is actually hard to spot when it kicks in!
Yes we use hardware 4x MSAA pretty much everywhere we can - on the main 3D render, on ship shadows etc. Additionally, if you look at some of the crossplay tracks from PS3 that feature reflection and refraction effects (e.g. Moa Therma, Vineta K), these buffers are also using 4x MSAA, as well as the billboards in the crossplay tracks (2048 tracks have videos for billboards instead). The overhead for MSAA on PS Vita is indeed very low compared to other GPU platforms, in terms of both memory and performance.
"Vita is backed but a strong group of Sony developers... who have one goal in mind, to make the hardware as easy, fast and as powerful as possible. Likewise for software developers, experience with a stable platform always yields far better results than when working on a shifting platform."
I think I should turn that question back on yourself and your readers! Do you want a PS3 version of WipEout 2048?
The same thing that has kept PS3 at the bleeding edge - very thin APIs and little or no driver abstraction layer. The API developers use for Vita are designed for the Vita only. The firmware doesn't have to take code written to OpenGL ES specifications and then do the best it can with the hardware it's got. This is a general problem with standardised APIs as they help hugely with adoption and developer learning curve, but ultimately they will always add overhead or keep you from optimisations and other tricks.
Vita is backed but a strong group of Sony developers working on these technologies who have one goal in mind, to make the hardware as easy, fast and as powerful as possible. Likewise for software developers, experience with a stable platform always yields far better results than when working on a shifting platform. I remember once optimising a game for the original PSP and managed to speed it up by 2000 per cent! My point is that it's not just the hardware that makes the game, it's what you do with it that also counts - and there will a long life in the PS Vita. You do know vita is Latin for "life" don't you?