In January and February of 2024, I made a game! It’s a bite-size fangame for the Atelier franchise, and it takes 15-20 minutes to play. I made it in Pico-8, a fantasy console themed around the 8-bit consoles of eld. In Atelier Phoebe you play as Phoebe, a young alchemist who has inherited her grandfather’s workshop in a town down on its luck; can you bring back the fireworks festival that used to light up the skies?
I feel like it’s almost overstatement to call this a whole entire game sometimes. The whole “story” is about eight quests long and has maybe two major beats. Nevertheless, I’m really proud of it, because I’m not sure I’ve ever made a software project that feels as finished as this on my own. I’ve made a lot of things, and some of them have been pretty useful, but it was rewarding to actually put this through multiple rounds of bug fixing, finalize a title screen, and so on. And as short as it is, Atelier Phoebe does have a beginning, middle, and end – it has everything a “real” game should have. The parts are just extremely short.
One of my goals with Atelier Phoebe was to make a game somewhat incongruous with the Pico-8 environment. Pico-8 really lends itself to simple platformers and shoot-em-ups, and doesn’t usually make people think of story-based RPGs. I really wanted to include talk sprites for dialogue in this game, specifically because Pico-8 is so poorly suited to them, with its fixed 16-color palette and limited sprite sheet. I’m proud of them – they were fun to draw and really contributed to the feeling of using everything available to me. See…
One of the constraints for Pico-8 games is that they have to fit within 16 kilobytes, and your space for visual assets (there are built-in tools for drawing, designing maps, and arranging music and sound effects) is limited to a 128×128 bitmap field. The bottom half of that is also shared with the tile map data (also 128×128) so in practice one of your graphics data or your tile map data is limited to 128×64. That’s pretty constrained! Most of the projects and demos I’ve done in Pico-8 haven’t come close to using all of either one, but Atelier Phoebe really maxed out the sprite data, in large part due to those precious talk sprites for dialog. In theory I think they could have been compressed somehow, but that would have meant interfacing with external tools, which I decided early on I was going to avoid.
I say “avoid”, but I did use one external tool – a compression tool called shrinko8. See, Pico-8 has a simple limit on graphics data, but the overall package of your game “cartridge” is limited to 16 kilobytes (after built-in compression), with a supplemental limit of 8192 tokens and 65k characters (pre-compression). By the time I was finishing up Atelier Phoebe I was damn close to all of those limits, and I was over the character and compressed data limits. Fortunately, I’m not the first person to have made an ambitious project in the limits of pico-8, and shrinko8 will supply some more intelligent static analysis-based compression. This allowed me to export the game in its finished state. The limits put the kibosh on some further expansions I had planned. I would have liked to write more dialogue and a more complicated and full-featured alchemy system, but I have the ultimate excuse – there was no room for any more!
The whole project was split over 16 different files, the bulk of which were separate files for each character’s scripts and separate files for each screen’s behavior. I did edit code and text in Sublime Text rather than Pico-8’s built-in editor – as much as I love the vibe of the environment and dedication to the bit, I can’t stare at 3×5 pixel fonts for more than an hour before my brain melts out my ears.
I pushed myself to get this to a finished state, in the mind that finishing projects is itself a skill that I want to get better at. However, the artificial time pressure meant that I discarded plans to make music, which was okay by me because music is by far the component I am least familiar with. Maybe Atelier Phoebe 2 will have music. I don’t know.