Playdate is a handheld console released in 2022, most notable for having a crank on the side. It's a pretty fun console.
Even without the crank, launching with a black-and-white LCD screen when everyone else is doing back-lit full color LEDs is a pretty bold move. Once you have accepted that decent ambient light is a requirement, the screen does look very sharp. And thanks to the low-power screen, the screen can remain on all day. This high resolution display combined with auto-time adjustments via wifi makes the Playdate a pretty good clock.
As a game console, Playdate comes with 24 free games, plus a catalog of extra games. The 24 free games are delivered at a pace of 2 per week so that each week you get the joy of playing new games before getting tired of them. It's quite a clever marketing scheme to keep you engaged, although I wouldn't mind the model used by SNES mini and Genesis mini that just give you all the games at once without needing extra wifi. The slow delivery and catalog are a promise that there will be a constant stream of new games, although the current games I received so far is a bit of hit and miss. There were definitely some very fun uses of that crank though :)
Rather than playing other people's games, I thought the best way to get the most value out of Playdate was to make a game myself. Prior to receiving this console as a gift, I was busy making a game with Godot. Compared to Godot, Playdate SDK is obviously very bare bones. At least three options were available:
I would have gone with the familiar C, but I figured I should give Lua a try first since it's lower barrier to entry. I have not used Lua before, and it has mostly the same misfeatures of a dynamic language (run time errors that should have been caught at compile time), but worse: array indices are 1-based instead of 0-based, there is no continue
inside a for
-loop (standard practice is to use goto
instead), a return
before a label is a syntax error, and so forth. The one great feature it has going for it is coroutines, which greatly simplified some state machines. Lua is a small language that is easy to pick up, but not exactly my favorite language.
The library also has some rough edges -- I ran into a transparency bug fairly early, and was disappointed that tilemaps don't natively support rotate and mirror operations, although the fact that it has tilemaps and sprites at all means there is enough to build a game quickly. Both polling and event-driven inputs are supported, and there are helpful utilities such as loading+saving persistent state as JSON. Documentation is somewhat sparse but there are lots of examples, including the famous World 1-1. Also, all the development can be tested on a simulator instead of having to upload to actual hardware all the time, which really helped.
I managed to port my TRICK 2022 game in about two weeks, I would say it was a pleasurable experience. You can download the game here:
https://uguu-org.itch.io/ikaruga-snake
All in all, Playdate was not quite a conventional console, but it was this unconventional nature made it fun. Many thanks to my brother for this gift :)
Previous (2023-07-30): "Mokuyoubi ni wa Kokoa wo" by Aoyama Michiko
Next (2023-09-20): Strange orange