Crytek: the next generation
Digital Foundry talks CryEngine, PlayStation 4, Xbox One and Ryse with Cevat Yerli.
In our graphics cards tests, there's one game that's our go-to title when carrying out gameplay performance analysis: Crysis 3. Crytek's last game is a technological showcase: one of the very few games built with next-gen development in mind, and the best stress test for the latest AMD, Nvidia and Intel GPU technologies. With the next-gen console zero-hour approaching, we reached out to Crytek to talk tech - to discuss how their multi-platform engine was ported onto next-gen, what the company view was of the new Sony and Microsoft architecture, and of course to sneak in a few questions about Ryse.
There's some interesting and dare we say it controversial stuff here. Image quality purists won't be too happy to see another developer signalling the death of multi-sampling anti-aliasing in favour of temporal and post-process alternatives, while a great many core gamers won't be ecstatic with the reasoning on the firm's line on 30fps as the preferred standard for console gameplay. And yes, we have an Xbox One developer telling us that multi-platform releases won't be that much different between the two next-gen consoles - a line of argument that doesn't go down very well with some at the best of times.
Regardless though, across the range of questions, there's some fascinating new information here - how the move from PowerPC architecture to x86 radically changes the way that developers code and optimise their games, a frank assessment of the raw CPU power of the new consoles, Xbox One's ESRAM and audio hardware, and Crytek's aim to bring CG-quality visuals to real-time rendering.
But before we dive in, a bit of background is required. Interviews tend to take three different forms - face-to-face, on the phone or, as is the case here, an email Q&A. The good news is that Cevat Yerli himself - founder, CEO and president of Crytek - took point on tackling our questions. The not-so-good news is that it took quite some time for the answers to return, hence our referring to CryEngine 3 and its successor when it was subsequently revealed at Gamescom that they are one and the same (and that the numbering has gone), before Microsoft announced that Ryse was running at sub-native 1080p resolution, and a long time before Yerli's DICE 2013 presentation where he revealed a raft of new visual upgrades for the firm's Xbox One launch title. It also means that our key follow-up question - specifically on how Crytek has quantified the performance differential between the two next-gen consoles bearing in mind the relative GPU specs - still remains unanswered, despite a lot of chasing.
Ryse is important as our first look at how CryEngine operates on the next-gen console, but this interview is more focused on how Crytek has managed the transition of one of the most advanced multi-platform engines onto the new hardware, and what we can expect from the technology in the future. And as for a fully maxed-out Crysis trilogy on next-gen console? Unfortunately, much as we would love for it to happen, Crytek isn't talking...
"With DX11 and 64-bit support being a core part of the engine, the transition to the Xbox One and PlayStation 4 was quite straightforward and the new consoles turned out to meet our technical expectations."
Both consoles have a DX 11.1+ capable GPU with full compute shader support which allows us to come up with new creative rendering techniques that were not possible before. The GPUs are very efficient in performing math operations and the CPUs, in contrast to the previous PowerPC-based architectures, have standard PC features like out-of-order execution and branch prediction. All this reduces the need for micro-optimisation and allows us to focus more on the high-level algorithms which is usually the more rewarding part of development. We are also looking forward to seeing what the PlayStation 4 will offer in regards to online compute capacities, and the strategy rolled out for Xbox One cloud support is certainly going to be very interesting in terms of compute power for next-gen games. I also think Microsoft's decision to include Kinect as standard is a positive one, as it avoids fragmenting the market and allows developers to treat its functionality as a given.
The available memory is a massive improvement compared to the less than 512MB that we had before and makes our life a lot easier. However, despite our improved streaming system, we got it filled up quite easily and had to eventually work on optimising asset sizes.
With DX11 and 64-bit support being a core part of the engine, the transition to the Xbox One and PlayStation 4 was quite straightforward and the new consoles turned out to meet our technical expectations. To our knowledge, at this year's E3 Ryse was the only next-gen game on show that was running on a commercially licensable engine. We felt that justified our statement from a few years ago that CryEngine was next-gen ready.
The transition to the new generation is going smoothly, and although the workflow and tools are in their early stages, they are better at this point than they were in the early lifecycle of the last generation. Due to the improved specs and familiar PC-style development environment, developers have received a welcome overall improvement. This has been really beneficial, and has freed us up to spend a lot more time on just getting the best out of the system.
Both next-gen platforms have excellent specs and provide wins against each other in a variety of areas. But, in essence, both of them are going to run next-generation games in more or less the same quality due to the diminishing returns of optimising for these little differences. That being said, platform-exclusive titles might be able to take advantage of these slight variations on both Xbox One and PlayStation 4.
"GPU compute is definitely the future. The CPU performance is better than last-gen but not by a huge margin, the GPU on the other hand is a really sizeable improvement."
GPU compute is definitely the future. The CPU performance is better than last-gen but not by a huge margin, the GPU on the other hand is a really sizeable improvement. If the task is suited to it, moving to the GPU can be an incredible performance win. However, this is taking away performance from the traditional graphics pipeline so there is a limit to what you can move to the GPU. As for the broader multi-platform question, supporting GPU compute isn't really much more difficult than supporting multi-platform rendering, so it's certainly something we'll be using more and more on all platforms.
An infinitely fast single-core CPU running the game single-threaded would obviously make things much simpler. However, these days have long since gone and engines are required to scale well across multiple CPU cores for games to run fast at high quality; that is, they need to be able to execute multiple jobs concurrently without introducing significant wait time and synchronisation cost. CE3 has been doing well in that regard and further improved over time and for Ryse in particular. Because of that a lower CPU clock rate is acceptable as long as there are enough cores available to offload work through our job system.
AMD's involvement in next-gen consoles will certainly bring some improved compatibility for PC gaming, as a lot of optimisations will go into console development that will benefit AMD-based PC gaming architectures. But I believe those compatibility improvements will still have a limited effect.
Next-gen console gamers will now experience high-end PC quality gaming, with higher resolutions, more complex assets, and better rendering techniques that all result in richer, more immersive gaming experiences. One key aspect is that having DX11-class consoles and better hardware allows us to set a new baseline for really high-end content development, and we can discard older generation restrictions. We're very excited about this particular aspect of the new consoles.
The core technologies of the next generation are DX11 and 64-bit. CryEngine has been fully supporting both since Crysis 2. Because of that, getting the first version of Ryse running on early Xbox One kits was relatively easy and took us less than a week of focused work. Again, the fact Ryse was probably the only next-gen game running on a commercially licensable engine at E3 2013 is proof of how easy it was to use CryEngine was for the next generation.
"MSAA is quickly getting bandwidth-bound and thus expensive. With a deferred shading based renderer the bandwidth consumption is getting prohibitively high."
Developers always have to choose whether they go for 60 or 30fps, depending on the type of game and complexity of the project. With Ryse, we wanted to go for a very emotional experience with complex and dramatic lighting, high fidelity environments, and rich characters and character animations. So 30fps was our choice, and we believe that most developers will go for richer worlds at 30 frames per second rather than 60fps - which would call for compromises, as 60fps demands twice the amount of compute rendering speed. 30fps is a standard that is above, for example, what most cinemas use for showing films. Early demos with higher frame-rate experiences have shown that gamers and viewers have a mixed opinion about its perceived quality - for example, how 48fps cinema experiences were received. So it's both a production design choice as well as user research.
We put our most accessed render targets like the G-Buffer targets into ESRAM. Writing to ESRAM yields a considerable speed-up. While 32MB may not be enough to use something like MSAA to the fullest, with a smart memory management strategy it is possible to deal with that.
We have many new features in Ryse. On the rendering side the main focus was on moving to more physically-based paradigms but we have a lot of improvements for animation and physics as well. For example, all the cloth and armour parts are moving dynamically but we can also pre-bake complex simulations now and replay them in real-time.
Essentially the hardware is performing calculations on audio data, handling the decode of audio that is encoded in XMA, Microsoft's proprietary, designed-for-game-audio, encode/decode compression algorithm. It takes weight off the main processing cores by using this optimised processor, which is approximately twice as powerful as the 360's, which means we can have higher voice counts, that is more sounds playing simultaneously. Also it supports the 7.1 surround sound architecture, which vastly improves the 3D localisation of sounds and the immersive audio environments we have created for Ryse.
Xbox One's move engine has proven to be quite useful to us by accelerating streaming of texture data, etc. How well that fares overall and compares to the prowess of PS4's compute engines remains to be seen and likely depends on the specific type of game you want to build.
MSAA is quickly getting bandwidth-bound and thus expensive. With a deferred shading based renderer the bandwidth consumption is getting prohibitively high. For Ryse we developed our custom SMAA 1TX, in essence it is a combo of morphological AA with smarter temporal anti-aliasing. It's a new robust and fairly efficient technique which we shared some details about at Siggraph this year. It's a solution which deals with any signal input changes in order to smooth out potential shimmering during movement, while masking out any potential ghosting, and together with shading aliasing solutions it provides a more filmic image quality overall.
Next-generation consoles provide an excellent platform for any high-end PC developer. Naturally, in a few years from now, console developers are going to get more out of the new generation of consoles and we should see a big jump with optimisations providing even better console game experiences. The choice some developers are currently making to port from PC to console, in our opinion, has only happened because the development environment on PC is very stable, and building a launch title is very challenging - due to the fact the console itself is not finished until late in the process. So it's a decision based not on performance, but comfort.
We definitely think that the new console generation will create a level up in the PC gaming market for many other developers, and we've always been big advocates of PC gaming. Developers will be able to maximise their investment because of the PC-like architecture of the consoles. So we should be seeing a great boost in quality on all multi-platform games that appear in the future.
In an ideal world, the GPU and CPU would be accessing and sharing the complete memory address space to really close the gap between PC and console gaming. Besides closing the gap, it would simplify many developments in graphics, in compute and also generally speeding up many operations which are data heavy. However, on PC we are restricted to DX or OpenGL standards for many of the aforementioned operations. As long as MS or the OpenGL ARB don't update these standards, developers will be limited to what they have. We see that OpenGL is gaining traction, but DX11 has received very little update and traction on PC. I think DX11's use has been boosted only by the appearance of next-gen consoles. So we all want, essentially, is a unified architecture for PC and console gaming, coupled with unified development tools, or, even better, access below abstraction layers in a unified way.
Well, it's nice to hear someone finally acknowledge that, so thank you! Many of the core components used for physically-based rendering were available in CryEngine since Crysis 2. This includes image-based lighting with pre-convolved environment maps and a normalised BRDF. However, for Ryse we started working more on the consistency of all these features and how they interact with each other within the rendering pipeline. We also heavily reworked our art pipeline to enforce plausible material setups and evolved the lighting pipeline to make sure the integrity of materials is preserved up to the final frame output.
"The future will not be just about realism, but also about new kinds of artistic expressions. The next few years will be great times for the PC community and console gamers."
In Ryse we are using light probes (image-based lighting) as these work very well with physically based rendering, and, on top of that, our artists wanted to have full control over a cinematic look, so we developed a manually placed bounce lighting technique. We also have much improved solutions for ambient occlusion (our fifth generation) and local, real-time reflections. With the limited power of the new consoles, 100 per cent real-time GI remains a challenge, but we think it might be feasible. The more important question is whether art directors wish to lose their control. Top production designers working on high-end CG animation usually apply a very artistically controlled lighting system. If the desire is to light a scene to be photo-realistic, then this may be a choice. If you want a cinematic experience or lighting style, full GI might not be desirable.
At this point we can't comment on any other next-gen projects apart from Ryse.
Going forward, as we have announced at Gamescom, we've dropped the numbers from CryEngine and will keep providing the engine as a frequently updated service for developers. CryEngine will always evolve and improve. There are many research directions besides fully physical-based rendering and shading, and we still have quite some work before we reach a cinematic/photo-realistic world that's consistent in every area. Character animation, for example, has a long, long way to go before hitting realistic and believable quality on all fronts.
The future will not be just about realism though, but also about new kinds of artistic expressions. The next few years will be great times for the PC community and console gamers. In a talk I gave about the future of computer graphics in 2008, I said that the next-gen consoles would arrive in 2012/2013, and that we'd receive CG-quality rendering of games. These consoles will provide us a baseline to not just deliver that, but over the years to go beyond it. We will close the gap more and more between CG animation that people see and CG-quality games that they can play.