Before the launch of Kingdom Come: Deliverance, fellow writer Joseph Bradford and I reached out to Warhorse Studios to see if they were interested in conducting an interview. Fortunately, they were agreeable. The questions I posed were largely technical in nature because, surprise, I love graphics. I was also very interested in the technical make-up of this game, given my great interest in CryEngine, the engine used to build Kingdom Come: Deliverance.
What follows, then, is some great insight from Lead Programmer, Tomas Blaho, and Lead Environment Artist, Jakub Holik. Given the technical nature of this interview, I will be linking externally to various documentation for further context and education.
Additionally, given that these questions were submitted before Kingdom Come Deliverance launched, some of the information below is already known. However, I’m still including those responses here because it’s just good information to have on hand.
Finally, I’d like to sincerely thank Tomas, Jakub, and PR Manager, Tobi Stolz-Zwilling, for their time and detailed responses. I hope you all find this as insightful as I did.. . .
Kingdom Come: Deliverance is built upon CryEngine. What were your reasons for choosing CryEngine compared to other licensed engines like UE4 [Unreal Engine 4]?
Tomas Blaho: More than 6 years ago, when we were choosing an engine for the game, there was no UE4, not even close. Epic promised a beta in the first 6 months. Therefore, we compared the CryEngine 3 with the UE3 instead. Being that KCD’s environment was supposed to be a dense forest with lots of grass, CryEngine 3 was the only way to go. It handled our test scenes with a much higher framerate.
As a follow up, what are some disadvantages and advantages of using CryEngine?
Tomas Blaho: Apart from vegetation rendering and simulation speed, CE3’s Sandbox editor is fairly easy to use and extend. The main disadvantage was that CE3 wasn’t much used by other game studios, so we were easily running into issues no one else did before us and we had to spend a lot of time identifying and fixing bugs in the engine and the tools.
What resolution and framerates will the PS4, PS4 Pro, Xbox One, and Xbox One X run at?
Tomas Blaho: Both Xbox and PS4 are 900p, upscaled to 1080p for a native resolution UI. PS4 Pro is 1080p and Xbox X is running 1440p. It’s always a fixed resolution as there is no resolution scaling feature within the CE3.
Will the PC version and console versions contain an FOV [field of view] slider? If so, what is lowest and highest FOV users can select? If not, what were your reasons for not including an FOV slider in a first person game?
Tomas Blaho: FOV can be set on all platforms from the 60 to 75-degree range. Consoles has its default set to 60 (TV) and PC is set to 70 (common monitors). PC advanced players can also set a custom FOV using a console command (cvar) cl_fov=X to any number up to almost 180 degrees
At this time, can you comment on the PC specs required to play on High settings for 1080p 60fps and 4K 60fps? If so, what are the specs required to play on High settings for 1080p 60fps and 4K 60fps?
Tomas Blaho: The game is running very well on any mid-range gaming hardware. The Core i5, Ryzen 5 CPUs, NVIDIA GTX1060, and AMD RX580 should be perfect for 60fps on High detail. 4K is much harder to crack at 60fps. Even the 1080Ti is not fast enough.
It’s a pet peeve of mine when first person games include lens flare and don’t allow me as a PC gamer to disable it. Considering your game is set in the 15th century and is marketed as a more realistic RPG, will your game include lens flare? If so, can we disable it?
Tomas Blaho: There are no lens flares in the game as far as I know.
Jakub Holik: Yes, that’s true.
CryEngine features an HDR [High Dynamic Range] rendering pipeline. Are you making use of HDR? Why or why not? If not, are there plans to implement it in the future?
Tomas Blaho: Although CE3 features an HDR pipeline, it can’t output HDR to a TV supporting it. We can have all the type of lights ranging from a candle up to the sun, all correctly displayed by the engine in very different environments, using proper eye accommodation, and tone mapping post processes. We want to add a proper HDR output to the CE3 just like the guys from Dambusters did for HomeFront 2.
Jakub Holik: You basically can’t use PBR [Physically Based Rendering] without HDR, as PBR is about real-world values. With those you have light sources with difference of multiple digits, so you need to tone-map them somehow to fit your monitor capabilities. And that’s what HDR is for.
What type of AO [ambient occlusion] will be utilized? Will there be different quality options? Example, SSDO [screen space directional occlusion] for console, height map AO for PC, etc.
Tomas Blaho: We are using SSDO on both PC and consoles. There is no other AO.
Jakub Holik: However, most of our AO comes from SVOTI [Sparse Voxel Octree Global Illumination] anyway. SSDO is there only for the small details.
As of the beta, you added voxel based global illumination. It’s my understanding that the default config of GI [global illumination] only provides diffuse GI, whereas specular GI requires light probes. What level of accuracy will the highest quality of GI contain? (Example, will they contain AO + sun bounce + point lights?) Will this be available on PC?
Tomas Blaho: We kept the same solution as was in the Beta on all platforms: AO + sun bounce
Following up, what level of GI (if any) will the console versions use? If they are using a pared back version, what lighting features will they contain? (Example, AO only? AO + sun bounce + no point lights?)
Tomas Blaho: Quality increases with the amount of GPU we can allocate for the GI. Both PS4 Pro and Xbox X uses a much higher quality than the base consoles. On PC, it depends on the chosen detail specs.
If the consoles use GI, what GPU time is required to calculate this on the Xbox One X and PS4 Pro?
Tomas Blaho: As these new consoles are using higher resolution higher on Xbox X), the amount of GPU requirements is increasing proportionally. It’s usually between 1/4th and 1/3rd of the frame time, depending on the scene.
CryEngine has an excellent TOD [time of day] system. How easy or difficult has it been implementing global fog in conjunction with this TOD system?
Jakub Holik: It has its limits. With regular depth-based fog, the problem stems from it being absolutely global. This leads to milky white mine corridors under the ground when the weather is foggy, which is not a good thing. We’ve managed to hack our way around it somehow, however, setting the proper valued outside with regard to other ToD (time of day) settings is fairly straightforward.
In contrast, the volumetric fog produces much nicer results, but plays badly with ToD. Transition during dusk and dawn inevitably shows the moment when the moon switches to the sun and that looks really ugly. Also, in our version of the engine, the solution wasn’t stable on all computers. It might be better in CE5, but in 3.8 it just didn’t work. That’s why it’s disabled; however, it can be enabled with a CVar r_VolumetricFog=1. The values might be a bit outdated though.
How easy or difficult has been implementing voxel based global illumination with this TOD system?
Jakub Holik: That is really simple and having dynamic ToD was the main reason we chose SVOTI as our lighting solution. Lighting the level manually would have been a nightmare.
It’s my understanding that GI does not work on forward rendering components (such as particles and water). Are particles independently lit?
Tomas Blaho: For performance reasons due to a high overdraw, particles lighting is very primitive, based on the nearest probe and per-vertex sun shadows on selected emitters. The water shader on the other hand is now correctly affected by all nearby lights and probes.
How is indirect lighting handled in water?
Tomas Blaho: I don’t think there is any special treatment for our water volumes regarding GI.
Will water caustics be implemented? If so, will PC have the option to utilize the highest resolution caustics?
Jakub Holik: Caustics are implemented for PC only. The resolution is fairly high and can be tweaked using CVars.
Historically, CryEngine tends to have more shader aliasing than other engines. What steps have you take to reduce this shader aliasing?
Tomas Blaho: We are using Subpixel Morphological Antialiasing (SMAA) and Temporal Antialiasing (TX) for distant pixels, just like Ryse. Higher aliasing is probably caused by 900p render on base consoles that we are also using.
What antialiasing options will be available on PC?
Tomas Blaho: Patch 1.3 brings following AA options to the Advanced Graphics Settings: Off, SMAA 1X, SMAA 1TX and SMAA 2TX
What antialiasing solution will be used on consoles?
Tomas Blaho: SMAA 1TX
Regarding motion blur, will the game utilize per object AND camera blur?
Tomas Blaho: Yes, both are utilized
Will there be an option to independently enable or disable per object blur AND camera blur?
Tomas Blaho: Players can switch to camera only or disable motion blur completely
Regarding depth of field, will DoF be utilized?
Tomas Blaho: Yes
Will DoF be utilized in-game, or only in cutscenes?
Tomas Blaho: DoF is utilized during cutscenes and cutscene-like dialogs
Jakub Holik: We didn’t find it nice for regular gameplay.
Will we be able to independently enable or disable DoF for gameplay AND cutscenes?
Tomas Blaho: Unfortunately, no. It’s not possible to disable it as the background graphics/animations quality would have to be improved without the intentional blur.
Too often in this industry, the PC version of a game has been artificially downgraded and held back so as not to appear too “superior” to the console versions in terms of graphics. Watch Dogs 1 is an infamous example. PC gamers are punished simply for having the gall to invest in powerful hardware. Will the PC version be downgraded and held back to seem artificially “closer” to the console versions? Will the PC version have visuals beyond what’s possible on console?
Jakub Holik: First of all, this is simply not true. I can confirm that we weren’t bound by any contract to make the game look worse on PC. And I sincerely doubt other studios have different conditions. If that is so, then just ask yourself what other than hate and a worse competitive edge could the developer get from downgrading the game on purpose. The reason for “downgrades” is simply a practical one – early propagational material which comes from an unfinished game or possibly a vertical slice, where only a part of the world is present in which case it might run better and without problems. Later on, with more content, the game will get slower and new problems will arise. This is where you need to start making compromises to deliver a well-running game to customers. Some technologies might work in most cases but get totally screwed in other particular occasions. Unless you can work around it, you have to ditch them. Most settings that affect the performance can be set differently between platforms, but there are some things that are not easily scalable though, and those need to be done with consoles in mind. An example would be a vegetation map: PC could potentially handle denser vegetation, but we can keep only one. However, the difference between what we want and what we can have is quite small in this regard. On the other hand, there are objects in the world that are present only on PC, SVOTI runs on all systems with scaled specs, lights have different shadow-casting settings on different platforms, and so on. So, although other engines might have a harder time scaling everything than CE, it is also possible that the developer didn’t have enough time to balance the settings well, but there’s for sure no conspiracy here. We are all trying to make good games if for no other reason than because good games sell better than bad ones.
Tomas Blaho: Warhorse [Studios] is quite small studio in comparison to other studios creating AAA open world RPGs, so we definitely can’t create very different content for PC only. All assets were prepared with consoles in mind. PC has the advantage of more objects, details, clutter etc. in specific level layers that are not exported for consoles. Furthermore, textures are generated as much as 4x higher of a resolution on PC. I personally don’t think Sony or MS would care about PC much. On the other hand, they would demand answers if there are incomprehensible discrepancies between each console platforms.
What specific graphics options and graphics features will the PC version include which will not be possible on consoles?
Jakub Holik: Caustics were already mentioned. Parallax occlusion mapping is another thing (high detail settings and up). Apart from that I can’t recall anything in particular. The rest should be present but tuned down.
Tomas Blaho: Players on PC has more options regarding vsync, motion blur, and anti-aliasing. Actually, the whole Advanced Graphics Settings is PC only, so players can tweak particular effects to the quality of his/her interest.
Will the game feature parallax occlusion mapping? If so, will PC have the option to utilize the highest quality version of POM?
Jakub Holik: POM quality depends on a number of iterations. You can have theoretically infinite number of those, but why would you? It looks great with a couple of them already. However, there is a silhouette POM available in CE. If you mean that than sadly, no, it’s not supported. It uses tessellation which is something that even modern cards still can’t handle well despite all the talk. It munches frames like nothing else so we’re not using it.
Will the game feature Phong tessellation or displacement mapping? If so, will the PC have the option to utilize the highest quality of either Phong tessellation or displacement mapping?
Jakub Holik: Nope, same as above.
Will the game have 21:9 support on PC?
Tomas Blaho: Yes. Ultra-wide monitors are supported.
Will the game support arbitrary resolutions on PC?
Tomas Blaho: The list of resolutions the player is choosing from is enumerated from the monitor so we can be sure a full-screen mode is working correctly. It’s also possible to set an arbitrary sized window (or a borderless window) using cvars r_width=X and r_height=X
Will the game have mod support on PC?
Tomas Blaho: Patch 1.3 brings a basic mod support in cooperation with Nexus mods. Modders should be able to put their mod paks to a specific directory where we make sure these are loaded in a particular order as the very last thing, so no other data will overwrite modded files. Each mod can include a manifest file among other things, which will let KCD verify a mod version compatibility and a custom .cfg file with a list of custom cvars tweaks.
Will the game feature primary and secondary key bindings on PC? And can PC gamers completely remap the controls to their heart’s content?
Tomas Blaho: Yes, both are possible. In the Settings/Control menu. We also support both XBOX and PS4 game pads on PC.
Full Disclosure: I Kickstarted this game.