Forever Alone
Play and Rate!
Not sure exactly what’s meant to go in the post mortem, but here’s my lengthy shot at it. This was my first attempt at the Ludum Dare competition so I went into it with no knowledge or expectations, but I did completely underestimate just how hard it was going to be to whip up a game and all of its assets within 2 days (A huge mistake considering it usually takes me 2-3 months just to create a engine/framework for my game projects which I never end up finishing anyway).
So I was reading up on what tools people were generally using and FlashPunk/Flixel and Flash Develop were the most mentioned so I thought I’d check them out. I used to make little games in Actionscript 2.0 a couple years ago so I thought Flash wasn’t going to be a problem, then I learned that with Actionscript 3 they made the shift into more Object Oriented waters, which also wasn’t a problem, and when I noticed how close the syntax/principles were to Java I thought that all I had to do was look at the API for both AS3 and Flashpunk and just throw my game together, and this derailed about an hour before the competition when I tried to make a quick SHMUP to see that I could make a game using these tools. Now the reason I didn’t just use Java was because I didn’t have time to make an engine absolutely from scratch and a game on top of it, and I didn’t know any Java Libraries / Engines in the same respect as Flashpunk. I found that even though I was well versed with OOP design principles I had no clue how AS3 operated and where to find this Class and that Class and what do I need to extend to make this work, etc. So I realized there would absolutely no way I could create a game within the time constraint while fighting against the tool that was supposed to help me do it. So I bit the bullet and decided to use Game Maker 8, and only be able to distribute to Windows and Linux users with Wine, and with no hopes of web distribution.
The moment the theme went live I sat down for exactly 10 minutes and wrote up a draft in Notepad detailing the extremely complex(not really) and silly/good natured premise of the game, this was a wasted 10 minutes because I ended up using absolutely nothing other then the title of the game! After the 10 minutes I cracked open Game Maker 8 and decided to not think, and just do. This was my first obstacle because I had to relearn all of the different functions available in Game Maker since I haven’t used it in any respectable amount for years.
After I quickly looked over the well written documentation for GML, I created a room, this would end up being the Main Menu Screen and this is where I implemented the first playable version of the platforming. I decided to first get the platforming engine out of the way before doing anything else, and this was a lot of fun since I never created a platforming engine before, so I created the player object and just started cracking away at it. Essentially I made it work like this: There are blue and red squares placed in the room and are invisible to the player, blue blocks vertical movement, red blocks horizontal movement. Player movement is done using velocity which is incremented when the user supplies input, and is constantly reduced to imitate a simple man’s friction/gravity (Since I don’t really know physics). Jumping creates a sudden jolt in vertical velocity, and the walls/floor set velocity to 0 when impacted. Now the first Issue that I saw was simply checking for collision with the player and an instance of blue/red would make the player stuck in the axis corresponding to the color because it was constantly setting velocity to 0. This made me think a bit and I learned a new principle for future games I make, and that is for good collision I shouldn’t be checking if the object collides with the wall, but rather if it is going to collide with the wall, this breakthrough allowed me to implement smooth movement in both x and y and when I was happy with it I decided to create my first couple of blocks of my tile-set, which ended up being only used in the Main Menu, which is why you will notice the graphics get better from that point on.

Platforming

Old Main Menu
Then I realized that I needed a theme song! So I downloaded the program Pxtone because that’s what I read some people were using. Something must have been wrong with the download because all of the message strings in the program looked like they were written in the Wingdings font, but the program itself was simple so I figured out how to make a loop, although exporting took some attempts since I didn’t know what anything said,For the creation I used a basic dubstep beat setup along with a melody I created on my piano and that’s how you get the theme music! I also downloaded SFXR because I wanted sound effects in my game for everything from little things like the player jumping/hitting the floor to contextual information in the minigames.
Next I decided I wanted to inject a tiny little plot, or some purpose into the game, and that’s when I decided it would be cool to have an mysterious Announcer character who is visually represented by a spotlight, this also gave me a tiny little break from making the game assets to create the ray-casting routine for drawing the spotlight. Then I decided the spotlight would basically serve as a guide through the game so that you know how to progress. For the implementation of the theme I had the spotlight give the player a “Sword of Confidence” which basically sets up the mini-games and the idea that the character needs confidence to stop being so alone.

It's Dangerous to go Alone, take this!
From this point on I decided that I wanted to make the player do basic tasks that build his confidence and ultimately get him a date. I decided on the following gameplay: Platforming to explore the level and find the task, and then have the task be a timed event minigame sequence of having to press the correct arrow before the timer runs out a certain amount of times. The object I created to handle these minigames was dynamic enough to allow me to simply specify how many arrows I want it to display, and then it proceeds to run the minigame with that amount of arrows, and decreases the time the player has to respond which each following arrow. When the minigame is finished it awards the player Confidence Points based on how many arrows he completed and then plays a short ACHIEVEMENT-esque animation to add some flare to the game, and to allow for a few bits of humor.

Minigame

Confidence Boost!
After I had these basic systems in place I got to work on drawing the tileset for the level in Photoshop 7, creating the tileset and then placing it was the most time consuming aspect of the project! It took me roughly 12 hours just to implement the first level because I kept going back into photoshop because I wanted to add something like a toaster, or a sink faucet, or some towels, etc. I’ve never really done pixel graphics before so it was a lot of fun seeing a whole game made out of pixel art that I created because I don’t consider myself an artist! One thing I can take away from this process for future projects is that I should probably map out my levels before I create them, that way I know what kind of graphics I need and what the design of the level will be, here I just created the levels one section at a time, and it really wasted a lot of time.

Early Version of Level 1 (Zoomed Out)
After I implemented the levels and the objectives, I decided that it would be good to add the announcer as a colored light at the end of the level that tells the player what objective they should complete next, this way, the player isn’t just running around the level trying to find objectives to complete, and that he knows which one he should focus on next, however if he chooses to, he can complete the objectives in any order and ignore the announcer.

Quest for Confidence from the Mysterious Spotlight!
And then comes the twist ending to wrap things up. I wanted to inject some more humor into the game and make the player look at the events that transpired before and after the ending with a new perspective, and to also tie in the name of the game! A strange coincidence that I noticed that goes nicely with this ending is that when the announcer throws the sword at you and it chases you, the only way to indefinitely run away from it makes the sword follow a path the resembles a sideways 8 or infinity =D Unintentional but does help drive the ending home.
Thank you for reading what I hope is a correctly done post mortem, I had an absolute blast making this game and participating in this competition, and the knowledge I picked up implementing the platforming and mini-games will be invaluable to me for future projects!