The console. |
Everyone’s attention is on the tiny yellow box with the kooky crank, but I’m more excited by what Panic has provided to the developer side: free and accessible ways for people of all skill levels to make a game and play it on a real console they can hold in their hands and pass to a friend. Even if you don’t have the console, you can still play game .pdx files on the Playdate Simulator included with the SDK, on Windows/Mac/Linux. There’s also a screen mirroring application, and I could easily see myself using the physical console primarily as a controller for this, rather than playing on the device’s tiny screen once mine arrives (Group 3). The SDK and tools are free, you can distribute and sell your creations however you please, and files can easily be sideloaded onto the device or dragged and dropped like any USB volume. It’s refreshing to see a device that’s this open and “homebrew by default” released in 2022, when most other major platformers lock theirs down, take cuts of revenue, and generally do the opposite.
Panic co-founder Steven Frank talks about this philosophy here, in a note he wrote when the first Playdate orders started shipping. He also mentions “Playdate’s appeal to people who may find modern games intimidating or out of reach due to their complexity”, and says, “Learning how to write games can be easier and more inclusive than it is. Playdate’s developer tools are an order of magnitude less complex than any other current game platform I can think of. Dare I say: it’s even fun?” Which brings me to Pulp.
I’ve been meaning to give the Playdate SDK a proper try, but I just can’t stop making little prototypes in Pulp.
Pulp is a website tool to make low- (or no-)code games in a WYSIWYG-style editor with all batteries included, inspired by bitsy. From https://play.date/dev/ , it is a “Web-based game editor for Playdate. Pixel art, chiptune music, and simple scripting built right in. It's fun!”
All of that is true, but like the quote from Steven above, emphasis on the last part -- it really is fun and delightful to use. Why?
1. Constrained design spaces. The “constraints breed creativity” philosophy applies to everything Playdate, but especially Pulp. In Pulp, the Playdate’s native resolution of 400x240 pixels is halved to 200x120, and everything is based on 8x8 tiles, so the game screen always displays a “room” of 25x15 tiles. Each pixel in a tile can be black or white (except for the player tile which can include transparent pixels). Songs have limited length and only sine, square, sawtooth, triangle, and noise waveforms to work with. Pulpscript has no compound expressions, traditional functions, local variables, or data types other than string and number. All of these constraints reduce the number of choices you have to make when designing and building a game. The result is that some game types are unviable (smoothly animating real-time action fests), but other games can be put together extremely quickly. It feels great to have an idea (within the space that Pulp allows) and be able to start building it right away, to make changes and see the effects instantly. If you use no code at all, players of your game can only walk between rooms and display messages when bumping into stationary Sprites, collecting Items, and finishing the game. Can you find a way to make a game interesting despite all those constraints? Or because of them?
All of that is true, but like the quote from Steven above, emphasis on the last part -- it really is fun and delightful to use. Why?
1. Constrained design spaces. The “constraints breed creativity” philosophy applies to everything Playdate, but especially Pulp. In Pulp, the Playdate’s native resolution of 400x240 pixels is halved to 200x120, and everything is based on 8x8 tiles, so the game screen always displays a “room” of 25x15 tiles. Each pixel in a tile can be black or white (except for the player tile which can include transparent pixels). Songs have limited length and only sine, square, sawtooth, triangle, and noise waveforms to work with. Pulpscript has no compound expressions, traditional functions, local variables, or data types other than string and number. All of these constraints reduce the number of choices you have to make when designing and building a game. The result is that some game types are unviable (smoothly animating real-time action fests), but other games can be put together extremely quickly. It feels great to have an idea (within the space that Pulp allows) and be able to start building it right away, to make changes and see the effects instantly. If you use no code at all, players of your game can only walk between rooms and display messages when bumping into stationary Sprites, collecting Items, and finishing the game. Can you find a way to make a game interesting despite all those constraints? Or because of them?
2. Usability. As a piece of software that humans interact with, Pulp’s user interface and operations are simple and friendly. Tile and room editing icons are intuitive. Common operations have common shortcuts, for both the main editor view and the Pulpscript text editor. There are 7 color themes to choose from. After editing your game, pressing Command-B to build and play it anew only takes a second or two. In order to use Pulp you have to create an account, but this is quick (just email and password) and means that all of your work and projects are available from any browser on any computer. There’s a save button, but Pulp also routinely autosaves when editing and playing your project. There are buttons for importing and exporting the whole game, or just certain assets from it (pulp game source is just JSON). Art, code, sounds, and songs are all in one place so it’s easy to integrate them. There are feature requests for various quality-of-life improvements like multi-tile selection and tile organization options within categories (versus changing things 1 tile at a time), but when there’s a design tradeoff to be made Pulp consistently goes with the simplest, most value-for-your-mental-overhead option. No popups nag you, unless you try to run invalid Pulpscript, or your project files have changed on server since your last local edit and Pulp warns you before you overwrite something.
3. Pulpscript is interesting. Maybe frustrating if you’ve programmed before and you’re used to being able to say “if A and B” on the same line, but interesting. The minimal syntax and limitations mentioned above mean that you can learn it all within a day or two. Documentation is clear. Again it’s obvious that keeping things simple was a priority, considering that this may be someone’s first experience with programming. Even if you have programming experience, trying to implement some feature in Pulpscript can feel like a puzzle game itself. Like #1, if anything is possible it can feel overwhelming and paralyzing, but in this restricted environment you have a more concrete starting point and a quick feedback loop to actually get something going. It becomes a fun challenge to break free and "outsmart" the restrictions, doing things in Pulp that it wasn’t originally intended for. For example, I put together a prototype for a match-3 style casual puzzle game, except it’s match-4 in a square shape. It’s on hold for now, since I don’t think the twist in design makes the game much more interesting, but maybe I’ll revisit it later. The point is that I was able to put it together in a few hours, and the process was fun. Creating different pieces using only black and white 8x8 tiles that feel visually distinct when looking at a board of them was fun. Implementing piece swapping and matching and new pieces falling in from above in Pulpscript was fun. I'm now working on a different kind of puzzle game and it's gotten to be spaghetti-codey in places, but that has steered me to keep the scope small, leading to a project that will likely get finished and released.
I think once you’ve decided you like a tool it’s tempting to see shortcomings as non-issues (or as features), and maybe I’ve done that a bit above. If I had to give one criticism I think the song mode is the least intuitive of the editors. Misclicks and misdrags can throw stuff off, you often have to fiddle with note octaves, and it took me a little while to figure out a good workflow (and that you have to drag the “Notes” bar to change which section of the song is shown in the piano roll view).
Pulp's song editor. |
Pulp isn’t perfect, but it is extremely successful at what it aims to accomplish. It has won me over, and judging by the number of wonderful creations being shared on itch.io, the Playdate Pulp developer forums, Pulp Discord, and elsewhere, I'm not the only one. More on these creations later.