Pages

Monday, August 21, 2023

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 with developer Oississui (both in English and Japanese).

Enjoy the Diner grabbed me at Tokyo Game Dungeon, so I wrote this big wall of text to figure out why. Hooks and expectations, I think.

This game does some Interesting Stuff, so if you're curious, I recommend playing it before reading on because there will be spoilers. It takes 2~3 hours, and an English version released on Steam recently.

HOOKS

The 4-color, high-contrast, crunchy-pixels-hand-draw-with-the-MS-Paint-pencil-tool art style hooked me from across the room.

Developer Oississui posts about the making of the game on their website and on Twitter (in Japanese). The gamedev articles are refreshingly transparent, often explaining the reasoning behind design decisions, or specific works that served as inspiration.

Oississui writes that this art style not only creates a unique atmosphere, it was also very easy to work with, in terms of drawing and redrawing. Only using a few colors was an intentional choice that reduced the amount of work needed, while also contributing to the game's peculiar flavor.

This tweet reveals where the game's color palette came from.

The "chatting in a midnight diner by moonlight" vibe is another hook. "Why not enjoy the diner? The moon is as full as it'll ever be, and there's even a drink fountain." 

There's a certain romance to the idea, even if you've never physically gone to Saizeriya at midnight. The game is big on atmosphere and it holds out, at least long enough for the science fiction to start unfolding.

As things get more and more sci-fi, discovering the truth about the surreal space you're trapped in becomes another hook. There's a drink bar, but aside from apple juice, most of the drinks are weird. There's a sign on the front door, but the door has no mechanism to open. There's a kitchen and a back room, but no bathroom. It's like if an alien or AI was asked to draw a restaurant, based on secondhand descriptions. Is this even a real place? This mystery drives the later half of the game through to a satisfying conclusion in the "true" ending. Questions are answered, and threads are resolved. Payoff!

EXPECTATIONS

Once the game has you in the door, it sets and manages expectations very effectively.

The door.

What does that mean? Every game sets expectations (explicitly or not), and tries to deliver on them. This is described as "making promises" in the article "How To Make Good Small Games", but it goes by other names. Setup and payoff, tension and release, etc.. 

Form factor is part of those expectations. Enjoy the Diner first appeared on Itch as a free version you can play in browser. It's described as a point and click adventure game with two endings, and an estimated play time of ~30 minutes. From this, I expected something like an old "Escape the Room" flash game. Easy to start, and browser games are accessible by anyone.

It turns out to be surprisingly deep for a browser game, and the actual play time will be 5 or 6 times that estimate!


Presentation also sets expectations. The game's UI is little yellow boxes, mostly out of your way at the edges of the screen. No transition animations, just jumping between screens and pop-up boxes. There is an animation for pouring a drink, but it's just a rectangle that fills up. No hand on screen, no different colors for different drinks, just a small black rectangle. Since most of the game is static images, the few animations that are present stand out as nice surprises.


Being a point and click novel game, the expected gameplay systems are pretty much set. You point, you click, and you read.

There are light puzzle decorations, but the main loop is asking characters about certain topics, and those conversations raise new topics, and those new topics are used to start new conversations, and repeat. There are a couple player choices near the end, and you can talk to characters in different orders, but there is a critical path that proceeds mostly linearly. There is a lot of dialogue, also to be expected from a novel game, and from the game's concept -- we're here forever, so might as well chit-chat and figure things out over drinks.

You also unlock a "Spot the Differences" game to pass the time, just like a real famiresu!

Can you find all 10?

The characters make for interesting conversation. Most lines serve a purpose, whether it's progressing the game's story, world-building, or just offering a joke. Like in Gnosia (similarly sci-fi and novel-y), the "alien" characters appear and talk and act like humans. Since they're pretty much human, they're easier for the player to like and relate to.

There aren't many shocking or dramatic onscreen moments for the characters, and everyone generally gets along. Maybe there was an opportunity to make the characters more "contrasting" in their response to being trapped in this place forever, but according to the developer's blog, the game's wholesome and easygoing approach was on purpose. It certainly stands out from other science fiction, where time and eternity are often used as vehicles for dread.


The story does have dark moments, just not usually presented through the character conversations. Some characters acted out when they initially arrived, but it's all in the past by the time the player enters. Maybe it's less wholesome if interpreted as "most characters have given up hope of escape and accepted their fate"? Resource-wise, this approach also means that different images don't need to be created for different facial expressions for each character (they never really even open their mouths in conversation).

If pressed to name one thing that didn't surpass expectations as much as others, it might be the music.

Maybe the "Spot the Differences" part is a bit tedious and pixel-hunty, but it's optional and unexpected. The music was appropriate enough, but more fine-tuning (looping management, general balance levels) could have enhanced the mood even more. The developer's blog says music was the last thing to be implemented, but as soon as it was added the atmosphere really came together, so they wish they'd started on it sooner. What's there is good, just sparse. There are stretches of time with no music, so it's nice when a familiar (or new) song starts up to break the silence.


Lastly, I've gotta talk about the box.

THE BOX

I wasn't expecting this at all. The climax of the game is when you try to open a little box with a combination lock.

If you haven't played it yet, last chance to do so and avoid spoilers below.

10 symbols, 16 digits, so that's ten quadrillion possibilities.


This moment requires commitment to the concept of "eternity" and relies on the bank of player trust the game has (hopefully) earned up to that point.

Usually when an input like this is presented to the player, the password needs to be found somewhere else. Hidden on a small scrap of paper, hinted at by another character, encoded in blood as a dying message, or something like that. Every adventure game does this. Enjoy the Diner expects this expectation and steers the player in a different direction. Talk to the other inhabitants of the restaurant, they suggest brute force. After all, you've got all the time in the world.

...

You really do have to start trying combinations one by one! 

...

Design-wise, it's a risky move but I thought it was brilliant. Reading the developer notes again, this was all according to plan, though they do acknowledge that it's "unfriendly" and some players might get stumped here.

Even once the game starts speeding through combinations automatically, this sequence does take a long time (and the extremely simple music on loop enhances this feeling). But as aeons pass, the text box chime-ins from other characters are comforting. You've spent so much time talking with each of them that you can tell who's speaking just by the text, and the whole sequence makes it feel like they're talking together in the same room, which we haven't seen at all during the regular gameplay to this point.

From there, the ending provides a nice payoff I didn't expect at all from a "30 minute" point and click browser game.




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!