How multiplayer fell into Human: Fall Flat
Standing together
Obviously, obviously, Human: Fall Flat is primed for multiplayer. It’s a knockabout physics game in which you play as a wobbly non-Newtonian man. He’s ungainly and awkward to control and, for heck’s sake, Gang Beasts showed how funny that combination is when several players get together.
Yet developer Tomas Sakalauskas never really saw his game like that. Human Fall Flat was meant to be a singleplayer physics-based puzzle game, a meeting of Portal and Limbo. And besides, he was pretty sure that online multiplayer was impossible. But it’s what players asked for, so what could he do?
“I couldn’t see it right under my fingertips. I totally missed it,” Sakalauskas tells me. He’d designed his game for singleplayer and to support RealSense, Intel’s Kinecty depth-sensing controller. “It was totally one device per computer and one player. I simply never asked the question.” So when he first released Human: Fall Flat on Itch.io back in November 2015, he was rather surprised to start getting requests for multiplayer.
He looked into implementing splitscreen co-op. Sakalauskas is a career programmer, the kind of person who relishes an interesting problem and meeting a client’s wishes, and he found appeal in getting his teeth into exploring a new technical dimension of his game while also supporting what his players wanted.
And implementing it turned out to be relatively easy. The main issue was making sure it was jump-in-jump-out, which introduced the need to watch extra controllers, mapping them as the second player entered and left the game. He tested it with his then-13 year-old son, who as Human: Fall Flat’s principal tester is probably the second-most influential creative force on the game. “We had fun and fought - well, you know what you can do in Human: Fall Flat.”
Sakalauskas’ main revelation was the way the mood of the game changed when playing with another. The difficulty reduced since the puzzles were designed for one player, and rough and tumble playfulness went up. “A totally new game came by adding splitscreen.”
Of course, early players wanted more than mere couch co-op. As the mode came together, Sakalauskas was fending off requests for online play, because he simply didn’t think it’d be possible. He knew that game physics is notoriously difficult in online games. “Network play is unfortunately not possible because of latency,” he replied to one message on the game’s Itch.io forum. “You can’t resolve conflicts when interacting with the world is the primary game mechanics.”
For Sakalauskas it was all about a problem he imagined would arise with a box. Let’s say two players pull on a box from opposite directions. When played in splitscreen on the same computer there’s no latency, and everyone knows where the box is at any point. But Sakalauskas knew that online play could impose 200 milliseconds between a player holding the buttons on their controller to pull on the box, for their PC to send that information to the host, for the host to combine all players’ actions, and then send the results down to the player so they could finally see what happened.
Action games deal with this problem with prediction, which is what causes the little disjoints in play when you’re headshot just after you’ve run around a corner into cover. It’s annoying but periodic; for most of the time you’re playing, prediction does a good enough job that it’s invisible. But in the constant flux of a physics-based game, with players and objects constantly affecting each other, prediction is harder. Hence the box problem. “You get a certain amount of time where each player believes the box has traveled a certain distance their way,” Sakalauskas says. “Now imagine the information for the box’s actual location is needed. You have resolve: where is the box?”
The player community split in its reaction to Sakalauskas’ pronouncement that online was impossible. Some defended his stance. ”Others were saying that this game did it somehow and you’re stupid, you can’t solve what others have done. And then the first set was like, ‘No, no, no, that game was totally different and what you believe works in other games is just smoke and mirrors.’”
A third group just wished he could make it somehow. And some of them did some extremely crude tests, using screen-sharing to play the game as it ran on a PC located on another continent. They reported it was playable. “I imagine the latency was quite bad,” says Sakalauskas, but it seemed to point towards a solution: if they felt it was playable even on a setup that involved streaming data-hungry video, then surely he could make a better implementation, because he’d only need to stream information about the state of the world. ”But of course, until you implement everything you don’t know whether it works or not,” says Sakalauskas.
He was also still unconvinced that online play would be as fun as splitscreen, where you can see the reactions of your partner. And what about toxic players? Still, having that problem-solving mindset he saw it as an interesting challenge, and got stuck in.
The work was all about optimisation, particularly compressing the stream of information that would synchronise the state of the world for each connected player. He read Glenn Fiedler’s Gaffer On Games blog for generic tricks that reduced the information needed to describe the rotation of objects. He reduced the amount of shards and rubble that glass and walls would shatter into. And he really needed to fiddle around with how objects sleep.
Sleeping is a key way computers avoid melting down when trying to calculate a world governed by physics. When an object is sleeping, no new information about its state is sent off to each connected player. But to sleep it has to be immobile, and Sakalauskas had some issues with getting some of Human: Fall Flat’s objects to stay still. Links in chains would keep setting each other into motion, for example. What’s more, Unity usually only allows an entire group of touching objects to go to sleep, not one or two within it. He had to dampen movement to help objects calm down enough to sleep. “Chains in particular had some small damping, so before you could swing really wildly on them. They became a little more sticky, but not to the point where it actually feels like it.”
After six months’ work, half on programming the core implementation and the other on finessing it for each of the game’s levels, he stepped back and realised it was even more functional than the six players he’d aimed for. “And I thought, why not, let’s open it to eight players.”
Remarkably, given the game was designed with puzzles for just one player to solve was now opened to eight rampaging blobby men, he barely changed the level design. There’s just one place, in the Water level, where there’s a chain that players can hook on to a boat. Sakalauskas noticed it’d glitch out if it was put under too much tension, so he put in an arbitrary rule that the hook would disengage if the chain was extended beyond a certain threshold.
He’s happy to let bobbing boats sink if everyone gets on board, and he’s happy that a lot of the puzzles become moot when everyone can climb on top of each other. “I don’t try to contain players or force solutions,” he says. “Making it watertight for singleplayer with all the physics stuff was extremely difficult, and when you add what eight players can come up with it’d be impossible to think about every scenario and make sure it works. Also, it’s not an AAA production; if something breaks, people tend to make fun of it instead of getting angry and posting messages that it’s broken.”
But at the same time, Sakalauskas was nervous about how it’d be played, aware that Human: Fall Flat has many ways players can sabotage each other’s progress. When he gingerly first released the update towards the end of last year, he was ready to flip a switch that’d restrict online play to people on the host’s friends list. “I thought it’d be players grabbing and throwing others off all the game and it’d be unplayable, but the community’s not that toxic!” Players managed to have fun.
Sakalauskas puts it down to there being few opportunities to have fun while messing others around. Once you’ve held another player down for a while, the idea of doing it again is pretty boring. “Also, the damage you can do is quite limited, compared to games like Minecraft where a griefer can come and explode what you built. So you can’t inflict too much pain on other people.”
I get the feeling that Sakalauskas doesn’t regard online play as the pinnacle of what Human: Fall Flat is, but he’s clearly pleased with what he achieved, not least because of its effect. After the update was released, in December last year, sales went through the roof. Six months later, across all platforms they’d reached four million.
But during the boom, Sakalauskas had to stop working on the game. He was burned out. He’d spent the previous two years in what he describes as crunch mode, working seven days a week and often for 14 hours a day. As for many solo indie developers, it was largely self-inflicted. “I enjoyed every moment while I was there,” he says. But it took a toll. “Maybe I’d change some of that.”
At the same time, he remains proud of the fact that Human: Fall Flat is the result of almost freeform creation. “All the game is a loop of reactions,” he says. “I was just experimenting and not knowing what would happen, and I was checking with playtesters if it all made sense or not. So there were quite a lot of surprises that some things worked as they did, and quite a little amount of surprises when they didn’t.”
So it’s kind of fitting that the trigger for his game’s popularity came from something he never thought of and seemed impossible. “You can’t plan for success. It just happens, you hit the right things and they resonate.”