Jetsam #3: Learner Levels – How to Train Your Player

One of the trickiest parts of building Jetsam thus far has been conveying the game’s core concepts through our level design.

For those of you not in the know, Jetsam is a 2D puzzle game with a simple user interaction forming the game’s core gameplay loop – swipe in a direction, and Jetsam will move indefinitely in that direction until he collides with something that stops him.

Jetsam, moving up, right, down, left, up, down, and up in sequence in Learner Level 1

But things get more complicated, quickly. See that gear in the gif above? Jetsam has to collect it. And on every level, he has to then proceed forward to our exit – the purple circle you can also see. That exit is not “active” until the gear is collected.

How on earth do you convey ALL OF THAT to the player without being obnoxious in your tutorial?

We opted for something a little devious – breaking our teaching out into two levels, and focusing on different things in each. Let’s break down the first learner level’s structure a bit to explain.

Squares represent all possible move positions for Jetsam in Learner Level 1

Despite Learner Level 1 taking on the standard 9×9 grid size, Jetsam is physically restricted to the positions marked by squares in the screenshot above. He cannot move elsewhere, even though he can technically “travel across” a lot of the tiles. By starting him in the middle of the lower 3×9 rectangle, we open up some other movement options for him – that way the player doesn’t feel as restricted as they actually are.

The level design reaches a critical point in the right column. Jetsam can move relatively freely through the bottom portion of the level, but if he wants to move anywhere else, he must move upward in the right column. This chokepoint is intentional – no matter what inputs the player makes, they will ALWAYS collect the gear when they move to the upper part of the level, learning that it is collectible and safe to pass through in the process.

From there, we’ve made Jetsam’s possible positions entirely linear – we don’t want to try to teach too much in one sitting! After collecting the gear, he lands in the top right corner. His only options from there are to either go back the way he came, or go left to the top left corner. From there, the linearity is pretty self-explanatory – he eventually ends up on the purple tile, successfully completing the level, which gives the player some positive feedback for figuring out what’s going on.

But does the player really understand the cause-and-effect relationship between collecting the gear and exiting the level on the purple tile? Probably not – hence, Learner Level 2.

Jetsam moves through Learner Level 2

The philosophy here builds upon the technique used in Learner Level 1 – restricted movement, a chokepoint, and an intended teaching.

In this case, we want the player to learn that simply passing through the exit prior to collecting the gear will not complete the level – the act of collecting the gear actually “activates” the exit. The easiest way to teach that? Make the player pass through the unactivated exit!

The player’s immediate “wtf” reaction when the level isn’t complete on the first up swipe is designed to set up for an Aha! moment (those critical moments in puzzle games where the player learns something), in this case the realization that grabbing the gear activates the exit. By segmenting the upper part of the level, we call attention to the separateness of the gear and the exit, hopefully prompting that lightbulb to come on when they grab the easily-positioned gear. Then, it’s only a matter of time until they revisit the exit’s location and successfully complete the level (ideally they will also notice that the exit looks different the moment they collect the gear, but that isn’t necessary for their training to be complete).

Structure-wise, this level foregoes an opening “free movement” section and opens straight into the chokepoint – the reason being that it builds on the past level, and we don’t want our player to get distracted and forget about what they learned in Learner Level 1 upon starting this one (they are meant to be played in sequence, after all). However, they are free to conquer the top section of the level in multiple ways – restoring their feeling of freedom for a short spell. By carefully stitching together linear and free-moving sections, the tutorial feels less like a tutorial and more like a playground.

And so, two easy levels teach three rules:

  1. The gear is collectible
  2. The purple blob is the level exit
  3. The exit doesn’t turn on until you’ve collected the gear

Success! We’ve taught our player how to navigate our somewhat-complicated game, and never issued a single text prompt to tell them anything directly. They got to figure it out themself – and that’s what you want in a puzzle game. Hopefully what we’ve learned from tuning our game can help you tune yours – and you can design some kick-ass learner levels that help convert players who download your game into players who finish it.



If you liked this blog post, follow us on Twitter and check back regularly here for updates. If you have an iOS device, sign up for our iOS TestFlight Beta here. We can’t wait to test our design and puzzlecraft with a wider audience, and would love for you to be part of it.

Jetsam #2: How do you get excited about game dev again?

It’s been a while since we last updated the blog – life has a certain way of sneaking up on you when game dev isn’t your full-time job. So that’s what we want to talk about today.

Making a game is an incredibly powerful experience – there’s something special about building something for people to play with, which is entirely distinct from building something people use for work or for other purposes. The person playing your game wants to play it. They’re motivated. They show up. They cooperate with other players to build community. They compete with each other too. They find bugs, and sometimes exploit them to do absolutely insane things that you can never, ever even hope to anticipate as the game’s developer.

When you make a game, you’re essentially giving a bunch of passionate, talented, and slightly crazy people a toybox, and saying “go.”

The joy of building something for an audience like that can consume you. You find your idle time punctuated by a constant stream of creative thoughts – should I add that new mechanic? Tweak that level? Expand the plotline? And every now and then, your wandering mind strikes gold and the intoxicating force of inspiration keeps you up late into the night, distracts you at work, or makes you unwittingly skip a meal.

But at a certain point in any long-lived project, that fountain of creativity shuts off.

And then, to make it worse, we tell ourselves that it’s okay.

We say we don’t have the time to keep working on our game – work is too busy, life events need our focus instead. We criticize ourselves for lacking the discipline to finish, but secretly we know that working on our games with anything resembling “discipline” would probably suck the fun out of working on them. Where does the inspiration for writing out tickets in a task manager come from? Where’s the joy of creation in writing unit tests? Where’s the excitement in fixing that ONE. STUPID. BUG?

We’ve reached what I’ve started calling the “Chasm of Death.”

This is the place where most games die.

The emotions, skills, and motivations that brought us to this chasm will not get us past it. Our excitement about what our game could be has been dampened by an all-too-real understanding of what our game currently is, and the realization that there’s a hell of a lot of distance between those two states.

All too often, this is because we now have to do something unpleasant. But not just any unpleasant thing – after all, we’ve slain a number of bugs and recovered from many prior setbacks to get to this point. Now, we’re facing something so unpleasant that we’d rather just go back to where we were before this game, and forget the whole experiment. Rewrite the whole physics engine? Redo the entire story arc of the protagonist? Devise a brand new algorithm? Refactor the netcode? Throw out every level we’ve already built and build new ones?

These are Herculean tasks for anyone, but become especially daunting and scary if building this game isn’t your full-time job. If you have other responsibilities, hobbies, and desires, you’re instantly in a pit – it’s easy to justify spending free time making your game when it’s fun, but this? This?!

The Chasm of Death is where we found ourselves two years ago, shortly after we posted our first, super naïve and enthusiastic dev blog. For Jetsam’s level editor to work out – what we hoped to be its defining feature as a puzzle game – we had to build a level solver. To build that solver, we’d have to abstract away a lot of the game logic into something memory-light that would be usable in a giant, gory BFS algorithm meant to run on mobile phones. A scary task indeed. We just wanted to make puzzles.

So, we let the dream fizzle. An early version of the app sat on our phones, untouched, unloved, and basically forgotten.


Fast-forward two years, and I found myself getting drinks to catch up with a former coworker of mine (who I had shown some early builds of Jetsam). This coworker mentioned the game – she asked me if it was in the App Store yet, or how it was going.

Embarrassment and regret about the game’s then-current state stung me hard.

In that moment, Jetsam came back to life. I launched the app, and to my surprise it still worked (iOS updates had me worried). I handed my phone across the table and watched my former coworker play some of the demo levels. She really enjoyed them.

Instantly, a fire was re-lit. I called up my friend who had been helping with the game, and instructed him to clear his Thursday afternoons for the foreseeable future. Fortunately, he agreed.

I have certainly improved as a developer in the intervening years – as has my friend. So we approached our old problems with a totally fresh perspective, and an understanding that we wanted to get to a point where lots of people could play our game. We weren’t going to let a pesky level solver stand in the way.

Several weeks of work later, our lovable hero has gotten quite the facelift. We went crazy with particle effects, animations, and iconography. We’re also nearing final graphics for our levels, and currently assembling a playable beta of 11 levels to test our design and puzzlecraft with a wider audience (iOS TestFlight Beta signup form here). The first part of our level solver monster has been slain – and we’ll definitely be blogging about that soon.

Meanwhile, check out one of the newest levels we’ve added to the game’s first world! Swiping moves you indefinitely in the swipe’s direction until you hit something to stop. The goal of each level is to collect the gear and get to the exit before consuming all of your swipe fuel.


When all is said and done, we were really lucky that one person who cared gave us the spark that reignited Jetsam’s boosters. So we’d like to be “that person” for you.

If you have a “dead” game you want someone to look at – and we know you do – post about it in the comments! We’ll make sure to reply to everyone.

If you liked this blog post, follow us on Twitter and check back regularly here for updates. You won’t have to wait two years for the next one.

Jetsam #1: Our Hero

We’re proud to introduce Jetsam – the lovable robot protagonist of our upcoming iOS game of the same name.


Abandoned in space, our hero boots up to find the letters JETSAM emblazoned across the interior of his small space capsule. Upon perusing the materials present inside, he finds the meaning of the acronym – he is a Junior Engineer in Training for the Scrap Acquisition Machines company. He’s been dispatched to this remote corner of space to salvage worthwhile scrap material from the wreckage and space junk all around.

With nothing else to go on, he’s dropped into his first mission: enter an asteroid field, collect the scrap, and return to the extraction point.


Jetsam quickly learns that moving spends one unit of fuel and carries him indefinitely in a direction until he collides with something solid. Can he be the most fuel efficient robot known to all of Scrap Acquisition Machines? What other mysterious things are out there in the vastness of space? Will the MSPaint-drawn square asteroids eventually be replaced with real graphics?

Follow us on Twitter and check back regularly here for updates!

“It’s like being in a band, for programmers”

So we finally sucked it up and decided to legitimize our side projects. We even got ourselves a fancy six-letter domain name.

Welcome to Zonzle, a company about making awesome mobile games.

Of course, developing games is to a programmer like being in a band is to a hobbyist musician – something most would certainly love to do, but something few manage to actually make a living from. We’re each too cynical to work for a triple-A game company (have you seen how draconian typical working conditions in the industry are?), but we’re each too naive and optimistic to let the dream die without a fight.

The barriers to entry are low. The market is saturated. The odds are stacked against us.

We have nothing to lose.

We’re cooking up our first iOS game at the moment. Details may begin to leak as it bakes. In the meantime, enjoy tilting your screen back and forth and determining whether our site’s theme color is blue, purple, or blurple. Pixels are WEIRD.