Improbable Icon
  • SpatialOS
  • Use cases
  • Community
  • Pricing
  • Documentation
  • Careers
Lazarus00-3-1500x770

Spilt Milk on: Redesigning Asteroids for SpatialOS

19 March 2019

Spilt Milk Studios are currently working with Improbable to create Lazarus, a top-down multiplayer shooter set in a universe that can be developed, built up and then resets every week. In this, the first of a series of developer diaries, Andrew Smith, founder of Spilt Milk, answers some questions about Lazarus and developing on SpatialOS.

PLAYTEST: Spilt Milk are running a playtest of Lazarus from the 11th to the 13th November, beginning at 4:30pm UK time on the 11th and ending at 11:59pm on the 13th. To be a part of Lazarus’ journey, sign up for a free Steam code here.


The very first Lazarus pitch was based around the movie (as opposed to the book) Starship Troopers. Have you seen it?

In Starship Troopers, humanity is locked in a struggle against nasty alien arachnids. During the battle, Earth is devastated by an attack which involves the aliens launching asteroids at us across space. Enormous great chunks of rock tear through the atmosphere and, in that inimitable Hollywood Science way, only destroy the heroes’ hometown on Buenos Aires. In reality an asteroid strike of that size probably would have sent our whole planet into an ice age… but I digress.

When we first thought about what SpatialOS could do, we wanted to show off its strengths in a way that people would just instantly understand. Scale and persistence are often touted around in other games – traditional MMORPGs being the obvious touchstone. However, the actual facts  are often shrouded in marketing-speech.

Ask yourself – when did you last genuinely undertake a quest in an actual living world, where all the players are living their lives together, rather than being sequestered off in an instanced world somewhere? For so long companies have sold games based on qualities that are at worst not present, and at best so limited in execution that they do themselves and the tech a disservice.

By embedding some of these big ideas, like scale and persistence, in a simpler game type, maybe inspired by arcade games of yore, we felt we’d be able to highlight the amazing things that we can do with this technology.

The “Asteroids MMO”

So one of the ideas we came up with was the ‘Asteroids MMO’. I’m hesitant to type that ‘out loud’ as it were, because Lazarus has wildly more content than the original Asteroids, but the initial seed of the idea was irrefutably Atari’s arcade classic.

We thought that the idea of a sea of asteroids – all spinning, bumping and gently meandering – across which the player zooms and mines and fights bad guys sounded really awesome. And, to bring us back to Starship Troopers, the whole thing could be capped off by a kind of big boss fight where a single giant asteroid gets flung at the player community’s base and must be destroyed before it gets there… We thought that sounded rather awesome too.

That scale – thousands and thousands of spinning space rocks, with players able to following specific asteroids as they drift across the cosmos – would be an almost insurmountable task for a small indie studio to achieve in a reasonable timeframe or for a reasonable cost. What SpatialOS means is that we can dream big and then deliver on it, even with all of the unpredictable problems that the reality of gamedev throws at you.

We were able to aim high with thousands of space rocks, but wanted to know just how big we could go. One of the first things we did (after implementing a player ship, its controls and a weapon) was try to push so many Asteroids into the system that we could make it fall over. The size of the world was initially an arbitrary number (though one we’ve since put thought into) and so was the amount of entities. To give an idea of how hard we pushed, we ran one hour-long test that featured 3 million Asteroids in it, which is around 6 times more than actually exist in our solar system’s asteroid belt.

lazarus_asteroids

And, using a bunch of very cool debugging tools that come with SpatialOS, we were able to isolate in great detail the performance issues that cropped up and start optimising the crap out of them the very same day. Beating a system until it breaks is a Good Thing™ – after all, we’d rather it fall over in private than in front of the press, live on streamers’ channels, or in the hands of players – but without the right tools you won’t know what caused the problems, and you won’t be able to fix them.

Of course there are a raft of reasons why you might not want or even need all those asteroids. As you destroy them, they spawn more, which throws more stress at the system. You also don’t want a literal wall of ‘roids, because it would be a dull and monotonous task to chip through them all. Ideally you want your player’s time in your game to be full of contrast and variation – it keeps things interesting.

On a more concrete note, you also want room to manoeuvre. You don’t want things to be too easy – being able to shoot in any direction knowing you’ll hit with every shot, racking up points all the while, is a surefire way to undercut a lot of tension. Aiming and positioning is part of the game (arguably the entire game), so we need to make sure we’re not negating that.

Asteroids also form a core part of the game’s economy, dropping resources that the player has to collect, save up, and bank to spend on cool stuff. What that cool stuff is exactly is up in the air, but the loop is there and affects every decision the player makes. But we want players to have to decide to let a ‘roid go in favour of hoovering up the goodies, to be challenged about their movement as they try to shoot at those goody-filled rocks, and generally just to find the action satisfying and interesting at a base level.

And of course, the player only ever gets a relatively tiny glimpse of all of this coolness (limited by how we design the camera), so we are also keen for ways to show off these systems in any other way we can.

The perfect opportunity arrived when we were looking at what we could do with an ingame map. The play area is the size of North Korea, so players would need to know where they were in all that space. Combined with the placement of the Cenotaphs – giant alien constructs that will play a large part in the game, although I won’t go into details yet – the map will give you a world against which to reference yourself, places to navigate to, and reasons to travel… and an opportunity to check it at any time with the press of a button.

So, we came up with a system whereby Cenotaphs generate force, and that force (let’s just call it gravity) affects how the asteroids move, creating currents and eddies of celestial bodies that can only really be appreciated at a zoomed out level.

lazarus_asteroids_sm

Not only are they hypnotic, they have a  real and exciting impact on every player’s play – asteroids clump in interesting ways, keep moving, and generally make themselves predictable in a just-complex-enough way to be entertaining. Add enemies and competing players to the mix, and we’re starting to get cooking.

Next time, I’ll be talking about how we approach making AI in a procedural, persistent shared world, and what that means for tech, the player and the development process.