Last weekend, I joined forces with my buddy Hunter to make a game for PlayJam 8, a game jam for the adorable yellow Playdate game console.
Introducing: Stellar Scrapm'n! Descend into debt as you ascend to the stars in a clunky little hauling ship. Crank to steer through rocky caverns in search of valuable junk you can sell to pay off a little bit of that financial liability at a time. Also: robots will shoot at you, pew pew, watch out!
If you're so inclined, we'd be grateful if you checked it out! You can check out our jam entry to download, rate, and review.
If you have a Playdate, you can sideload the game. If you don't have a Playdate, you can still check it out by grabbing the Playdate dev kit and using the Playdate Simulator!
The review period is open until September 22nd. Check out the other submissions, too! There's slightly more than a dozen little games to check out.
Thanks for reading. You may also enjoy Hunter's post about the game / jam. Feel free to eject at this point because what comes next is-
Hunter and I are both computer science boys with web business jobs. We don't write much code that looks like game code day to day, but we do enjoy dabbling in "the game dev". Hunter has done some pretty impressive projects in Unity in the past, I enjoy working through Godot tutorial content to keep up with that community, and we are both drawn to the rinky-dink little Playdate console with its retro-aesthetics, thoughtful constraints, and inviting dev tools and documentation.
Before we knew about Playjam, Hunter had been building up a Metroidvania game, inspired by working through SquidGod's YouTube tutorials for working with the Playdate. I recognized a lot of the fundamentals from working through a similar Godot course from Heart Gamedev. Neither of us had done a lot with Lua, but the Playdate API and docs offer a lot of structure for folks coming in with experience working with other languages.
When PlayJam 8 came across our radar, it seemed like the perfect opportunity to work on something together, sharpen our skills, and have fun making a thing. So, we cleared our calendars and set our expectations for success. How hard could it be? (This is foreshadowing.)
PlayJam8 kicked off on Friday with the announcement of the theme: ascending. Hunter and I (along with my producer, Amy) brainstormed a lot of potential concepts. Being nerds, we thought a lot about space and our nostalgia for retro games about space.
This is when Hunter introduced me to Space Shuttle Project for the Nintendo Entertainment System.
We did not make a "shot for shot remake" of Space Shuttle Project. You are free to imagine what it would be like!
We were more interested in making a game where you are in space, rather than getting to space. Unfortunately once one is in space, the concept of "ascending" becomes murky as references like "up" and "down" become negotiable. Another thing that is negotiable is money and getting to space is expensive. Hunter was reminded of Hardspace: Shipbreaker where, good news, you've got a cool space job but, oh no bad news, you're in crippling debt and the exchange rate for your hard labor will not fix that. Maybe you can ascend to financial freedom??
This sounded like a fun kernel of an idea, but of course we needed something simpler to implement. I was reminded of one of my favorite childhood games, Solar Jetman: Hunt for the Golden Warpship. This old ad for the game, in my opinion, does not explain the gameplay very well, but the vibes are incredible:
Based on our inspirations, we planned more-or-less these features:
Here are some things that we used:
We had a lot of quick wins early on, but stubbed our toes many times. I'm tired, so this won't be hour-by-hour or day-by-day. Feel free to skip this unless you are future me (or Hunter)!
A recurring theme for me personally: I often knew the concepts for what I wanted to accomplish but had little or no practice directly with the tools, like LDtk and Aseprite. Climbing multiple learning curves during a crunch is stressful!
It's a little tricky to get curvy "cavernous" shapes with 2D tilemaps, but it's not too bad. What is bad is the feeling you get when the Playdate's native "axis-aligned rectangles only" physics system goes haywire every time your ship touches terrain. We reined in a lot of the chaos, but there are still plenty of places where a wall tile's bounding box doesn't line up with the actual pixels, making it look like your ship has suddenly stopped for no reason, or like you're embedded in the rock.
I went down a lot of rabbit holes for the physics issues, including evaluating alternate physics engines (which usually require building C extensions and wholly separate level-creation tooling) and adding a layer to take over to see if there was "really" a collision when the Playdate says there was. We simply ran out of time on this.
The other major toe-stubber was our choice to bring in, but not commit to, the Noble Engine.
The built-in concepts of Scenes that you can move between, with Noble taking care of transitions and lifecycle management, sounded like a great way to separate out concerns. Our focus started on the GameScene, which holds the level and player and enemies and collectibles and- you know, gameplay.
Unfortunately, we did not test our understanding of how Noble manages multiple scenes until very late. It turned out we were making sprites that Noble could not clean up on transition, loading things before Noble was ready, expecting things to be cached that Noble was throwing away, and more. A mess!
After finding this out so late, my instinct was to cut our losses and drop features like a title screen and different levels, which would have let us focus on building the game as if Noble's scene management stuff wasn't there. Unfortunately, I ignored that instinct and spent a lot of time moving code around, chasing down references, touching many parts of the project, breaking-and-fixing, finally getting things barely-working. The result is that we got our title screen, but we didn't have time to add any actual interstitials or extra levels. So... the menu basically serves no purpose, haha! Bonus: I accidentally left in a debug option in the player controls so you can bounce yourself to the title screen and back again and resume with everything exactly where you left it. And by "exactly where you left it" I mean it reveals some object cleanup bugs that we missed, as all enemies, collectibles, and even fired bullets suddenly return from the void! 😂
I tend to focus on the negative, but this whole thing was pretty fun and we learned a lot! To ask "what would I do differently?" would be foolish - time only moves in one direction - I am grateful for the experiences and will carry this learning into the future.
Hunter and I both want to keep filling in the holes in the project, and (eventually) release something that feels like a complete game experience. I think that rules!
I look forward to becoming more fluent with the tools that were new to me! Theory is not the same as practice, and I could use more practice. Particularly the meta-practice of doing things that I am not already "good" at. Practice at being bad at something and struggling to get better.
Hell yeah!
“Happy” March 2020, 2020. Year 5½ of “two weeks to flatten the curve”. 🫠
I was able to get the updated COVID-19 booster, today. Nice to see some systems are working.
The Level Up is an indie improv showcase. Join us as we watch amazing New York indie improv talents gain XP on the Magnet stage, unlock new achievements, and reach new milestones. Or do comedy.
Come support Michael as he dons his hosting-duties cap for three exciting indie teams!
I’ll be playing in with Michael and the rest of the Level Up!
Looking forward to it! And to seeing you there!! (Yes, you. Come on out!!!)
Saturday September 6th, 2025 @ 10:30pm
Magnet Theater
254 West 29th St (btwn 7th and 8th Ave.)
New York City, NY 10001
Tickets $10: https://magnettheater.com/show/tickets/59956/
It’s been a while! Excited to return to IndieWebCamp, in Berlin, no less!
“I became a hater by doing precisely those things AI cannot do: reading and understanding human language; thinking and reasoning about ideas; considering the meaning of my words and their context; loving people, making art, living in my body with its flaws and feelings and life. AI cannot be a hater, because AI does not feel, or know, or care. Only humans can be haters. I celebrate my humanity.”
Heck yeah, I’m retro-posting. Hello from the future!
It’s August 3rd, 2025 and time for more machine knitting!
I started the day practicing some of the techniques from day one of the class.
I have forgotten the first technique Elaine taught us for the day, but it let us work in a second yarn by hand as each row is knit. Seems like maybe a cool way to work in wires or conductive thread??
Next up, we learned about putting working needles in hold, aka short-rowing, which allows you to “grow” sections of the knitting by adding rows just to one section, while other parts of the work stay put.
Next it was time for two-color patterned knitting with fair isle, powered by punch cards!
The knitting carriage needs several adjustments to begin following the punch card pattern.
Then… knit a bunch of rows! Here’s a little video.
When you’re done patterning, you can snip the contrast yarn, turn the carriage back knob back to ‘NL’ and disable the ‘MC’ button, then proceed knitting in your main yarn color as normal.
After a lunch break, we spent most of the rest of the time practicing what we’d learned so far. Near the end, Elaine taught a few important techniques that you do off the machine.
Note to self, or anyone who wants to book some studio time to do some machine knitting at the TAC:
And that was the end of the class! I learned so much, but mostly that I have so much yet to learn.
Besides the big swatch of worked-in yarn, here’s the rest of my swatches for the day!
From top-to-bottom, left-to-right:
Will I continue my machine knitting journey?? Stick around to find out! Subscribe in your favorite feed reader, and so on, and so forth!
Happy HTML Day!
I'm taking a two-day machine knitting workshop intensive, so I did not have the energy to join the folks at the Valentino Jr. Park meetup.
Instead I am writing this post (in HTML) while watching along to Jenn Schiffer's "HTML Day From Home (hdfh)" stream.
The workshop is Machine Knitting 101, from Brooklyn's Textile Arts Center's line of Machine Knitting classes and workshops. Today, our instructor Elaine walked us through some of the basics.
We bought a knitting machine, a Brother KH-930e, back in, checks notes, =chokes= like 2011 or 2012?? Enticed by Becky Stern's post on on hacking the KH-930e. As it turns out, the electronics hacking was NOT the difficult part of working with one of these machines! After some rounds of buying replacement parts and maintenance, we got a couple of little projects out of it, but found it challenging enough to work with that we stopped messing with it. But, we still have it, and I'm excited to try again!
Here's a photo of the workshop syllabus, as well as some of my debris from today's workshop.
From top to bottom, left-to-right:
Thank you for reading. I hope to post more knitting projects. I hope to read your HTML Day creations!
'til next time!
Had a blast with Retro Dot Cards Series One for the Nintendo e-Reader from retrodotcards.com, created by Matt Greer.
That's right, new games printed on playing cards that can be scanned with a device from ~2002 using your Game Boy Advance or GameCube with Game Boy Player.
I think it's so cool that a dev community exists for these obscure devices, and that Matt has taken it so far as to write a bunch of games, produce them as cards, have them printed and packaged professionally, and sell them.
I have a nicely refurbished Game Boy Advance, but did not have an e-Reader at the time I learned of these, so I took to the e-Bay to find one. It actually took a while, and I had to pay more, to find an English version, as the original Japanese versions are more common. While you can buy Retro Dot Cards that work on any version of the reader (English, Japanese, or English-on-Japanese), if you plan to play other retro cards be aware that you need to match their language and region to your device or they won't work.
The cards and packaging from Retro Dot Cards were high quality and quirky. I enjoyed shuffling through them the first time. I cared less for trying to nicely fan them all out for a photo, above, because I wanted to get to playing them!
Each game (or app) is loaded with one to four "swipes" of a card. For example, Solitaire is a single card that you load by scanning one side, rotating the card 180 degrees, and scanning the other side. Exo Attack comes on two cards, for a total of four swipes through the reader.
The classics, like Solitaire, e-Snake, and Bomb Hunter (minesweeper) are minimalist, but well-made, colorful, and snappy to play. Exo Attack is a shoot-em-up with just one thing to shoot - the same boss with different behaviors - but it's also something of a provocation, with some quirky ship choices available. Speaking of quirky provocations: Franny Answers is like a combo Magic 8-ball and Tamagotchi with a cute and mysterious (or temperamental, or both) dog.
Some other absolute highlights include Scavenger Hunt (an achievements-based meta game!?), Exo Attack's code-based online leaderboards, and the old school instruction booklet online for each game.
The whole thing feels a bit like an invitation, too. To understand more about this old hardware, of course, but maybe also to make more things. Lurking in the footer of the Retro Dot Cards site is a Tools page with many e-Reader resources, including common sprites and backgrounds already present on the e-Reader that you can use in your own games and apps. Matt has also released the source code for e-Reader Solitaire, licensed MIT, and if that's not an invite I don't know what is.