Jim in the Box: A game to show my friends Playdate!

Jim in the Box: Devblog 1


I've been super excited to develop for the Playdate, and was trying to figure out a fun, simple game to make in my spare time. I had a few goals:

  • Simple: I don't have a ton of spare time to work on it.
  • Multiplayer: I wanted to make a game to show my friends what the playdate is all about.
  • Party: Hopefully, we're all laughing at the end of a little session!

Keeping in mind that I will only have one Playdate (and it doesn't have network abilities at the moment) it has to be some sort of pass and play title. Now all this sounds to me like a Mario Party Minigame. And that crank would be perfect for a jack-in-the-box...

Thus, Jim in the Box!

So the idea was born, a kinda push your luck game featuring a Jack (Jim) in the box. Each player takes turns cranking and whoever Jim pops out on is out, until only one player remains.


Thinking about my reference game, I realized that for the game to be fun, the players have to know that they're close to losing, so they can tentatively push the box further and further. My first idea was to animate the lid of the box flexing as the crank turns, but this seemed annoying to animate, and uninteresting. So I decided instead to animate the character craning the box getting more concerned and inching away as its turned.


Initially, I wanted to follow in the Playdate's original dream, and use a sort of a Game-and-Watch style set of images that are toggled between. This ended up looking ugly and having some issues. As the game and watch games use LCD's with simple images toggled on and off, there can be no overlap between sprites. This meant animating a lid bending and a jack in the box popping out would be impossible, as the character would overlap with the lid when he popped out. Further, having the crank take distinct positions didn't feel natural. Having a 1:1 correlation between the physical crank and the in game crank is essential to making the game feel good, so I decided to go for a more fluid animation style, with simple drawings moving around on screen.

State of the Game

So this is where we are now:

We have a few milestones left:

  • Add Jim popping out!
  • Add a reset.
  • Add the sounds playing as the crank is turned.
  • Add animated background elements.

I'll be posting follow up posts here as the steps continue! Also, sorry for the initial wall of text post. I didn't initially plan on blogging the dev process, and didn't take any early images of the steps, or bother to save older versions separately. The game will be up for free on my itch.io once its done, and I'll upload the code to my github soon! Expect the github to be linked in my next post :smiley:


Jim in the Box: Devblog 2

Hello everyone!
I had some time tonight and added the first of the milestones, Jim!

Its not very exciting with just him popping out, so there are a few modifications I want to make prior to release:

  • Add a lid flying off
  • Add a scaaaary sound
  • Make Jim move side to side as well as up and down

For now, I'll focus on the other milestones before polish. There's defintely a lot I want to do for each one, but this will do for now!

In other news, the github is up if your interested in looking at or offering critiques for my code!
Also, I developed a short Pulp based game based off of one of my other projects if you'd like to in try that out!

Thanks everyone, and goodnight!

Jim in the Box: Devblog 3

Hey yall!

So its your turn. You crank the handle just a little more and...
You're out!

I was debating how I wanted to notify the current player that they're out, and thought about a few transitions. I debating having a sign drop down from above, but the idea for having the character hold up the sign while hiding sounded way funnier, so that's what we have! Next comes the music playing, and then some final polish! We're on track to have this done by the time the Playdate units start shipping!

Some notes:

  • I noticed some slight stuttering throughout this version. I'm not sure if its just my PC being funky or an actual performance issue. Will have to profile to check.
  • The code is getting a bit messy, and needs to be cleaned up.
  • I tried messing with Jim's physics and couldn't easily get a result I was happy with. Might need some deeper changes.
  • The "A" button prompt is a tad ugly.

As always, changes are up on the github! See yall around!

Cool! This mechanic makes so much sense for PlayDate. And I love the character animation you have here.

Question for you:
Are your crank functions something that you'd care to share to this post about using the crank in Pulp?

Not sure how much the SDK and Pulpscript are compatible. If not, just describing the logic would be helpful.

I'll try to create an example room in Wind-Up City that uses the jack-in-the-box mechanic (going to call it JITB).

For many games, I could see treasure chests or other item tiles each requiring JITB to open.

Not sure how much the SDK and Pulpscript are compatible.

I wound up futzing around with Pulp a little bit. It is an event driven game engine with limited scope. Note that the limited scope makes learning Pulp relatively easy. It also implies that it is time to graduate to the SDK if you get to the point where you are fighting Pulp due to its limitations.

Pulp events contain the aa and ra values of the crank. The SDK can also easily access these values. Furthermore, the logic to process angles will largely be the same whether Pulpscript, Lua, or C is used. Having said that, none of these language are really "compatible". The same logic would need to be rewritten, but that should not be hard.

Sure! It's just a variable accumulating the change, but I wrote a quick script that also handles the animations I can share there.

Jim in the Box: Devblog 4

Hello again!

The sounds are here! The tutorial screen is here! I figured out how to record gifs!

A video with the audio:

I ended up not using the built in midi playing tools as I needed to be able to play as the crank is turned. Thus, the notes are all just stored in order in a table, and scrubbed through as the crank turns!

With that, its up on my itch page for you to try out! As usual code is available here.

There still a fair bit of polish that I need to work out. Specifically:

  • Background (and foreground) elements. The world is a bit bland.
  • Stylize the tutorial text (and animate it leaving the screen)
  • Add a lid flying off of Jim
  • Make Jim move horizontally too
  • Edit the synth (it sounds no great)
  • Maybe make the song more intricate

Thank to everyone as always, and I'll keep you updated as I progress!

Jim in the Box: Devblog 5

I added a nice transition animation for the tutorial screen :smiley:
I used the animator part of the SDK, and just did an animation up and then down. I recorded a fun sound (check out the twitter post) for it too!
You also might notice the new cabinet texture, and the transition button has been changed as well. If your game uses the crank, its a good idea to use the D-Pad to continue so that the user doesn't have to press buttons on the right side with the crank out, which can be cumbersome.
Besides this, Jim moves horizontally as well (rather simply), and did some synth editing.
This leaves:
Background elements
Add a lid
Jim moves horizontally
Sound edits
Change 'next' button

Jim in the Box: Devblog 6

A small update this time (turns out the last two weeks of undergrad isn't the easiest time to put a game out!)
I recorded my programmable music box to use for the music. It's a little wonky, there are some unpleasant notes, and you can hear the cranky noises too. I think it adds character, but let me know if you'd like a cleaner recording, and I can try to find something online.
I drew a quick title card. I'm not super satisfied with it, but its better than the old one, so until I have more time, it will do for now!
Also, I added a pdxinfo file. This is a data file that has stuff like the developer and version of the game, and the playdate site needs it to be able to send games to your playdate over the internet. So if anyone was having trouble with that, hopefully its fixed now (I can't actually check myself till my Playdate arrives next week... so soon! Woohoo!).

For a video of this in action see:

Thanks everyone that's supported me on itch! The response has been way more than I expected!