Build a Monument to Your Failures: Pink Ghost

There’s a notepad document on my desktop that begins

“Pink Ghost

Is a Ghost

Is Pink

Flies probably”

I wrote those words shortly after I decided to enter the fifth annual GB Jam and complete my first non-text based game. I was successful in a certain sense: I completed a game, and it was about a Pink Ghost that, turns out, did fly. What I planned to make, in those initial hours of planning, is not what I turned in, though. I thought I would go through my many failures and misplannings, and talk about what Pink Ghost was in my head, and what it turned out to be. I learned a lot from developing Pink Ghost, and I wanted to document that.

Pink Ghost has a story. Well, it did at one point. It wasn’t anything elaborate, but it existed. It went like this: There once was a child who had one friend in the whole, wide world. This friend was a snail, but nobody seemed to mind. One day, out in the forest doing whatever small playful things a child and a snail do together in a forest, a powerful magician, who sadly had no friends whatsoever, was stricken with jealously, turned the child into a ghost, and cursed the child to a dungeon deep below the earth. After having escaped the dungeon, ghost and snail are reunited and live happily ever after.

Not much to it, right? In my ideal version of the game, there’s a nice cutscene depicting the first and last parts of the story. Of course, I don’t have the artistic chops for that, and I’m not going to learn them in 10 days. So, I came up with a second, also doomed idea to convey the story: the player, while trying to get Pink Ghost out of the dungeon, would find little bits of story here and there that would reveal parts of why Pink Ghost is where they are and what they’re trying to achieve. This seemed like an even better idea than the cutscenes, because it would allow me to design little mini-challenges with story as a reward. But neither of these ever made it into the final game; I just didn’t have the time to properly plan it out. The game is worse for it, I think.

There was another idea I had in the very early planning stages that never made it in: I thought that the primary mechanic for avoiding obstacles would be a sort of invulnerability, which seemed to fit the ghost theme. For a certain period of time, Pink Ghost would turn invulnerable and use that to get through puzzles. This actually got tossed out for pretty reasonable design choices, I think. It’s hard to create any other barriers when your player starts with the ability to go through walls (and if you hold it back, they’ve got a skeleton key for the rest of the game once you give it to them). In order to give the player some motivation to explore, I tossed out the passing-through-walls mechanic for some more straightforward keys. This allowed me to lock off certain areas and motivate the player to explore. The game is probably better off for this decision, though I think the passing-through-walls mechanic could work in a game with a more gradual path of growth for the player. But that wasn’t the game I was making.

Construct 2 gets angry when you make games the dumb way I do

Pink Ghost probably has the most limited animation you could possibly have and still call it animation. When Pink Ghost moves, their eyes will move up, down, left, or right according to the direction the player moves. I eventually came to find this one animation choice kind of funny, as it’s essentially a worse version of Haunted House for the 2600, which Pink Ghost essentially is (and Bubble Ghost). But anyway, ghosts are supposed to like, flow in the wind, right? That’s what I thought, and I tried to animate that. But sadly, I could never make it look right inside an 8 pixel by 16 pixel sprite. If I had better pixel art skills, maybe I could have. Pink Ghost remained mostly static in the final release, and I think the game is just a bit worse for it. I wanted Pink Ghost to convey a bit more personality than I think my sprite eventually conveyed.

Look at this shit. I didn’t figure this out to this degree. Not even close. This screenshot is from a website.

Speaking of things I just couldn’t learn to do in 10 days: Pink Ghost has basically no sound and absolutely no music. I really tried at this one, spending the allotted time of one entire day trying to make sound effects and music that I thought suited the game. I found this so hard it made me want to write letters to sound designers explaining how unappreciative I’ve been. Every piece of tracking software is an incoherent mess that made me feel like I’m yelling at the screen hoping that would make something happen. After giving up on actually making sound (and long since giving up on the idea I would ever put sounds together in a fashion you might call music), I tried a piece of software that randomly generates them. It was through this software that I got the one sound you will actually hear in the game: the death sound.

I did get one other sound I found satisfactory, but because I’m an expert at scripting games, there was an error where it would play constantly on certain screens, creating incredibly abrasive white noise. So that was out too. Audio assets are a nightmare; god save the sound designers.

I wanted to have a proper life system in Pink Ghost, like in Zelda, y’know? You’d have some hearts and those hearts would slowly empty and then you’d die. This life system broke me. I spent… too much time, more than a day’s worth. Maybe eight hours? figuring out how to make this happen. And I did! I drew the simple little animation frames. I sat there on my little testing level, running into spikes over and over again, watching the heart empty, and empty, and then Pink Ghost would die. I was really happy. Life systems like this are actually pretty complicated. The game, by default, doesn’t know to empty just one of the hearts. You have to tell it that. It doesn’t know that you don’t mean to loop the animation. You have to tell it that. It doesn’t know it should wait until it gets hit, advance the animation one frame instead of playing the whole thing, and then stop. And so on.

So things were good. I was happy that I had made that system work. Until I started actually running through my levels. You see, there was one problem I didn’t realize because of the way I was testing things: when you went into a new screen, the health would reset and the hearts would fill back up. The worst part of this is, I think I understand why it was doing this, I was just too oblivious to notice it before I had built the whole script around a single error (that I didn’t realize was an error). So, I threw out the whole system. Nobody ever saw my hearts and their simple little animation. I replaced it all with a much simpler one-hit death system, and the game was worse for it, I think.

I don’t mean anything here to say that I’m ashamed of Pink Ghost, or even that I think it’s an especially bad game. I think it’s decidedly mediocre for the asking price of $0. Worth your time, if it doesn’t take you very long. But if I learned anything from making my first visual game (and I learned a lot!), it was this process of having ideas, trying them (or making them and failing), and throwing them out. I thought it would be interesting, if only for myself, to document my initial plans and the process I went through that eventually lead to the actual game you can play right now. Game development is cruel to your ambitions.