“Supersonic Acrobatic Rocket-Powered Battle-Cars was a moderate success but the phrases ‘niche genre’ and ‘cult classic’ don’t exactly whet the appetites of people wanting to make money,” Jared Cone tells me. The lead gameplay programmer has agreed to talk about the making of Rocket League [official site] – its physics, its multiplayer, its tremendous success – but the difficulties start before the coding began, with the 2008 release of predecessor SARBC and its middling reviews and sales.
“There wasn’t an inkling of interest coming from anybody. That’s why Rocket League, like its predecessor, is completely self-funded,” says Cone. “We would do work-for-hire jobs to pay the bills while working on Rocket League in our free time and between contracts. It was difficult and the game had a low probability of ever releasing, but in the end it was probably for the better because we got to make the game we wanted to without having to cater to outside interests.”
Psyonix were free to chase the fun. Seven years and five million Rocket League downloads later, it looks like they caught it.
SARPBC has its roots in Unreal Tournament 2004’s Onslaught mode, for which Psyonix founder David Hagewood was drafted to prototype vehicle physics. Onslaught went down a treat, so rather than change tack, Psyonix opted to apply their vehicular expertise to a then unnamed racing game that pitted driver against obstacle, tacking on a rocket boosters as a means to control speed. But what’s more fun than smashing cars off static objects? As SARPBC’s Crash Course mode was to demonstrate, smashing cars off other cars and spoiling people’s days.
“That mode was so fun we decided to focus on it as the primary game,” Cone says. “We needed more game modes to appeal to publishers, so we started exploring what else we could do with these cars. Several prototypes were made until one day somebody decided to drop a ball into an arena to see how that played out. Even in its rough infancy the game was so fun that we yet again changed course to focus on it as the primary game. SARPBC and Rocket League were very much born out of ‘following the fun’.”
Alas, SARPBC was the product of a relatively new studio chock full of devs fresh from college (Cone himself joined with a flock of interns brought in to wrestle with SARPBC in its adolescence) and it struggled. To start, it was self-funded, and the money was gone; the marketing budget was buttons and fluff, and word of mouth wasn’t much of an option with YouTube in its infancy and Twitch non-existent. Psyonix wanted to remake SARPBC as soon as it released.
The initial concept behind Rocket League was a grand series of mini-games to test every aspect of automotive acrobatics in an open world. Cone still hopes to follow up that first pitch, but after their experience with SARPBC, Psyonix knew their best bet was to pick a single goal and nail it. That goal became scoring goals – using your leaping vehicles to steer a giant ball towards an opponent’s goal. Even this required multiple modes, however.
“We’ve always thought of the multiplayer as the most fun part of the game, but surprisingly the majority of people who bought SARPBC never played online – not even once. This meant we needed to have a more robust single-player experience for Rocket League, which is why we decided to focus on the Season mode instead of mini-games. The mini-games in SARPBC were fun and challenging, but for Rocket League we wanted players to spend time playing something that would train them and perhaps encourage them to play online.”
Of course, once Psyonix had figured out how to shepherd people into online matches, there was the small matter of forcing a real-time physics simulation to run in sync on up to six machines. The precursor to a solution was there in SARPBC, but Cone speaks of it like a war veteran reliving unspeakable things.
“Getting SARPBC somewhat playable over the internet was a terrible hack that didn’t even work all that well and continued to haunt me for years after its release,” he says. “In the back of my mind I was always thinking about how we could possibly get a high-speed rigid body physics game to play well with high latency. All multiplayer games with physics-based vehicles that I can think of don’t even try to deal with latency mitigation – they just have the client send its inputs to the server, wait for the server to run the physics simulation, then wait for the server to send the results back to the client. [But] Rocket League’s vehicles can turn on a dime, accelerate and brake extremely quickly, and have the ability to instantaneously change directions using jumps and dodges. Playing Rocket League without client-side prediction with just a 40 millisecond ping is uncomfortable. Playing with a 70+ millisecond ping is pretty much pointless.”
One of Psyonix’ other games helped point the way. “My work with client prediction on Nosgoth gave a lot of insight into how shooters handle client prediction for player characters,” continues Cone. “It’s a technique that’s been used by all shooters since the mid-90s. For Rocket League I had to extend the technique to work with a rigid body simulation instead of player characters, and to accommodate the client being able to predict vehicle movement while also properly interacting with the dynamic ball. There are issues with mispredicting other clients interacting with the ball, but overall I’m very pleased with how everything turned out.”
Nothing about the simulation is fudged. To achieve it, Psyonix had to integrate the Bullet physics engine with Unreal Engine 3’s PhysX, allowing them to reset the game state a few beats back in time and run up to a half-second catch-up simulation when things begin to desync. As an added bonus, Bullet offered much more control over suspension and friction than they were able to eke out of SARPBC.
In a way, Rocket League’s purity is misleading: under the surface of its early prototypes lurked a tangle of code that went far beyond telling the ball to bounce. Agile though Rocket League’s bumper cars are, the ball had to be upscaled to make it a practical target, with the unfortunate consequence of raising its centre of gravity relative to the vehicles. Hit a giant football with a regular jet-powered car and it’s some time before the ball returns from orbit. Psyonix had to integrate their own counter-forces to make the mutant ball behave, stepping through impacts frame by frame to spot problems in the logic.
“It seemed like every time a new problem was found, a new line of code would be added to our ball interaction logic to try to mitigate it,” Cone says. “After a while the code had grown from a nice simple three-line function to a monstrosity full of curves and scalars and branching logic. It got to the point where we couldn’t even debug the problems in the replay because we simply couldn’t follow the logic anymore. We found that adding more complication to the interaction just produced more unpredictable results. Eventually we decided to nuke all of our changes and start from a fresh perspective. Finally our consistency problems were solved with just a few minor tweaks to the original algorithm from SARPBC.”
Aside from glamorizing the sort of behind-the-scenes physics that typically gets relegated in reviews, Rocket League – and SARPBC by extension – is a remarkable confirmation of the cliché drilled into aspiring indies on a non-existent budget: one lean machine polished to perfection (and sometimes forced into shape with conviction) can carry you further than a loud, oversized muscle car. Roping in SARPBC veterans for a closed alpha, Psyonix were able to get experienced outside eyes on Rocket League’s less remarkable facets before release and buffed them into oblivion. It might simply be about booting balls into goals with supersonic automobiles, but Psyonix have iterated ceaselessly and continue to do so with the help of their players. The result is joy in motion, to watch as well as play – MLG’s inaugural Rocket League tournament ended with a heart-stopping overtime punt.
Far from letting the bright lights of esport-dom addle their brains, however, Psyonix’s next move seems measured and sensible: improved spectating and tournament support, bug fixes and a push into new countries. The rest, Cone says, is pretty much up to the community. The same scrupulous approach that tuned SARPBC into the honest, reliable Rocket League should keep it running for a very long time.