This is The Mechanic, where Alex Wiltshire invites developers to discuss the inner workings of their games. This time, Viscera Cleanup Detail [official site].
Viscera Cleanup Detail is a game about cleaning. You’ll wash blood and slime from floors and walls and pick up rubbish, bullet casings and body parts. Your slop will spill, your ichor-covered boots will leave prints over surfaces you’ve worked hard to scrub, and you’ll drop an oozing limb just as you thought you’d made things right.
It’s brutal, menial work, and every feature and level is designed to make it extra fraught with problems. “A main theme is that everything in the world hates you, or is at least indifferent,” developer Nolan Richert tells me. “The noble janitor has a miserable job to do and no one cares or witnesses their struggle. They only complain about the results. It’s inspired by real life, you see.”
Also it’s fun, thanks to a set of tools that do all they can to hinder your attempts to just do your damn job.
THE MECHANIC: Physics bins and buckets and mops
When you get down to it, a lot of games are about cleaning. Tetris, Doom, destroying your enemy’s base in StarCraft. They’re about dealing with complications and tidying them away to restore or instigate order. Viscera Cleanup Detail hinges on that very idea, while also being based on what happens after that attempt to clean up. Arn Richert (RuneStorm comprises three brothers) says the very first concept was, “Why not be the guy who has to clean up after a big old space station mess?”
It all kind of cascaded from there. Physics wasn’t explicitly part of that original idea, but, well, if you’re going to have body parts, crates and trash to pick up, physically simulating them was a natural extension. Nolan started to implement bloodstains and a mop to clean them, and began working out how to allow players to pick up chunks of meat and move them around. And in an organic process of adding things that responded to the core concept and watching how they affected the game, physics kind of started taking over.
“We needed a bucket, because you had to transport something around to clean your mop,” says Arn. “So since you’d have to pick it up, it was simulated. We added water to it, and since it was simulated, we had to make sure it would spill. Bins went similarly. We wanted a container that you could use to place things you picked up and could transport for incineration. So we made an object, simulated it and tried it out. Having an actual bin that could be filled with other physics objects? Brilliant! So what started off as us just ticking boxes turned into a game-wide layer we hadn’t planned.”
From it all emerged a comedy of errors, a meeting of slapstick and industrial cleaning services. Players could now tip their buckets over or pick up a bin and send its contents spilling. Game physics are inherently funny, their mathematical unruliness complementing the out-of-body awkwardness that stems from games’ 2D visuals, lack of sensory input and crude controls.
Physics also opened up strategies for play. Creatively stacking objects could grant access to wider areas of the level, while throwing objects became a quick way of getting them to the incinerator. And physics also added challenge, with various tools requiring great care to be effective, causing even more mess if handled badly.
It was quite enough to force Nolan to solve how physics would actually function. “I still have nightmares about that shit,” he says.
A big issue was that the game would be supporting online multiplayer. Because they’re expensive to calculate, physics are calculated locally rather than on the server, and that means that for two people playing together, an object will often end up sitting in different locations on their two machines. That’s fine for decorative details, but for things that are directly related to play, it is not fine at all.
Viscera Cleanup Detail’s bin was where this issue found a particularly terrible focus. “Unreal Engine 3’s physics engine was probably not intended for simulating containers,” says Nolan. “Its physics in general is not designed seriously for multiplayer but we combined those things to create the perfect storm. Bins in some multiplayer tests were amazing things to behold. A yellow box held by a staggering janitor would continuously spew forth a fountain of shell casings, bloody limbs, chunks of viscera and everything else.”
That’s because the network correction system would teleport spilling objects back into the bins, causing them to issue an infinite fountain of the things.
But simply taming game physics outside of multiplayer was a challenge, too. The aim was for the game to feel ‘solid’. “That means feedback and accuracy,” says Nolan. “When you do something to an object it must respond immediately and the result must be very readable, so the player can read the change in the situation.”
This lead to exaggerating the proportion of objects. Bullet casings are, in fact, enormous, and so is the bin, so they’re highly visible and less fiddly to handle, and also less prone to problems such as working their way out of the game world or getting stuck.
And there was plenty of changing values to see what felt right. One object that took a lot of tweaking was the bucket; specifically, what forces would cause it to tip over. It had to definitely tip if a clumsy player walked into or dropped it, but shouldn’t if it was brushed. It also had to set down firmly on gentle slopes, and stay steady if someone stood on it. The answer was adjusting its centre of mass so it was bottom-heavy, but every little tweak had to be checked against all the things players do with buckets, such has how hard the mop pushes against it when you dip it inside, how your momentum affects it, and how much thrown objects would disturb it.
The mop caused its own challenges. Though blood and grime on the walls is rendered with decals, the same way it usually is in games, in Viscera Cleanup Detail they have to be more dynamic, remaining indefinitely in the world, able to be modified and sharing that state with other players. And they have to have collision detection so the game knows they’re being hit with the mop.
The cleaning system works by setting saturation levels. Each blood splat on a wall or floor has a value for the amount of fluid in it, and each hit of the mop depletes that value, and adds a value to its own saturation level. Once that saturation level reaches a threshold, the mop no longer cleans and instead applies the mess back into the world, so it has to be cleaned in the bucket, which itself has a saturation level. What’s neat is that the mess caused by a bucket spilling is proportional to how saturated it is, though the bucket always causes less mess than what was inside it. The game isn’t entirely malevolent.
The mop is one of Viscera Cleanup Detail’s immediate appeals, flopping and wobbling as you move. “To me it helps to bridge the gap between the player and the physical world of the game,” says Nolan. “The physics of the mop respond to your input immediately and show that your input affects physics in the game directly. After players see the mop, the fact that other things respond with similar physics is more intuitive.”
It helps that Arn’s work on the mop’s sound design is so squelchily pleasing. “For sounds you’d hear all the time, like using the hands and mopping, I needed something that felt good each time you used them, but also didn’t stick out too much,” he tells me. “The gloves’ squelch, the mop’s watery slosh, the grinding feel when your mop is painting blood.” He recorded almost all the sound effects himself; the mop’s splats are a combination of hitting wet ground and footsteps on wet ground, lightly hitting water in a bucket, some general impacts, such as hitting concrete with stick, “And I think there was also a touch of the mic hitting foliage.”
Nolan doesn’t remember whether the mop was always meant to be physics-enabled, but he shows me a concept drawing of the janitor with a mop from the start of the project. The mop is identical and absolutely calls out to be made from physics tentacles.
“That is probably a pattern we had throughout,” says Nolan. “Various mechanics were not going to use physics simulation according to their initial design, but when implementing we tried using physics and it stuck because it made the thing more interesting, even though it made development much harder at just about every turn.”
Worth it, though. The brothers’ hard work found the fun in all the hard work you get to play.