Last week I got my Panic Playdate in the mail. I preordered it last July, and have been following it since the May 2019 EDGE announcement, so you could say it was a long time coming. It’s such a nice feeling device, and good looking, too. Sure, the non-backlit screen can be annoying, but I firmly hold the opinion that portable gaming is pretty stupid, so I’m not jumping on the bandwagon of acting like no backlight is some sort of extreme deal breaker. I was looking forward to building things for it, and the general feel and look of the thing just makes me extra excited.
My last stint of game development aspirations were cut a little short due to PICO-8’s code volume limitations. I hadn’t actually run up against those limits yet, but getting close to them filled me with so much anxiety and dread that I just couldn’t keep going–it was clear there was never going to be enough room for me to build the game I truly wanted to make. So, it stopped being fun, and I quit.
Playdate development promises to be less anxiety inducing. There is no limit on how much code you can write, beyond the physical limitations of the device itself, which is very generous in regards to RAM and storage space. There are new restrictions, though: unlike the 16 colors available in PICO-8, the Playdate has only two colors: black-ish and gray-ish (technically black and white, but on the device both colors are more silvery). This presents an extremely interesting challenge for someone like me, who has no confidence whatsoever in his artistic abilities.
I decided to start with what I know, and built a spaceship flying around, similar to my PICO-8 game, but also significantly different.
I’m using some icons from The Noun Project (disclaimer: I work there) that I quickly redrew in Aseprite (to varying degrees of success).
Another new challenge is that because the screen is so small, high resolution, and not backlit on the physical Playdate, you have to make your sprites pretty large to make them legible. The Playdate simulator inadvertently downplays this issue by virtue of being so large on your screen (Panic should create an option to remedy this). This is a big change from PICO-8’s gigantic chunky pixels, where a single pixel can be perfectly visible to the player.
Because of that, the way my space game worked on PICO-8, where every ship was a single pixel flying around a large star map you could freely explore, simply won’t work on the Playdate. It’s forced me to think of a different way to adapt the general gameplay loop, and I think I’ve come up with an idea I like and will pursue. I won’t talk about it yet, we’ll see if I build it.
I wanted to spend some time contemplating the aforementioned game idea, but wanted to keep building. So I decided I’d try porting my MultiClock screensaver over to Playdate. Figured it would be a fun programming challenge, and I was right!
The biggest difference is that SpriteKit comes with performant methods for rotating sprites in real time, part of its animation system. You can rotate sprites in code with Playdate, but it is processor intensive so they do not recommend doing so. So instead I had to draw the clock hands in Aseprite, something I’d never used before, and create each frame for the hands rotation. In the above video, we’re up to 32 frames, almost enough to make the rotation look pretty smooth. Maybe not yet as smooth as I’d like, but the next jump is from 32 to 64 frames and that’s going to be a bit tedious.
Right now I really just have the time display working, none of the animation system or alternate patterns from the screensaver have made it in. I am pretty sure I’ll be able to build the animation system out similar to how it works in the screensaver, with a queue and callbacks and so on.
I figure this’ll look nice when and if the Playdate Stereo Dock comes out some day.
Oh, also, I bought Panic’s new code editor, Nova, to use for Playdate development. Figured it would be “more fun” to build Playdate stuff using all Panic software, and besides, any excuse to give Panic my money is a good one. It’s a nice feeling app. Nice enough for me to give up GitHub Copilot during my day job? Probably not. But I dunno! The urge to be a total and complete Panic fanboy is pretty strong.