Saber Interactive Team talked with us about their title Spintires: MudRunner, a new version of successful Spintires ported to Nintendo Switch.
About Spintires: MudRunner
80lv: Could you tell us a little bit about the Spintires: MudRunner project? How did this project start and how is it different from the classical Spintires version?
Spintires was a game that nobody expected to be the hit that it was on Steam, and when we considered the idea to make a version of Spintires for consoles, we did now hesitate much. This was a great opportunity to build more solid gameplay experience for both console and PC players.
The main difference of the MudRunner game from the original Spintires is an introduction of “Challenges”. A challenge is a map with a specific task or a set of tasks for the player. For instance, to climb the mountain via the serpentine road using a scout vehicle. Or to reach a trailer using the paved road, then park it in a hard-to-reach spot. Each challenge is set up on a map designed for this particular challenge.
Along with the main task of the challenge, the player may try to complete secondary tasks in order to improve his score. For example, a player can try to complete the challenge at night or without using a winch. Introduction of the Challenge mode added gameplay goals that were not particularly clear in original Spintires.
We worked a lot to improve controls and fully support the gamepads and a selection of steering wheel accessories. Along with the Challenges mode, the list of major changes and new features includes the cabin view, ability to save a multiplayer game, convenient ability to call a light vehicle to help a truck that stuck in the mud, tutorial level for the newcomers, and so on.
Deformation of the Ground
80lv: Spintires is a very interesting project in terms of the way physics and deformations work. It is incredibly interesting to learn more about the way you’ve worked on the key thing here – the deformation of the ground. What’re the algorithms that help you do this destruction? How can it be performed in real-time?
Mud physics is one of the key features of the game, and while it seems complicated, it is actually very simple. The terrain in our game is a regular grid of vertices displaced with a height map and covered with a mud layer. For visualization of the mud, the game creates another grid of vertices with higher resolution. Level artists paint the mud layer over terrain with a brush in the game editor.
Our physics engine performs collision and traction detection between the wheels of the vehicle and terrain. If there is a layer of mud or if the wheel starts to spin too fast, our algorithm computes forces that approximate real physics of the mud. Mud displacement is then calculated entirely on GPU. That combination of techniques proved to be fast!
There’s an article on that in Pavel’s Gamasutra blog that covers mud and water simulation and rendering in great detail.
Production of the Open World
80lv: The game also features some amazing open environments. How did you approach the production of the open world? What way does it function?
We start by generating the basic layout for the level: height map, distribution maps for plants and other objects, few other procedurally generated maps. Then we import everything into the map editor, where we can edit imported maps, add objects, tune visuals and set up gameplay.
However, what actually speeds things up is a system that we call “level references”. We make a “reference” which is usually quite complex set up of a relatively small area, like for instance a part of a road, a lake, a canyon, or a small village. Once a reference is created, we can use it on larger maps as many times as we need. References blend nicely into the base level and with each other. This allows us to build large detailed levels relatively quickly. However, there is still a lot of hand painting for specific areas of the map to distribute objects, roads, rivers, and other assets.
Game levels in MudRunner can be up to 1 km wide. The game performs physics simulation for mud, water, and plants only for the areas that are right in front of the camera. Limiting the distance at which the objects become visible helps keep reasonable performance on lower end systems.
80lv: What’s the way you’ve approached the painting of the vehicles? We’d love to talk about your texturing workflow and how you’re adding different deformations and scratches that build the whole atmosphere of rugged vehicles.
MudRunner does not feature PBR, so only a limited set of textures is required. A vehicle starts from the model with normal and occlusion maps where fine details are baked from the high poly “sculpt”. Experienced artists then create the basic paint of the vehicle taking into account degree of decay and weathering according to the vehicle period and design. Then, dynamic decals and deformations are applied to the model in real time.
Day & Night Cycle
80lv: How did you manage to add the dynamic cycle of night and day? That’s a very interesting thing to study and we’d love to understand how it works.
In fact, it’s not that complicated. There are several lighting presets for each time of day, describing sun intensity, direction and color, ambient lighting, fog, and other parameters. These presets blend into each other as time passes.
Porting to Switch
80lv: One of the most incredible things you’ve done is packing it all into Switch! Could you talk a bit about the optimization and changes you’ve implemented to port all these technical achievements to the console? Is Switch really enough to run such complex games?
When we were porting MudRunner to Nintendo Switch, we tried to bring the game to the platform in its original form, preserving visuals and atmosphere of the game as much as possible. From the very beginning, we tried to get the most out of the Switch hardware rather than looking for what we can cut from the players’ experience.
We managed to transfer the physics, mud and water simulation exactly the way they are on the other platforms. That was not the most difficult task though. The most complex was a graphical part of the game, especially for the console’s portable mode. We had to simplify some camera and atmospheric effects, used textures with a smaller resolution, slightly reduced foliage density, and render distance. Then we implemented Dynamic Resolution Scaling that allowed the game to adapt very flexible to the complexity of the scene in front of the camera with a virtually unnoticeable loss in picture quality.
In our opinion, the Switch is the most powerful portable console nowadays. Though for many, the Switch is primarily a portable console, we see numerous examples which show that, in fact, it is capable to run very complex games. We are sure that the quality and complexity of the games released for Switch will grow along with the developer’s experience with the platform.
Team of Spintires:
- Pavel Zagrebelny, Lead developer of the Spintires: MudRunner
- Rostislav Mikheev, Lead developer of the MudRunner Switch version
- Avenir Sniatkov, Producer at Saber Interactive