This is an article about how I designed the co-op levels in Scrap Galaxy. Scrap Galaxy is a local build-and-destroy deathmatch game for up to 4 players. It is a 2D top-down shooter taking place out in space in a galactic junkyard. In this setting, the players are trying to survive by constructing space ships. The idea of the co-op mode is that the players should learn how to play the game and introduce the components you can build spaceships from.

Posted by CatalopeGames on Nov 27th, 2017

Hi,

Jesper from Catalope Games here . This is an article about how I designed the co-op levels in Scrap Galaxy. Scrap Galaxy is a local build-and-destroy deathmatch game for up to 4 players. It is a 2D top-down shooter taking place out in space in a galactic junkyard. In this setting, the players are trying to survive by constructing space ships. They can use these to fight either against each other or together against the AI.





The idea of the co-op mode is that the players should learn how to play the game and introduce the components you can build spaceships from. Each level is designed after a specific component type and most enemies will be based on that one. The levels end with a huge boss based on the map specific component as well.





The players first constructs a base ship out of a few parts. They can choose from all the components they've encountered from the previous levels. After each player has constructed a ship it is time to fight.

After each round of fighting enemies the players will continue to build on their spaceship. This goes on until they beat the big bad boss.

I found the Super Mario 3D World's 4 Step Level Design from Game Maker's Toolkit video very useful when designing them and can strongly recommend watching it.

How it works technically is that each level is parsed from a ScriptableObject in Unity. Each command starts with a dollar sign and comments start with //. Here is a small snipped from the seventh level which focuses on mines.

// Building new ship $AllowedParts AllShip e t m r i a x g $StartingHand AllShip 5 true 4 e r t $AllowedParts NewShip e t m i r a x g $StartingHand NewShip 7 false 6 i t m e a g r x $WaitForBattleMode //=============== 1 Safe space ===================== // Spawn weak normal enemies $Analytics 7_minelauncher 10 $Wait 2 $Spawn 30 -15 0.5 0.5 0.5 e-rmr+e-rmr $Wait 2 $Spawn 30 0 0.5 0.5 0.5 em--ttrrarr $WaitKill 1 $Wait 2 $Spawn 30 -15 0.5 0.5 0.5 e-rmr+e-rmr $WaitKill 0 $Analytics 7_minelauncher 20