The Insufferable Pan - Postmortem


In previous games I've done, I may have had some sprites laying around... old tinkerings and whatnot. This game has my Pixel-Team Logo, and a splash screen of controller support. These were assets that were created before the Jam. The rest was made during the 96 hour jam period. That means music, sound effects (some curated, some created) pixel-art, animation, backgrounds, tiles, and not to mention code and level design, and even scripted dialog, and one voice-over (the character's death yell) were all done in 4 days.  I've worked hard on game jams in the past, but I don't think I ever worked as hard as I did in this 4 days. We're talking 16 hour shifts, where I have to be left alone or I can't say I put everything I had into it. Some people do game jams casually, and have a healthy balance of home life and game jam effort. For me, I am all business. Obviously, I'd like to win, but a big part of me just wants to win over my peers. These are folks that share a community at the Gamemaker Forums. We all love making videogames, and this friendly competition brings out the best in all of us. The pixelling parts are always my favorite. For those, I can sit on the couch with a laptop while the wife is next to me, and so we can visit while I'm still getting things done. These are the least stressful because I can think up an idea, and minutes later it's there. Writing code, while just as fulfilling, can also be intensely stressful, depending on if you hit a snag or two, and must be done with no distractions if it is to be done successfully. I'm going to talk about how this game is made, and discuss the ups and downs of game design.

Every game starts with an idea. The theme for this game jam was Mythologies. I'm a huge mythology fan, but I also had played one of my favorite 2d puzzle platformers recently called Escape Goat. In Escape Goat, you play a goat that was banished to hell for witchcraft. You have a little mouse friend that helps you solve puzzle rooms where the objective is simply to get to the exit. So, imitation being the finest form of flattery, I reasoned within myself, I'd like to make an Escape Goat game, with a Greek mythology theme. (You might say that Escape Goat is already a mythology game, but I digress.) How about you're a satyr, Pan in fact, and you have to save a beautiful princess, and rather than a mouse, you have to charm a rat with your flute?  So now I have this idea, and in my mind I'm thinking ok, I'm going to have to draw every character I want to have in this game, and so far we have the main character, Pan, we have Persephone, and we have to have at least Zeus. so I looked up the story of Persephone and the pomegranate, and it had to do with Persephone and Hades, and the Pomegranate was supposed to bring her out of the underworld. Ok, fine. So now I have to have Hermes as sort of the vehicle to deliver the bad news to Zeus, and provide a little explanation of how Pan can get Persephone out of Tartarus once he finds her. For pixelling, I can't tell you anything other than getting good at pixel art requires that you do it... a lot. I'm not even saying I'm good, either. All I know is that the more you do it, the more you will learn what makes good and bad pixel art. For practical purposes, I use reference images to draw things. For Zeus, I actually used a statue of Zeus. There was no color in the reference image. My idea of Zeus came from Lawrence Olivier in Clash of the Titans, 1981. I wanted the curly hair, old man. For Persephone, I think I did a google search for Persephone, and for Hermes, I did a search for Ares in order to see a spartan helmet character, because I wanted my Hermes to look like the Hermes from Jason and the Argonauts, 1963. Can you tell I'm a fan, yet? So as I'm pixelling, I literally have a reference image I'm looking at, and in come cases, I will shrink down the reference image to the intended pixel size, and bring it into ProMotion so that I get all my proportions correct. I'm not tracing, mind you. I'm measuring. All art is technical art, and when you understand that there are methods and techniques to drawing, it should demystify it for you, and hopefully empower you.


Here's a look at the ProMotion project. Everything graphically that goes into the game I make in a single project. I just keep adding layers, like in Photoshop. I do this so I'm not searching through files to find stuff. Also, I want to look at all the pieces together frequently to see if I am maintaining a constant aesthetic. I actually used the Dawnbringer 32 palette for this game, and I found that it took away a lot of guesswork on what colors would work well together. The Level Tiles are in the top. You can see there really wasn't much to the levels. Just a few bricks, dark and light, and the little crevices that show where the moving blocks will travel. Oh, yeah and a chain link. It's crazy how far that one little decoration tile can go.

I recently wrote a program called Text Mapper, which lets you script out conversation trees using nodes, and it will save this data out as a JSON file. This JSON file is then loaded into the game, and I can call up a in-game dialog that will show the character's portrait by referencing an ID for that particular dialog. This was a humongous milestone for me as a developer, because graphics and sound can convey a lot, but spoken dialog with characters can bring so much more to your storytelling. So while I'm showing these people standing there in the level, I also need portraits for each of them. I ran out of time and couldn't get Hades done, but I got Pan, Zeus, Persephone, and Hermes the Messenger. I had a single object in Gamemaker Studio that you give it names, portraits, and a little nine-slice graphic for the dialog window, tell it what font to use, and it reads out the dialog in a classic style that I just love. This whole part went without a hitch, and I only wish I had more time to get Hades in, and maybe massage the dialog so I could throw in a few more jokes. Also, I kind of messed up the script, using Capital letters when using the term God in some cases, and not in others, and another area of the script, Persephone refers to Zeus as Father in one sentence, and then calls him Daddy in another. A complete oversight on my part, and when you're working against a deadline, there's no time to sit and cultivate. There's definitely going to be some script revisions on this game.

For the opening scene, I knew exactly what I wanted. I wanted some outdoor scenery where Pan runs along, and the player learns how to jump and run. Following that, I want to set up the premise, in as few words as possible, because even if dialog is compelling, you can blow it if you have too much exposition. So we have Pan talk about how he loves Persephone and wants to ask Zeus for her hand in marriage. Then he runs up and before he can get a word out, we have Hermes telling Zeus that his daughter is in Tartarus, and that he can't save her. Then Pan speaks up and asks Zeus if he'll let Pan take Persephone for his wife if he can save her. Zeus agrees, then he tells Hermes in private that he doubt's Pan will even succeed, and even if he did, Persephone would never agree to marry a satyr. And there you go. He's an underdog, and the gods are rooting against him. I love an underdog story.

The part that didn't make it into the game, and I wish it did, was I wanted to show Pan falling through clouds, and you see Mount Olympus in the background, slowly scrolling upward, just as some large clouds cover the screen, they reveal the kingdom of Tartarus, and we see Pixel Team Presents, and then the fade in of the logo, with Pan still falling and falling. He then drops off the bottom of the screen, and we fade into the first actual puzzle level. Unfortunately, I ran out of time, but I totally could have made that happen. (And may yet.) Normally my games have an intro, then a title screen, where you can set options, and remap controllers and all of that. This game jumps right into the action and you don't get to see the Title until the end credits, (something I absolutely love to do in my games. It leaves a lasting impression.)

For music, I use Reason. I've used it for many years now, and it does so much I don't think I'll ever use anything else. Now that it uses VST Instruments, it runs with the big boys (Sonar, Pro Tools, etc). I wanted to use a dulcimer, because it sounds like an ancient instrument (even though it's not really) and when I got those first few notes down, I knew they would grab you. Normally I'll spend at least a full day on a good music track, but this was a rush job, so it sounds a bit repetitive, and I'm my own worst critic.

The main mechanics of my game are as follows: I have these moving boxes. You can stand on the boxes, and the boxes can take instance variables which are little arrays with "U","D","L","R", and "P." The U, D, L, R, are for Up, Down, Left, and Right. The P is for Pause, so if I'm moving two blocks into a specific configuration, I can make one of the blocks wait until the other block is out of its way before it moves. The gogwheel sprites you see in the scenery simply look at the switches, and determine if the boxes are travelling in a forward direction through their programmed movements, or backwards. Then the cogwheel itself will animate either forwards or backwards to make it look like we're in a giant machine. The switches come in a couple types. There are constant switches, which move the blocks back and forth endlessly. Then there are one-shot switches, that will move the blocks one time, and then disable itself. I can also tell one switch to tell a group of blocks to animate in a forward direction, and activate a separate switch when it's done, and that separate switch can tell those same blocks to play in reverse. So a switch has both an id, an array of which moving blocks it's going to control, and an array of other switches to turn on (or off) when complete. If you play Escape Goat, you'll understand perfectly. I think it's a beautiful mechanic, and makes for some VERY interesting level designs.

I had to add some additional hazards into the game, so I added fire for the floor, which is cheap and easy, since you already die if you fall off the bottom of the screen. Next, I have Ram heads that if you are vertically aligned with them, with Pan, or the Rat, they will shoot fireballs at you. The way I accomplished this was basically the Ram head, depending on which direction he's facing, will do instance_position checks at every 8 pixels until it runs into a tile, or a moving block. It's pretty simple, and worked like a charm. Also, it gave them some personality instead of making them automatic. Lastly, I brought in the world famous spikes. I'm going to level with you. The only reason I brought in Spikes was because they took 5 minutes to draw, and I had already animated Pan in a sneaking animation, with the intent of having you sneak past minotaurs or they would wake up and nail you, and I ran out of time. Anyhow, the mechanic was simple. The spikes on their collision event with the player simply check if he's sneaking or not, and if he is, he lives. Easy, peasy.

The flute playing mechanic started out with lofty ambitions. I was going to have music puzzles in the game, and you were going to have to memorize tunes and play them back, and then I realized that people would hate this, and how do you get a decent range of notes on a controller. So then I decided I'd just make the notes come out at random, and basically you just have to get within a certain range to charm the Rat. I'm going to change how the flute works and make it where you only have to play 5 notes in a row to charm the rat, because some players did not quite get the fact that you have to play uninterrupted for 5 seconds, and they were running and breaking the process, causing the rat to have to start the 5 seconds all over again if there was a break in the music playing. As a result of this, they thought they needed to mash the button 20 times to get the rat to get charmed, when really they could charm the rat with 5 long notes just as easily. This is turning into my biggest regret.

The two biggest challenges in this game were the character's ability to stand on the moving platforms without glitching out, and the Rat's walking on walls mechanic. I spent hours wrestling with that rat. Originally, I was going to have him walk upside down on ceilings, like the mouse can do in Escape Goat, but when I hit all the problems with him just running up walls, I thought it was enough trouble just to get him to:

  1. grab the wall if jumping into it with jump held down
  2. bump his head on a ceiling when running up the wall
  3. jump onto the floor if he's running down the wall and sees a floor tile below him
  4. Jump off the wall if he's running down and there's no tile below him.
  5. climb up a ledge if he's running up the wall and sees a tile he can stand on.

The standable platforms were the second challenge. Not because they didn't move right. That went smoothly, and fast. What went wrong is how I tried to parent the character standing on the platform to the platform itself, such that it would inherit its movements. In some cases it appeared to work right, but then you'd have two of them together, and the character would run off the one, and momentarily see this as falling off a ledge, when technically it's supposed to be stepping onto the second one. This cause all kinds of madness that looked like the character was in its jump pose while standing on the thing. Another bug I saw is in certain cases when the Rat lands on the thing, he doesn't get parented properly, and even though the platform is moving, he didn't move with it. I definitely need to rewrite how these work, which I plan on doing in the very near future.

Despite the couple of problems, and my usual biting off more than I can chew, I definitely think it's my best work yet, and brings to mind an interesting anecdote. About 27 years ago, I got my start in the casino gaming industry. I was a doting pixel animator, and so green behind the gills, being a programmer to me was something only geniuses could ever be. I quickly met a programmer at my new job who shared my love for videogames, and I tried to talk him into making a mythology game with me. We were going to try to release it on the Gameboy. It was called Mythworld, and it was basically going to be my Jason and the Argonauts. I couldn't even draw at the time, at least not Gameboy quality. It's a wonder I even got hired at all with my abilities. Needless to say, the project went cold for lack of ability, and became the first in a long line of unfinished projects. Those unfinished projects served a purpose though, and that purpose was to get me to where I am today.

Thank your for reading, and see you on the next one!

Files

TheInsufferablePan.zip 3.2 MB
Aug 30, 2021

Get The Insufferable Pan

Download NowName your own price

Comments

Log in with itch.io to leave a comment.

What a cool game. And sorry about my rage at the flute mechanic. I went back and played it and it’s really not so bad when you realize what you’re supposed to do! I’m really looking forward to seeing that cutscene at the beginning once you’ve got a post jam build done!

(1 edit)

Thank you very much for playing, and thoughtful analysis. Your frustration was well founded, and I failed to have Pan say he needed to get close to the Rat for his music to work too, which I have since corrected as well. I also fixed several bugs related to how Pan and the Rat move on the platforms, as the Jam version had a few scenarios where they don't stick properly. A much cleaner version is on the way, and I appreciate your streaming and providing feedback!