Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

Monday, August 14, 2023

Blocky Balloons very-post-release thoughts

I made a game for Playdate! It's called "Blocky Balloons" and there's a demo, trailer, and more info at the itch.io page: https://brandooo.itch.io/blocky-balloons


That's what I should have posted about 6 months ago, when the game actually launched on February 20, 2023. If you've played it, thank you so much!

I didn't write anything sooner because I'm lazy busy, I'm not much of a marketer, and I wasn't even sure if the game would come together into a finished product. Somehow it did, and the game is even coming to Playdate's official on-device game store Catalog later this year!

This post will be a stream of scattered recollections and personal notes about the process of making the game, before I forget anything more.

Finishing the game

Like I said last year, Pulp is a great little tool and I ended up making the whole game in Pulp. I did start to stretch its limits near the end, when I was cramming in lots of polish and finishing touches. For example, I added a move undo feature. I'm glad I did, since it's a necessary QOL feature in these sokoban-likes, but at the time I wasn't sure if it was even possible in Pulp. My Playdate arrived partway through development, and the original implementation ran very slow on device. With some iteration and bulk code generation, I eventually smoothed it out.

The game has a couple little cutscenes. These also ran very slow on device at first. Originally I had each cutscene frame as a separate "room" in Pulp, since it was very easy to duplicate a room, change a few tiles, and repeat. Trying to load multiple rooms like this one after another on device performs terribly, so I had to redo them all using lots of "label" and "draw" commands. 

An example frame room that got cut.


The game music and sounds also needed adjustment. Pulp uses very "pure" sine/square/sawtooth/triangle/noise waveforms, and some of these are overpowering, even distorted on the actual console at full volume. The balance of these 5 instruments also sounds different depending on how you're listening to them -- in the Pulp browser editor, in the Simulator app, on device speakers, on device with headphones, etc. So I had to listen and tweak and relisten and retweak to find a compromise. For the soundtrack download that's on the itch.io page, I ended up recording each song from the browser editor into Audacity, and exported those as mp3s to bundle into a zip file. For composing the songs, I ended up doing most of it in front of a piano with pencil and paper, jotting ideas down as I tinkered. Editing large sections of songs can be tedious in Pulp, so it's better to nail down everything as much as possible first, then punch it in.

I don't think I went above 0.5 volume for any voice in any music track. Square wave is especially tinky.


The above points suggest a note to future Brando: don't invest tons of time in something that isn't tested on the final device!

A couple other things occurred to me once I had the device in hand:

  1. It doesn't seem practical to use the D-pad and the crank at the same time. You have to hold the device steady to crank precisely, so I instinctively move my left thumb closer to the center of the device. Some games have you press B or A with your left thumb while your right hand operates the crank, and this seems to mostly work OK.
  2. The A and B buttons are placed horizontally, at a distance that's a bit far for rocking back and forth between them comfortably. They're also clicky (same for the D-pad), which is good to know exactly when an input is sent, but I don't think I'd want to repeatedly mash one for a long time. I probably won't make any hardcore action games on this thing.
  3. The crank feels sturdy, but I don't want to go crazy with it. There's a level in the Season 1 game "Crankin's Time Travel Adventure" where you have to crank as fast as possible, and after a couple timid retries I was able to beat it after going all out, but I felt nervous about damaging the crank. Some developers are making fishing games, and it might sound cool on paper to crank like mad as you reel in a big one, but in practice I hope they don't. Lucas Pope also notes here that a "light touch" feels best. This might be one of those early design stage things that people try and eventually abandon, like the joystick-rotating minigames in Mario Party.
Everyone says this, but playtesting really is necessary to get fresh eyes on your game, since you lose that perspective after spending months getting to know your project. Many changes were obvious once pointed out. I didn't change every little thing exactly as suggested, but they were all suggested for a reason, and sometimes that reason is buried in a less obvious place.

Post-launch this and that

This was my first time ever releasing a game and selling something online, and it felt strange to be on the creator's side for once. Itch.io has a nice little "Analytics" page for each project which shows me that people are downloading the game, but is anyone actually playing it? Does the zipped .pdx file I uploaded really work for everyone? What if there's some nasty bug players have encountered but haven't reported? I did my best to test the game before release, but there's no way to really know if players are playing unless they tell you.

The project analytics page from itch, at time of writing.



I started this project as a fun way to challenge myself. There are some good puzzles, but no amazing game design innovations. Selfish to say, it was more of a personal exercise to create all the pieces, put them together, and ship a complete product. I thought if even one random person out there said they enjoyed it, I'd call it a success, and that happened!

This is a niche game for a niche console, so I didn't have much financial expectations either, but the game has actually sold enough to cover the cost of the Playdate itself ($227.78 after shipping and duties), which is super cool to me. A large chunk of this came from being included in the Playdate Bunny Bundle, which was a nice community effort. Thanks a lot to @FatNoseGaming for reaching out, and the other participating developers! Bundle support is another nice feature of itch.io. Speaking of Itch, I really like the platform. It was easy for a noob like me to set up a project page, payments, downloadable files, etc. and start distributing.

I announced the game when it launched on the official Playdate discord, the dev forums, the r/playdateconsole subreddit, and Twitter. I haven't really promoted the game at all since then, except for some tweets when the Bunny Bundle campaign was going on. I could do better in terms of marketing, but that wasn't really a goal for me. Releasing a complete, finished product was a goal, and I haven't needed to push any updates in the 6 months since release, so that's great! I haven't received any bug reports, and I know at least a few people have finished the game 100%. My cynical brain did realize that in the modern world of easy minor updates, post-release patches could serve as a form of marketing. A couple bugfixes, a couple minor improvements or additions, and you've got an excuse to put the game in front of social media eyeballs for another round of exposure.

Blocky Balloons will be coming to Catalog later this year, and the new version of Playdate OS added a List View mode, so I will need to push a new update to include an icon for that at least. No promises of extra levels or other content though, my bowl of PulpScript spaghetti is large enough already!




Monday, May 9, 2022

Thoughts on Playdate’s Pulp

Playdate launched!

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's room editor, showing a little digging game in the works.


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?

Pulp's tile editor. I'm no artist, but it's fun to find ways to be expressive in an 8x8 grid.

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.

The match-4 prototype. Might revisit someday.

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.

Featured Post

Enjoy the Diner (I did)

I haven't seen much English coverage of this game except Indie Tsushin, where there's a nice overview of the game and an interview ...

Popular Posts