Inspector Badass

Come play the latest jam game I made together with 6 friends.

It’s a fun beat’em all / rogue-like
called Inspector Badass,
and we built it in 72h
for Ludum Dare using CraftStudio.

Inspector Badass

How we did it

Coordinating 7 people to create a game over a week-end isn’t an easy feat. There are a few things that helped us achieve this:

  • Most of us have worked together before. We get along great, we have similar views on what’s a fun game. We know our respective strengths and weaknesses.
  • Five out of the seven of us worked in the same room, which turned the jam into a great bonding experience.

But perhaps most importantly, we built the game using CraftStudio, the cooperative game-making software I’ve designed:


A CraftStudio project is a shared place where you get together. You can chat, see one another’s 3D cameras and text cursors and create cooperatively.

Press F5 and the game starts. Close it, press F5 again and any changes made by your teammates since you last launched will automatically be downloaded. The game evolves right under your nose.


Spot something that’s not quite right? Fix it up and everyone in the project gets the change right away. It’s great fun and it makes for a very fast iteration cycle, which is critical to building great games.

Wanna see how Inspector Badass works under the hood? Click here to join the project as a spectator and see for yourself!

Generating interesting levels

Inspector Badass is a rogue-like. Two of the main elements of the genre are randomness and permadeath.

To generate cool levels, we start somewhere (green tile on the figure below) and build a main path by appending a series of pre-made rooms (more like street corners, in our case) in a random direction. In the actual game, the main path (grey-ish tiles) is 15 to 25 blocks long and can’t intersect with itself.

We then add a bunch of shorter branches by starting at a random location on the existing path and appending more rooms to it in a new direction. We make sure that there is no existing adjacent room to the left and the right of the new room, to avoid creating unrealistically small city blocks. We repeat this operation until we have a big enough level.

Note that since we don’t prevent loops, branches can create interesting mini-mazes by randomly reconnecting into the main path.

Green = start location, yellow = branches, blue = buildings, red = boss room

Green = start location, yellow = branches, blue = buildings, red = boss room

The third step involves adding places of interest like bars, casinos and the boss room. We do this by yet again selecting a random existing street chunk and looking for an adjacent location that is empty. The generation code then looks for existing props near the building entrance and removes them to avoid any obstruction.

We have a couple variants for each of the 24 – 1 possible street chunks so that things don’t feel too repetitive. Enemies and shop characters are spawned randomly in predefined spawn locations for each chunk.

That’s pretty much it! If you want to see the actual code, check out the World Generator script in the project.

Making it juicy

3 days is a short amount of time and we didn’t get to put in the game most of what we would have liked. Rather than scrambling around to get as much content in the game as possible, we tried to make sure it was a good vertical slice of what the full game would be.

An important part of this is making sure the game feels right. Our main artist Pixel-boy designed some great characters:

tumblr_n4ufualrIi1svbgupo2_250 tumblr_n4ug36orkK1svbgupo6_250 tumblr_n4ufualrIi1svbgupo7_250 tumblr_n4ug36orkK1svbgupo3_250

We also worked to make picking up money and evidence feel very satisfying. Stuff doesn’t just vanish, there are sound effects and cartoonish animations to celebrate and emphasize what happens.


We had planned some blood particles for when the character gets hit but didn’t get around to putting them in, which makes this aspect of the game feel a bit “meh” sadly.

About a day or two in, I fired a quick message to BaerTaffy, a let’s-player / voice actor which I enjoy watching a lot, to ask if he’d be willing to record a couple lines to make Inspector Badass come to life. We didn’t hear back until a few hours before the deadline so we rejoiced when he replied asking if it wasn’t too late and sent a couple of awesome voice clips our way.

Go make games!

Whether you do it alone or with a team, game jams are a ton of fun and a great learning experience. Ludum Dare is over and won’t return until this summer, but there are plenty of other jams you can take part in.

Ludum Dare

Still here? If you haven’t done so already, go play Inspector Badass and check out the CraftStudio source project. You can follow me on Twitter too!