We are getting closer to the Early Access release but there are still a lot of things left to do. We are working on the HUD for the multiplayer mode and the trailer for the store page, just to name a couple of things.

Race track 1, 2, and 3 are completed by now. But we want to do more for the early access release.

This is crazy.Level of detail is incredible.As a single dev working on my first game what feels like forever (I'm learning this from scratch) this is the most inspiring thing I have seen to date. Two guys for all of this.Thx for the motivation and I know I'll pick this game once is available.

This is crazy.Level of detail is incredible.As a single dev working on my first game what feels like forever (I'm learning this from scratch) this is the most inspiring thing I have seen to date. Two guys for all of this.Thx for the motivation and I know I'll pick this game once is available.

We are very happy to hear that our work can inspire others.All the best for your game development!

* integration of steam achievements * smooth fade out of last shadow cascade * improved network to use 2nd order prediction for vehicles * added reverb sound effect zones for the tunnel and under bridges (very cool effect imho) * performance improvements including LOD's for broad-leaved trees and the first car (everything else had LOD's already)

We've been working our butts off lately. Sorry for not responding sooner, but we are back with a huge update.

* in-engine recording and video capturing

We started simple by just recording the screen with the usual software. This not only was very limited in terms of camera angles it also performed rather poorly. So we added an in engine screen grabber which encoded the frame into yuv420 on the GPU and streamed it to host memory via async direct memory access done by the GPU copy engine (a fancy name for a dma controller). This performed much better and with some timing adjustments in the engine to ensure a perfect frame rate match it did produce good results.We were still limited to the in game camera angle as well as the real time render performance. So we decided to do another attempt. We essentially stream the data model deltas (a feature we use for online gaming anyway) to hdd on the game server. This produces a small file and has no performance implications. So we can record all sessions completely by default on the test servers. In our world editor we can load these recorded game data and play it back with random access. This was a nightmare to do since all scripts and client side stuff like sound and client side physics had to cope with clock skews now. But now we are able to perfectly render video footage of the game action from any camera angle with any resolution and quality directly by the engine renderer.

* added ground foliage (not all tracks have it yet)

we added ground foliage which is based on the "ground plants pack" by MAWI United. We had to adjust it a little bit to fit our needs but is a great time-saver and I can only highly recommend their products.

* geometry detail settings

we added an option to the
settings menu to turn down the geometry level. This is mainly visible in
reduced ground foliage and is meant to be used on low-end systems.

* ground and terrain texture normalmaps reworked

* added canyon and cliff surfaces

* we ditched previous color grading attempts

* improved atmospherics with air density, scatter and fixed the ambient light

* added different weather settings

With the new atmospherics and
air densitiy / scatter options we tried different weather settings an
kept a few. The differences are mostly subtle but it gives a little bit
of variation.

* new track biom (Zone-C)

As mentioned in the previous update we wanted the second biom to be completely different from the Taiga / Mountain / Forest biom which we have for the existing tracks. So we started work on an Antarctic / Sci-Fi / Offshore inspired biom.The track layout didn't change much during play-testing. This race track has some nice elevation changes and fast corner combinations which are perfect for drift transitions. I'm currently working on additional details like curbs, side rails but also on the big pillars which support the structure.

(work in progress)

* fixed wall-riding exploit "bug" which has been reported by our beta testers

We increased the physical friction of the guard rails so players can no longer take advantage by wall-riding.

* improved LODs for the guard rails

Because guard rails are bent alongside the track they need some hefty polycount in order to look nice up close. Keeping the silhouette as well as the shading intact while lodding is a big challenge. We try to do all LODs without a noticeable visual change in reasonable distance while reducing the triangle count at a 40-45% rate with each LOD. Depending on the complexity of the mesh we use up to four LODs in some cases.

* improved steering and chassis setup

We now have three different chassis setups. Each one has its own handling characteristics. We fine tuned the stiffness of springs and anti-roll bars as well as power split and weight distribution for best driving performance.

* fixed collider scaling bug and reimplementation of convex hulls

We now have at runtime cpu detection and full sse2 and avx implementations for convex hulls.

* finished the loading screen and the last menu items

* async shader loading

This is one of the low level topics I hoped I had sorted out long ago, but no. Doing things in an asynchronous way can never be fully abstracted away. Whenever you add or change something in the game world or even the menu you might have to wait for it to be ready. This needs to be hidden in some way or you have to preload it. We can now preload shaders not only for in game materials but also for menus and post processing.

currently about a dozen beta testers are playing DRAG in order for us to learn and improve on gameplay as well as resolve technical issues. A few minor things came up but are resolved already. It's going pretty smooth so far.

* we added something new to the single player mode but we dont want to spoil it right now

* we started work on a new additional fun, action arcade multiplayer game mode

* oh and ... yep, we are still working on that particle system. Hopefully there will be mud flinging of the tires soon

We need to apologize for everything taking which must feel like forever and not giving an update earlier.

answering a question regarding the LODs on the conifer trees and how to produce the billboard maps needed without speedtree:

Hi Brian,

The
billboards have been rendered from the final tree with two cameras. We
render albedo and alpha maps but when applied directly there will be a
visual mismatch because of missing light / shadow information from the
3d branches. Which of course the billboard can not provide in engine.

So we put diffuse information into the albedo map. Not a lot of diffuse information because it has to work with different lighting and variable angles of the sun. This
of course only works to some extent, but since it is missing a bunch of
geometry a billboard never will be the same thing. We try to get as close as
possible.

For the roughness information as
well as translucency we use fixed values instead of maps. We put the
cavity information into the vertex color. We don't orient the billboards
towards the camera because it can produce artifacts which can be
distracting in a racing game. We use a shadow mesh that is not visible
in order to cast decent shadows below the billboard trees even when the
sun is directly over head.

Did you guys change your mind about the page on Steam (or GOG or Itch.io, as long as the same updates/mods are available on all libraries)? You were planning on having the page ready in 2017, I've been leaving this Polycount tab open the whole time just because I had no ways to wishlist the game and be warned when it is out. :>

No worries, I understand there are probably good reasons for this change of plan, I am just interested in what is the new timeline.

Keep up the great work, the level of details you've put in the game and technical aspects really are impressive.

quite a long time but we are back again with what we hope is a decent progress on the game.

* splat meshes

We now have an entirely new system to paint ground foliage and rubble. So far we could either place objects individually in our scene or as a cluster. Clusters are a group of identical objects using less resources and adding procedural variation per instance. They are great for trees, bushes and such since you can control the exact position of every instance but do not work very well for ground foliage. This is because our new ground foliage spans very large distances and consists of around 20 different shrubs and gravel meshes. Manually creating hundreds of clusters everywhere for every shrub type would not be feasible. So the new system works by first defining up to four different mixtures of meshes. One could contain various stones to make an interesting rubble and another has small grass and so on.A base mesh spanning the entire track with a uv mapped splat texture (drawn in the editor) than defines how much of each mixture is placed at every position of the track. The final mesh instances are placed by the system. We use a BVH (bounding volume hierarchy) on the base mesh to ray cast the final positions on the gpu.

* tonemapping

We finally have a new tonemapper that is not only handling luma but also chroma correctly. This can be seen when a highly saturated colored light source gets very bright. In that case the color becomes white due to over saturation of all three color sensitive cones in your eyes. All three RGB cones overlap and are at least somewhat sensitive at every position of the color spectrum.

This meant we had to redo LUTs for the new tonemapping. We also noticed that our shadows were much to warm so we adjusted ambient color and skylight to achieve a much better overall scene lighting.

* next racetrack

we added the next racetrack to singleplayer and multiplayer mode.

The Antarctic / Offshore biome is a modular environment. The reason for this approach is a very high texture resolution on the metal support structure. The main module shown below was modified for junctions and an overhead version which caused some headache because they use the same unique texture as the regular module. We use re-coloring and a ton of decals for maximum variation.

Lodding is also crucial since the structure can be seen from great distance and can not be culled because the view is never obstructed. So we are lodding the base to one fifth of its original polycount without being noticeable to the player.

Additional smaller modules are placed on top to flesh it out. Like guardrails and these metal curbs that were textured in substance painter.

* static shadow

For our new track we ran into problems with our current shadow implementation. The new track has about two kilometers of unobstructed view distance. This was a little to much for our shadow range. We now have a fifth static shadow cascade spanning the entire level which gets rendered at level load time. This allows us to render shadows for the complete view distance and looks pretty stunning. We also enabled this for the other tracks on higher than low settings because the cost is very small.

* terrain 2.0

we discovered a technique on Forza Horizon 4 where they swap terrain textures in the distance in order to avoid noticeable tiling on distant slopes and hills.

We now use near and distance versions of terrain textures as well. This way we can put a lot more information into the near textures. Especially low-frequency normal and roughness information which gives a much more organic and natural look. This would cause horrendous tiling if not swapped to a distance texture with bigger tiling.

Additionally we now have procedural transitions between terrain textures and on decals. This improves the track / terrain transition and grass decals as well as the terrain itself.

* garage

we have a first iteration of the car selection / customization scene. The UI is still programmer art.

* vulkan

Yes we are working on a vulkan backend for our renderer too. We can already start the game and fully render the menu and video in vulkan. The game itself only renders partially and there is still a lot of work to do. This is not release critical but we want to be up to date here anyway.

* trees 2.0

when checking buffer visualizations we noticed that we could improve the trees further by increasing the depth with inner tree occlusion. We adjusted albedo values to realistic levels and added cavity information to the vertex alpha channels on all trees.

* physics improvements

* local splitscreen re-enabled

... and undergoing intensive testing

(friends "testing" in denmark. Yes, not actually splitscreen at this moment but it's the only pic they sent.)

* occluder material

we now use custom occluder meshes inside the mountain ridges to reduce overdraw and increase performance.

* animated wall effect

The technical wall texture contains various information in the individual red, green and blue channel. The red channel contains the static line pattern. The green channel has the time gradient used by the shader in a threshold operation to produce the infilling. The blue channel has a time offset to create different filling levels for each hexagon. This channel has a quarter resolution to be hardware texture block compression friendly. This way every 4x4 block has only one blue value to store increasing the quality dramatically and allowing us to use compression on this texture.

The texture was made in after effects in order to have a preview as well as a vector based source and random timing offsets for the different texture channels.

* dirt buildup on vehicles

we hand
painted dirt masks for our cars in substance painter and made a tileable
dirt material. Depending on the ground surface mud accumulates on the
car over timenow.

A special feature which we hope you can
appreciate is the abrasion of mud from the tire tread surface when
driving back on asphalt again. The sidewalls will stay muddy as seen in the second part of the animation below. All of this is
achieved with only one mask and some clever scripting.