Assassin's Creed 4: Technical interview with Sylvain Trottier
The PC version of Assassin's Creed 4 is in the stores and we had the chance to chat with Sylvain Trottier, Associate Producer at Ubisoft. We will talk about the technical basis for the forth installment and we try to find out what DirectX 11 will bring to the series.
PCGH: What is the technical base of your game? Did you develop a brand new engine from scratch or have modified or enhanced the technology utilized in Assassin's Creed 3? If this is the case what engine parts have you reprogrammed or altered and why were the modifications necessary? If you built an engine from scratch, what was the reason to start the next iteration of the game with a brand new technology?
Sylvain Trottier: As a starting point, we use the same game engine as previously used in AC3. Each Assassin's Creed has its own special features that we add, change, and improve between versions of the game. For example, in Assassin's Creed 4 Black Flag, we added two additional platforms, XBOX One and PS4 as well as adding the capability to support a much larger and now seamless world. One of the major upgrade in this engine was the rewriting of our lighting engine for example.
PCGH: Which influences upcoming Next Gen Consoles influenced your decision to modify the engine/to program a new one from scratch? Have the current generation of consoles (Xbox 360/PS3) in a way hindered the advance of the technology behind Assassin's Creed 4 or did you develop a special engine version just for Xbox 360 and PS3?
Sylvain Trottier: Rewriting an engine is an insane amount of work. For the sake of this project, it was decided very early on that we would add what we needed and improve the existing engine. It takes years to polish an engine. For the development of AC4, we decided to add support for the Next Gen consoles and develop with a platform agnostic approach, using the same game engine for all platforms. Of course, there are additional challenges with supporting current and Next Gen platforms in the same engine and pipeline but there are also lots of benefits. One of the main one is that it ensures that the gameplay is consistent across all platforms.
PCGH: Having a closer look at the PS4 and PC version of the game we got the impression that the PC version offers a better visual quality. We recognized more details (tessellation, smoke rendering, Antialiasing). Can you confirm that there is a visual difference between the two codes? If so, what visual features can only be with the PC as platform? Does this on the contrary mean that the Hardware of the Next Gen Consoles is nit powerful enough to render the game in same visual fidelity? Where are the bottlenecks of the console's technology
Sylvain Trottier: Our tech development platform for this game was the PC. We developed all our next gen techs using modern PC since the next gen consoles are so close to them in terms of architecture. This explains why the next gen and PC versions are so close in terms of look and feel. Now, there are some difference between the PC and Next gen console version of course. There will always be more power available on PCs than on console (but they are not the same price either!). On PC we can render in higher resolutions, we can use the GPU specific features such as TXAA for example, and benefit from more CPU core, more memory and stronger/faster GPU to achieve 60 fps. All our other next gen features are available on both the PC and the new consoles.
PCGH: DX11-Redering has become standard even on Xbox One and PS4 and there are a lot of DX11 technologies like Tessellation, High Definition AO, Deferred rendering with nearly unlimited light sources, proper MSAA, Contact Hardening Shadows, 32-/64 bit HDR or other effects like motion blur, Bokeh, DoF that could be gazed at in titles that a currently popular. Which of the above mentioned rendering technologies does the renderer of your base technology apply? What are the advantages of the DX11 API in general and how can you benefit from it while developing Assassin's Creed 4?
Sylvain Trottier: Since DX11 is a superset of DX9, we were able to implement a DX11 renderer that was able to emulate the Xbox360/PS3 hardware and the XboxOne/PS4 hardware. We were then able to switch in our editor between current gen rendering and next gen rendering with a simple click of a button. That allowed our artists to see how their assets would look on both generations of consoles. As we went forward in production, we were able to more efficiently tune and modify the performance and quality of our effects with changes and modifications being done across all platforms.
We also used the DX11 features to maximize our textures, to increases LOD ranges, to provide better resolution, to push more vertices on the ocean, and to ensure more vibrant and intense particles too. Aligning development using DX11 allows us to ensure consistency on API features level on next gen console and PC, alike. We use DX11 to create effects like motion blur, rain drops, god rays, caustics on the water. We use also some technical features like constant buffer or conditional rendering to improve the performance and maximize the usage of the GPU.
PCGH: Will DX11 and here Direct Compute 5 for GGPU calculations even help you to speed up the rendering remarkably or do you just utilize the high quality visuals the API has to offer?
Sylvain Trottier: Early on AC4, we decided to use the GPU only for rendering, and we did not investigate general purpose GPU usage. That way, we did not need to do any visual compromise, and we pushed the rendering quality as far as we wanted and delivered a very immersive experience.
For example, we used the Compute Shaders to generate our 3D rains and dynamic ripples. We also used the additional GPU power to render a physically based volumetric fog that supports lighting from individual light sources. We even rewrote our lighting system to implement a new global illumination algorithm that supports time of day cycling and dynamic weather changes. We also have thrown some goodies like screen space reflection, improved depth of field and lighted particles.
PCGH: As multicore CPUs have become the current and future state of technology - even the Xbox one and PS4 rely heavily on multicore Processors (Jaguar architecture). Do you try to program the engine in a way that it can utilize up to 6/8 processor cores? Do you constantly try to optimize the multithreading ability of the engine during the developing process? Can you already give an estimate how many cores will be used to full extend and how the thread structure of your base technology looks like (main threads/worker threads, thread scheduler, tec.)?
Sylvain Trottier: Our engine, AnvilNext, is already built to take advantage of multithreading architecture with a lot of worker thread and small tasks to execute in parallel. So our engine was ready to take advantage by distributing our processing load across all of the available cores of the CPUs. The challenge for us was to solve all bottlenecks on PS4 and XboxOne, add Next Gen features and maximize the performance on the new architectures (for example choosing the right tasks/cpu cores affinity to increase the cache hits).
PCGH: Antialiasing is a feature many of our readers regard as very important. Since Assassin's Creed 3 already had Multisampling and a Post-Process-AA implemented, can we also expect these for Black Flag? There's also a trend towards in-game downsampling, supersampling and of course Nvidia's TXAA. Can you specify which kinds of AA will be supported by Black Flag?
Sylvain Trottier: For current gen we are still using multisampling and post-process AA but we have really improved the quality of our FXAA + edge detection. On next-gen we use a completely new AA algorithm: SMAA (SubPixel Morphological Antialiasing) to really increase the visual quality. On PC we will let you choose according to your GPU with bonus Nvidia's TXAA or MSAA.