Dev Blog 7: Optimization

A new garage model has been integrated in the game. The plan is to populate the inside with props and allow the player to use the garage in career mode to perform maintenance on vehicles.

We are in the last miles before releasing the build to our team of testers (and later to the community). I am polishing the aesthetics, tweaking the mechanics and finishing all the sub projects that I had to skip in the heat of development. As the sandbox mode and map got more and more assets during the last year of development, we had one problem showing: performance getting worse and worse. Normal, since one major step was still to be done. That step is optimisation.

1001 ways

Optimising a game is a matter of reducing litterally everything to the bare minimum, but without degrading the visual realism of the scene. All this in order to get the best performance. Maybe you are (or maybe not!) familiar with words like level of details (LOD), occlusion culling, mesh complexity, vertices, or scene streaming. Those are all technical means of making the game run smoother. That’s exactly what’s been done to Snow Plow during the last weeks.

All 3D models have been optimised by simplifying the geometry when it can be done without compromising the visual quality, or when a less performance expensive technique can be used. For example, we can easily decimate a cylinder but still make it look smooth by applying a smooth shader on a rougher geometry. In the case of our motor grader, the total number of vertices have been reduced by 60% without altering the visual quality!

Level of details (LOD) have been integrated all over the game for trees and props. LOD’s decimate the geometry when objects are far away. Of course, you don’t need a super hi-res model if it’s a mile away and you can barely see it. The object is replaced by a higher quality model when you get closer. We added a nice pixelized transition between levels so that 3D objects smoothly change quality as you move towards them or away from them. The goal is, again, to display the smallest amount of vertices at all times. Integrating LODs made a major difference on performance.

Terrains and landscapes have also been optimised. Don’t forget that every terrain tile is 250×250 meters, and if the mesh is too complex, the amount of vertices go up really fast. So it’s been greatly reduced without any noticable change, but the performance gain was significant.

So you see how it goes: eliminating all the unnecessary stuff to unload GPU and CPU. Much much more minor tweaks have been performed. Shadows quality and distance have been adjusted since they can also have a big impact. Occlusion culling have been added, which allows to deactivate objects that are hidden behind another. Map streaming has also been coded, deactivating terrain tiles that are too far away.

The result is a very neat world seamlessly transforming to keep performance and visual quality.

The game is now at a satisfying performance level and all those optimisation features will be applied in future map development. For reference, frame rate at graphics setting Ultra gained 10 FPS during the optimisation process.

Garage and interior

Always developing towards a career mode, we modeled an integrated a brand new maintenance garage. The goal is to have it buyable in the career mode and used to perform maintenance, or simply park vehicles. The interior still needs to be filled with details and props. This is a first step in having the ability to buy and use interactive buildings in an eventual career mode.

Coming next

Next step is finishing and sending a first build to our team of testers. Still to be done in this build: adding a steering/leaning animation to the grader’s front wheel mechanism, adding collisions to the camera to make sure it doesn’t go into buildings or props, adding a few sound effects that were sitting on the to-do-list, and as mentionned, finish the garage’s aesthetics. While the testers are giving it a try, I’ll be moving away from the sandbox, and towards developing the open world map (which is already started), starting with “countryside” and “downtown” sectors, in parallel with the career mode features.

When I get thumbs up from the testers, we will release a first dev build to the community for free. That should be done via Steam Playtest, conditional to Steam’s approval of the project.

More features, at a glance…

  • Plows’ height above the ground now display on the hud as a reference. Can be deactivated in the settings.
  • Many adjustments have been made to vehicles’ engine, transmission and suspension behavior for more realism.
  • Aesthetics details were added to the trucks, like wipers, logos, snow textures on tires and more.

All for now! Stay tuned for more! You can also follow us on Facebook and Reddit.

Eric, project lead