How Kerbal Space Program's modular design enabled success

The vast complexity found in the latest version of Kerbal Space Program is the result of the team’s willingness to throw out the hard work they’d previously done and start again.

The space exploration simulation invites players to build and fly rockets and other types of craft. The allure of the game comes from the simple mechanic used for building. Simply pick a piece, move it to the right position and it snaps into place. Players are given a clean slate, a collection of parts and an entire universe to explore.

The initial development was incredibly fast, and the code was buggy. Technical artist Chad Jenkins, in a presentation at this year’s Game Developer’s Conference, says that the team came to a crossroads in their development around the time they were invited to be part of the Steam marketplace in 2013.

"The game was, in some ways, an experiment," Jenkins said, referring to its origins as a side project for a Mexican marketing company. "We were not sure if it would succeed or not. And really the next update could have been the last. We didn’t really do a lot of planning ahead."

While preparing the game for sales through Steam they found they were spending just as much time fixing buggy code as they were creating new content. Something had to give. They decided to take the simplest elements of the game, the actual rocket components themselves, and rebuild them from scratch.

The solution the team settled on was what they call a "modular design." Individual ship components, like engines, were broken down into their essential functions. Instead of creating a unique, complex set of code for each type of component, they instead programmed each of the essential functions the component would perform and bundled those functions, or modules, together.

"We focused on breaking down all of our systems into smaller chunks," Jenkins said. "For instance … a discrete object that you can place in the game we broke down to just a visual model, its basic attachment module, physics and how the destruction and persistence is handled.

"So it became in essence just a container. And, more importantly, it had a list of modules, which is the code that we would attach to them."

With a 3D model and a few modules it was easy to create a solid fuel rocket. When they added a module to allow fuel to flow into and out of the engine, the team had a liquid fuel rocket. Add another module to detect the presence of oxygen in the atmosphere, and they had made a jet engine. The team found they could build the code for the game much the same way that their players built rockets while playing the game, by cobbling together assets from a common pool of modules.

Their modular design approach allowed the team to rocket past their tiny list of 15 unique ship components to now over 170. The programming methodology was so successful that they’ve implemented it throughout their game, including the animation system. Jenkins said it has enabled their designers to be more productive, and has allowed their community to build thousands of mods essentially on their own.

Jenkins says that the modular design approach is still paying dividends for KSP’s growth. When NASA asked to partner with them to promote their bold mission to capture an asteroid and bring it into earth orbit, the team found they had already created most of the modules needed to make the expansion pack possible.

"The really great thing is that we only had to add a little extra code," Jenkins told Polygon. "We had to add a module for the actual grappler to grab onto [the asteroid], but the rest of it has been mostly … upgrading systems to make sure that [players] can rendezvous with the asteroid.

"It really wasn’t too bad. Most of what we needed was there. We just kind of polished it up and put it together."

Jenkins says that his Monday GDC talk, the first for KSP, held special meaning for him and the rest of his team.

"When we first came to GDC we had kind of been developing in a cave," Jenkins said. "We came to GDC wide-eyed. … We didn’t really kind of feel like we belonged almost. We were kind of outsiders.

"This time around it’s like … we’re real game developers now."

Kerbal Space Program was awarded an honorable mention for the Seumas McNally Grand Prize in the 2014 Independent Games Festival. You can learn more about the formation of the team, and their partnership with NASA, in our feature.

More from Polygon

Enemy Starfighter: Homeworld from inside a fighter

  • Call of Duty: Advanced Warfare gameplay trailer

  • Diablo 3 - Xbox One vs. PC comparison

  • Hearthstone - Military Quarter gameplay video

  • Elite: Dangerous Overview video

Latest Discussions

X
Log In Sign Up

forgot?
Log In Sign Up

Please choose a new Polygon username and password

As part of the new Polygon launch, prior users will need to choose a permanent username, along with a new password.

Your username will be used to login to Polygon going forward.

I already have a Vox Media account!

Verify Vox Media account

Please login to your Vox Media account. This account will be linked to your previously existing Eater account.

Please choose a new Polygon username and password

As part of the new Polygon launch, prior MT authors will need to choose a new username and password.

Your username will be used to login to Polygon going forward.

Forgot password?

We'll email you a reset link.

If you signed up using a 3rd party account like Facebook or Twitter, please login with it instead.

Forgot password?

Try another email?

Almost done,

By becoming a registered user, you are also agreeing to our Terms and confirming that you have read our Privacy Policy.
Spinner.vc97ec6e

Authenticating

Great!

Choose an available username to complete sign up.

In order to provide our users with a better overall experience, we ask for more information from Facebook when using it to login so that we can learn more about our audience and provide you with the best possible experience. We do not store specific user data and the sharing of it is not required to login with Facebook.

tracking_pixel_5353_tracker