Right 3 Over Crest Don’t Cut!
There are a handful of physics middleware out there, but it does not look like you have embraced any of them for this particular title. What do you do for physics and car handling that is not adequately supported by other available middleware?
It's important to separate physics from handling. Physics, and physics engines, typically cover rigid body dynamics and collisions, where as handling covers the higher level car behaviour. In terms of middleware, none give you the handling required to make racing games of the quality level we target, so we focus our efforts in that area. The handling we use is independent of our physics engine, which has been used in multiple titles already. Our physics engine is targeted at car collisions and particle effects rather than being generic, which enables us to optimise for these specific use cases.
DiRT Rally is far more of a simulation of previous games, and looks to require more computing power to maintain a more realistic experience that leverages rendering, physics, sound, and FF. Are you able to leverage modern, multi-core CPUs or are you able to do all this work effectively with a single or dual core setup? What else would you like to see implemented that could suck up more of the potential performance of these very wide (up to 8 threads+) CPUs?
The handling model is not a million miles away from Dirt3 in terms of performance. The addition of the new turbo is the only real addition in terms of workload to the simulation of the car. We've been careful to not undo many of the optimisations from previous projects, as frame rate is very important for the PC community. On consoles it was the case you would try a fill the frame to target a constant 30/60fps, but PC users typically want much faster than that. The physics update, in order to be consistent across multiple machines, should still be as fast and as light weight as possible, with any additional processing going towards supporting multiple monitors and non-critical systems such as particle effects.
Our engine is already setup to support multiple cores, with various tasks (including handling updates) can be run in parallel to maximise processor usage. There are always areas that can be improved though, and increasing the number of available cores exposes which areas can be improved. Areas like aerodynamics or surface deformation could be improved and would see us pushing PCs harder.
What are the biggest changes in rendering going from DiRT 3/GRID Autosport to Rally? Is this using the latest EGO 4.0 engine, or a more advanced derivative of 3.5? What other features of the engine have we skipped over that you find most beneficial or jaw-dropping in nature?
We dropped the hybrid renderer we had (deferred and forward+) in favour of a full forward + solution. This allows us to deal with the renderer in a n easier way and allows us to mix the power of deferred rendering (many lights) to the benefits of forward rendering (transparencies, multisampling).
We have also worked to a GPGPU particle solution that is currently used for the weather effects, such as snow and rain. This combined with the forward+ allows us to light the rain using the car headlights and to bounce the rain particles on the depth buffer; similarly the snow stops on the ground by reading the depth buffer and then dissolves.
I don’t like giving our engine a number and there is a bit of a misconception of what we are using on DiRT Rally. Suffice to say it is the latest evolution of the Ego Engine.
DiRT 2 was one of the first DX11 games on the scene back in 2009/2010. It was lauded for its impressive lighting, water effects, tessellation, and a handful of other advanced implementations which made the game really pop as compared to the competition. Will there be work on Rally to leverage the advances that we expect to see with DX12? With WinX right around the virtual corner, what are you doing in terms of research and development to potentially make this into a DX12 app if you are headed in that direction?
We are always looking at advancing the tech and we will be looking to support WinX. I can’t really talk much more about this stuff yet because I don’t want to be giving away any secrets.
What are your plans in terms of other operating systems? One reader of ours has suggested that they would love to see Feral Games take DiRT Rally and port it over to Linux. Is something like this in the works, or does this make any financial sense for the work involved?
Right now we are focusing on listening to fan feedback and building up DiRT Rally using PC Steam but there is always potential for this stuff. As you say though, it has to make financial sense.
Have you looked into the current state of VR or had any conversations with Occulus? Racing games seem like a natural place to start for this type of technology. The “holy crap, I’m really in this car and I get to turn my head and look through a corner” would be a very interesting and visceral experience. Except for the potential motion sickness of the car flipping while your body is telling you that you are still sitting upgright…
Playing DiRT Rally with VR is amazing. Combine it with a motion seat and it takes things to another level. One of the coolest things about playing DiRT Rally with VR is that you notice how much gradient there is in our stages and that is something that gets a bit lost in a traditional display. We have had some meetings with Oculus and recently worked on the stereoscopic effect which was identified by the community as a issue. We have also changed our code to support the new SDK (0.6.0) and fixed the stereoscopic effect which is now correct and adjustable using the hardware config file (where you can specify a multiplier for the eye to eye distance).
Thanks again to Paul for answering my questions about their latest creation! We hope after the next few months to get Paul into a video interview so we can really explore what else has been added and the tech power this latest DiRT title!