Archive for May, 2011
Princess Mystery Dungeon now has Windows and Mac packages!
My game, Princess Mystery Dungeon, is now available in savory Windows and sweet OS X flavors! A big thanks to Spooner for packing up the Windows build for me.
If you haven’t tried it yet, give it a go!
(One warning: There is a very occasional crash during the initial dungeon creation that I haven’t fixed yet. If the game crashes on launch, try running it again, it should work most times).
(There are may be other crashes, too. Probably there are! If you run into any, let me know, and I’ll try and get them fixed.)
Deadweight: post mortem
My first LD, and well, that was a lot of fun!
I called the game I made Deadweight. It’s a puzzle-platformer which revolves around a boy taking his narcoleptic sister on a day out.
Overall I think it’s pretty successful. The gameplay is simple, with variety and challenge coming from level design. There are 12 playable levels, plus two for intro and outro.
I economised on art by choosing a cartoon style, and having all characters made of circles. I think they turned out with a lot of personality, considering…
Assorted technical details
Levels are defined by way of numbered PNG images, starting from 0.png. Pixel colours in each file define the world, and gameplay parameters such as start and goal position. Each pixel is one game metre, so the images are small.
Here’s the first level and seventh levels:
Each level PNG has a text file for dialogue — this is a pipe delimited file displayed before gameplay begins. It’s used for the start and end levels as well as the name of each level.
Source documentation
A quick tour. The source looks like it was rushed because it was!
- BallEnemy: this is the red enemy balls, which try to knock you around. Before each physics step, they apply an impulse toward the player. You can probably tell the ‘prephys’ method was hacked a lot to balance their strength.
- BoxEnemy: these were originally enemies, but I changed my mind. They are the grey cubes and circles which are mostly inert.
- Consts: tuning constants.
- Eyes: shared code for eyes. I spent a long time on this. Eyes have three modes: search, random or movement. In ‘search’, a small AABB is queried around the eyes for other things with eyes — the eyes look at the eyes of this other thing. In ‘random’, the eyes choose a random target vector each blink (so, they look around). ‘Movement’ makes the eyes look in the linear momentum vector.
- GoAloneListener: libgdx ApplicationListener. This manages movement between levels by instantiating ‘LevelStage’ objects and directing calls to them as necessary.
- Help: big heap of boring static functions.
- Input: a libgdx InputProcessor. This stores input state which is applied each physics frame. It also allows input to be blocked for a number of physics frames for debouncing purposes.
- LevelStage: you know God classes being bad? This is one. This takes care of physics steps, entity management, rendering the level, level state management, building the background gradient quad, panning the camera to follow the player, reading and rendering the dialogue, and reading the world. Phew!
- Player: this is the player entity. It draws itself, and implements movement left and right (both on land and in air, which was irritating to implement!) and jumping (with debouncing).
- Runme: libgdx stub which makes a GoAloneListener.
- Sister: the inert sister entity, and also the mother.
- Sound: Plays game sounds and music.
- Textures: loads the single texture atlas and doles out textures from it by name.
- Weight: unused (a precursor to the sister class which I forgot to delete!).
- WithPhysicsBody: A bunch of concepts common to most entities in the world — like ‘things with eyes’ and ‘things subject to physics’ and ‘things with a position, size and rotation in the world’.
- WorldTile: cloud and world tiles. Includes bonus layering violations!
Things I would have done differently
- Be happy with the physics parameters before making non-trivial levels. The size, mass, bounce, friction of entities changed late-on which required rework of all levels — a total waste of time which would have been better spent adding to levels.
- More frequent breaks. I was burned out 6 hours before deadline, so I could have taken it easier on Saturday.
Things which worked out
- The level construction method was pretty fast, if a little ghetto.
- libgdx. Really useful features, without imposing structure. I found a bug part-way through which happened to be already fixed, so I rebased on a later version.
- Fruityloops. I got this only recently, but I turned out some satisfying music in a couple of hours.
Things still to do
- Android port. It’ll need some onscreen controls building and I’m a little burnt out now.
Steampunk Axebot Timelapse
ZombieRunner…Ware – Post Mortem
So this was my first Ludum Dare – ever. The only thing I had expected was to have “something that doesn’t crash – and it has a gameover screen” and a funfun time doing it. Largely, this was a succes.
First of, a few things of note about the compo itself. One thing is some of the submissions that are simply astounding for a mere 48 hour project. Several of them are basically “Newgrounds-ready” and with a production value that compares to games with several months of dev time. Being able to launch that much content (and of such a high quality) in so little time is both intimidating and inspiring.
The other thing of particular note to me is the very liberal interpretation of the theme. Being a hardcore rule jockey I intended to infuse my game with every ounce of the theme I could muster, the phrase itself being not only a corner stone but the very pivotal point of the interactive experience. This stands as a stark contrast to by far most of the entries I’ve rated so far (about 70 as of the time of writing). Mostly it was a question of slapping out the phrase within the first 15 seconds or two game screens and just have it done with – then send the player onwards to something else. It strikes me as unfortunate, as I perceived the theme not only to be a loose constriction (and at this point, more a labelling requirement than a constraint at that) but a creative demand on the developers. However, several games managed to use the theme in subtle and unspoken ways. All manner of partnering mechanisms have been displayed in ways I wouldn’t have dared to imagine, and it’s been a thrill to experience an actual interpretation of the theme as a gameplay mechanic more than simply a phrase or a meme. Thank you to those devs for the experience
Now, back to my poor excuse for contemporary satire. As I woke up four hours into the compo and saw the theme I had an instant vision of the game and its purpose. I wanted to expose and criticize the theme as it has manifested itself in modern-day zombie horror games, basically from the transposition “it’s dangerous to go out alone. but I’m not going to go out with you and instead offer you something that may or most likely may not be of any assistance to you in your coming challenges”. Intended as a light-hearted jab at the large body of zombie games I wanted to depict the eternal and largely futile journey of post-apocalyptic survivors in the wasteland. The actual gameplay challenge would lie in very simple mechanics from one round to another against a horde of enemies with no particularly discernable features.
What became my downfall, I think, boils down to experience – pure and simple. I have never constructed a “finished” product before this weekend, and I spent a lot of time getting to know library mechanics of flixel I had never worked with before. I spent time getting to know musagi and sfxr and lost almost an hour of work trying to make musagi export wav files (an issue most likely caused by sound card and driver). Being an incarnated code monkey I live by the addage “content comes later”, constructing frameworks, boilerplate, mechanics and anything that is made with a text editor until I absolutely have to put something into image or sound.
To be fair, though, the final version differed primarily only in content, but I would have liked to do these things:
- More items. Either 12 distinct items with different mechanics or 3-4 base mechanics and a slew of aesthetic variations on them. I ended up with 3 release, 1 coded item. The final item started out as a sparkler (don’t ask), turned into a flamethrower (simpler implementation), finally a stick (even simpler). The stick was basically a burning spear and so I removed it.
- An actual way to die from the challenge, not from boredom.I had planned more zombie types and I would have liked distinct options for defeating each, to make sure the player actually had to think while playing.
- Prettier graphics. All over. 6 hours before deadline I was suddenly struck with a graphical style I could’ve pulled off if I had the time. I had to rely on a mouse and Paint.NET to draw the barebone necessities.
- A more solid soundtrack. I wanted to make a single ambient musical soundscape underlying the complete game, while subtracks would play within each game state to underline their purpose. I simply didn’t have the time or skill to compose something that could have done it properly.
In the end, however, I’m satisfied with myself, and I’ll prepare better next time. Buy a drawing tablet, have all the necessary software installed beforehand and spend weekends up to the compo running drills to prep myself.
Now then, I’d better get back to enjoying the other entries. I’ve been laughing steadily the past two hours over one entry or the other and there seems to be no end in sight
Forever Alone – Post Mortem
Forever Alone
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.
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.
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.
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!
From Compo to Jam … :(
Yesterday, shortly before the deadline and when I uploaded my game, I had no problems to classify “Tri” as a Compo entry. But after sleeping for some hours, regaining my sanity, I asked philhassey to move my entry to the Jam. It makes me sad, but using a script for the gameplay (to be exact, it’s the character controller) which is written not by me is just against the rules.
Well, okay. What did I learn from this? Think smaller! Although I still like my game it seems like it was too much (for me). Next time I will do something which doesn’t need a sophisticated first-person character controller.
What else went wrong?
The time I needed to make a level was just too long. I thought I’d be faster than two to three hours per level (including modeling, texturing, writing “story”, and of course testing), especially when they are so short. But it just happened that I am more motivated when writing the scripts, not when I have to think hard of puzzles and interesting layouts. So, next time I perhaps will make something with procedural content, something I really have to look into. Even though I don’t like Minecraft that much.
Other than that I hoped I could implement some kind of NPCs (because I like them much more than the all-knowing narrator). But they didn’t even make much sense with my concept so they were cut out pretty soon in the process.
What went right?
I really like how my concept turned out to be actual fun! At least that’s what most of the people say who played it. Over the whole time I had “Optimize Gameplay By Restricting The Gun!” as a TODO on my list, but it wasn’t really needed. Okay, you can now place hundreds of triangles (instead of, like, only three or so) – but so what? My learning here is: FUN COMES BEFORE RESTRICTIONS. If it’s just cool to let the player do “too much”, I think time spent on finding the right numbers is not time spent right. Portal showed how to do it right by adding the Challenges as alternative ways to play some levels. (Of course, that rule doesn’t always apply. Not every game is meant to be sandbox.)
The other thing what went definitely right is the fact that I even had time to add some sounds. Some will think I even made some music but I really just used iNudge, clicking randomly on some buttons, hehe.
Conclusion
Joining and working for the Ludum Dare is rewarding in itself, and I will definitely participate again (perhaps not #21, though). Even though some of you had problems with the theme, it just proved to be the least common denominator – over 300 entries? Just wow!
For me, it really was cool that this theme got the most votes – I had the basic idea for my game in the night the LD started (4:00 am – I slept), and the next morning I found out it fit perfectly!
Thanks for reading! Here is a bonus screenshot from my game, Tri (talking about too much force field triangles):
Self-evaluation: Cheese Hunter
Monday, May 2nd, 2011 9:08 amSo, Ludum Dare #20 is over, and voting has started. I intended to write a post where I sum up my thoughts about my own performance.
But first; I want to applaud this community, for being so warm. People are encouraging, and the admins do not accept trolling. Everything is very well organized, and I can’t really see what can be done better. This guarantees for my intent to participate again next LD.
About my own performance;
What went wrong?
I found quite a few bugs in my own basecode, that did cost a lot of time. This is a direct consequence of the basecode being made FOR Ludum Dare, and not being tested on any other real projects.
Basecode lacked some features that would speed up the development. Asset management, a camera, sprite-position correctioning (to be able to easier enter doors when missing them slightly), dialogue system, a standard set of good collision detection algorithms, and probably much more that I can’t recall at once. These are all things that I intend to fix before LD21.
A direct consequence of this shows in my source code, as a great pile of doodoo.
What went well?
I started drawing, and things turned out much better than I expected. I even had an animated main character that worked out decently well – he didn’t get to have an attack animation, though.
I did manage to dedicate the time to do this.
I did finish, and the game is beatable. And I’m very happy for that.
Can I do better? Yes I can, just check out my performance on LD21.
The Thrill of Victory, the Agony of Defeat
Behold, win and lose conditions are in!
Basically, if an enemy agent is next to the courier holding the package, you lose.
If, however, the VIP is next to the courier holding the package, you win.
So technically, I have a game finished. It’s very unfun, very unpolished, and very uninteresting, but you can make moves and eventually lose or win.
What’s left:
- moving the agents towards the package holder
- win condition check
- lose condition check
- allow multiple couriers to move during move phase
- adding pedestrians
- moving pedestrians
- shoving package through pedestrians
Right now, it is very difficult to get past the agents because it’s only possible to move a single courier in the move phase, and passing the package isn’t very effective. Allowing multipler couriers to move at once during the move phase should help even the odds and make it easier to pass the package around.
Randomly generated Pedestrians should add some flavor to the game. In a busy plaza, it might be difficult for couriers and agents to move around freely. Plus, shoving the package to teammates gets more fun if you can leverage innocent pedestrians, although it opens up some difficulties in the code and design. What if you shove a package into a Pedestrian who shoves it to another Pedestrian who ends up in an empty space? Should the package only get passed if you can end up with a courier at the end of the shoving chain? I’ll try to keep it simple and go from there.
The UI is a little frustrating. If you can make a move or if you can shove, you MUST. Currently, I have no way to say “No, I like where my couriers are, and I don’t feel like shoving this turn.” While I can fix it by adding a “Done with turn phase” button, maybe the requirement is fine. Checkers, if played correctly, enforces a “you must jump if you can jump” rule, which makes it very strategic. I’ll leave it until the end.
Another frustrating thing is that there is no way to cancel a decision before you’ve decided. If you click on a courier, you can’t change your mind and pick a different one. It’s fine if you’re playing chess to require that touched pieces must be moved, but if you accidentally click on the entity during the shove phase right after moving it, it can be annoying to see that you have to make a shove move that you didn’t want to make. Unfortunately, I’ll also leave a fix for this annoyance until the end.
There are 10 hours left in the Jam. While I continue my work, you can watch this series of videos of someone playing The Legend of Zelda, only he decided to do so without taking “this”:
Get an RSS Feed for Comments on Your Game!
(yeah I’ve posted this before, but it’s a handy thing many people will have missed the first time around)
While you can subscribe to an RSS feed of comments on a blog entry, the LD website doesn’t have anything like that for comments on your game. So I made a bookmarklet that uses some Yahoo Pipes magic to make one!
WordPress wants to mangle it so I can’t give it to you directly in this blog post, but you can get it and see instructions for using it over here.
It is a bit fragile in that it is looking for particular bits of html, so if the site changes a little it will probably break horribly, but so far so good!
hollow complete (jam version)
Since I only had time for about 5 hours of coding for my compo entry, I didn’t get my game as complete as I wanted. I spent some more hours on it today and I’m much happier with the result for the jam entry, making the game feel much more complete.
This is my first entry to LD, and I’m really happy with what I could achieve for such a tight deadline. Would be awesome if you could check it out and rate it!
I did record a timelapse, so I might throw it together into a video later, it’s a heck of a lot of images though. Had it set to 1 per second.
http://www.ludumdare.com/compo/ludum-dare-20/?action=rate&uid=3933
Timelapse
Uploading my timelapse video.
For some reason the webcam breaks after a few hours.
Trying out video editing software, for LD19 I downloaded Cinelerra, but that was confusing and didn’t even load my videos properly. I just discovered Kdenlive which has a really nice intuitive interface and actually works.
LD20 Wallpapers! (all 352 games!)
Kobold Goes Alone: Postmortem
So, my LD20 entry was my return to game-making after a considerable hiatus. I didn’t do much in the way of exploring new technology or tools, opting instead to stick with what I knew and focus on turning in a solid result. What went well, and lessons learned:
(more…)
Recap: Wizards of the Brew
Was too exhausted last night to post a recap of development.
Overall, I hit my “minimum” game design. I had some more elaborate ideas involving inebriation; but, alas, time took its toll.
My one regret is not allotting enough time to bug fixing. The game, as is, has a few moderately annoying bugs. Additionally, since I did no play testing, I didn’t discover that not having a “skip dialogue” button is essential when you have a lot of dialogue.
Regardless, amazing! I need to do this again! I’m hooked!
Tools:
FlashDevelop, SFXR, Chronolapse (time lapse coming soon), Sonar 5, Finale, Photoshop, Notepad++
Hope people enjoy the game!
“Alone” – Post Mortem
I thought I’d jump on the band wagon and do one.
I was at a friends house for the first night – we stayed up ’til 3AM to see what the theme’d be, then got about 4 hours sleep, so I was kinda tired.
The first day went pretty well – I had the idea when I first saw the theme, so I dived straight in.
This was my first major project using AS3 & Flashpunk, I learnt them last week (although I’d done quite a bit of AS2 coding previously).
It took me longer than I would have liked to get all the platforming elements done, especially since my game stopped working randomly for about an hour then randomly started again – but hey! I then started implementing all the features – such as the “tool”, and the mechanisms, like the switches and buttons and doors.
On the second day, I added the remaining features – the enemies, spikes, and then got started on making the actual levels. This was harder than I thought – making challenging platformer levels is quite a challenge!
I then decided I needed another feature with about 5 hours left – specifically the half block, which was surprisingly easy to add.
After 6 levels though, I was way too tired – it was about 1 am, and I couldn’t think of any more levels, so I called it a night.
WHAT I’VE LEARNT:
I need to test less. Seriously, half my time was wasted on waiting for the code to compile, testing silly minor features.
I much prefer AS3 to AS2.
One thing that I don’t think I could have done without is OGMO editor. I had some trouble parsing the XML at the start, but once I got past that it was amazing. The project file for it is a complete mess, but it works, and works well.
OOP is amazing.
Quick “hacks” are ok for things that will never be uncovered again, rather than huge workarounds…. especially if you only have 48 hours :L
I CAN FINISH GAMES!
My pixel art isn’t half as bad as I think.
Mine Escape – Post Mortem
Link to entry: http://www.ludumdare.com/compo/ludum-dare-20/?action=rate&uid=3407
As I said in my submission, Mine Escape was my first attempt at a game and my first entry into Ludum Dare. I feel like I learned a lot in a short amount of time and I’ll definitely be back for the next one.
Mine Escape was “finished” in that it’s a self-contained playable game with an opening, levels and an ending. Due to running out of time I wasn’t able to put in many of the levels and different traps to fill them but the underlying “trap” system is in place so it would be fairly easy to add more. I’ll expand on that below.
What worked:
- The graphics – I’m a programmer, not an artist, and all of my art is usually programmer art of the worst kind. I can barely draw a circle freehand. By using tools like Photoshop I tried to draw with shapes and lines where possible instead of freehand sprite art. I learned that when working solo it’s easier for me to apply filters and approximate a ‘pixel’ look than to try and draw it “legit”.
- The coding – Mine Escape is the last of a long series of failed projects and unfinished tutorials, I’ve never been able to see something through long enough to do anything more complex than draw a static sprite. Basic elements of game dev like scene management and platformer physics were things i’ve never been able to get my head around before, but they’re working in Mine Escape.
- The controls – I’m keen to get started making Xbox XNA games and so I wanted to do the controls properly instead of hacking them in. The title screen detects if you press a keyboard key or gamepad control and responds accordingly. The mouse cursor is not drawn if you’re using gamepad input and you can play with any controller index (1-4) regardless of how many are plugged in.
What didn’t work:
- My timekeeping – In retrospect, I didn’t make the best use of my time during the 48 hours. I surprised myself by creating art+sound assets I didn’t hate and so spent a lot of time producing more. You can see this in my first video (http://www.youtube.com/watch?v=r4qASBnUXpo) where most of the assets from 18 hours in made it to the final game.
- The game length – Games like Mine Escape live and die by their levels, and on that count this was a failure. Most of my time went into the “overhead”, the engine + mechanics and I just ran out of time to implement more stuff to do. I was going to have more dangers such as acid drips and electrified floors which would eventually start being arranged so that you had to rely on the BUDDI rather than just swinging the torch about to see what’s ahead.
What I learned:
- If my game needs lots of levels to be playable, I should spend more time crafting them and getting their mechanics working. If the intro screen’s art is amazing but there’s only 1 level then it’s the length people will comment on. Speaking personally I’d rather play 20 levels with placeholder art than 2 levels of finished sprites before game over.
- Game making is FUN. When I first started out I quickly realised it’s also a lot of hard work, but once you push past that it’s a rewarding hobby. I’m glad I proved to myself that I can do this, even if I’ve only scraped the surface.
What’s next?
Entering LD48 was a ton of fun and I’ll be here to take part in the next one, too. Now that the compo is over I’m wondering what to do next. I feel like my thought process has been changed from “what am I able to do?” to “what do I WANT to do?”. There’s a strong possibility I’ll add some more levels, fix some bugs and take Mine Escape for playtesting. If it turns out there’s a fun and engaging game idea in there I may clean it up to fit the Microsoft App Hub guidelines and publish it on the Xbox Live Indie Games section.
Entry link: http://www.ludumdare.com/compo/ludum-dare-20/?action=rate&uid=3407
Let Me Save You! Your Faithful Companion (time lapse)
I have mostly recovered from the rigours of last minute bug killing before submission last night. So I have made a little time lapse video. Hopefully you’ll find it interesting as I really tried to tackle every part of the game in big chunks at a time (scripted my story in one go, then re-wrote in Ren’Py, then composed all the music in Sibelius in one go, then did all the artwork). Please watch it at full size to see the tits & arse- I mean, to see the artwork and the scripting clearer.
I can’t seem to embed the YouTube on here, so here’s a selection of stills from the video and the YouTube link below ^^

http://www.youtube.com/watch?v=_MRDp2RHGEc
View my entry: Let Me Save You! Your Faithful Companion
The day after
I was too tired after submitting last night to write a summary, but here goes…
What I used:
- FlashDevelop
- Flixel
- Box2D for rope physics
- Reason
- Photoshop
- SFXR
Flixel turned out to be a pretty good option for this type of game. I had some basic platforming going in minutes, and even though most of the first day was spent implementing the rope mechanic, I got more done on Sunday than I expected- largely because Flixel made development easier.
I ended up using the map editor DAME (http://dambots.com/dame-editor/), which I would also recommend. It has a few quirks (and I was a bit nervous about how I was using it to structure levels; basically each one being a “group” that was shown while I edited it, and hidden if I was editing another one), but it worked through to the end without any real problems.
For some things, I found the AS3-generation to greatly simplify my code: for example, when creating a “LevelExit” sprite, I simply created a property on the sprite type called “targetLevel”, which I would set to “Tutorial”, or “Level3″, or whatever. Then in DAME I set the sprite’s constructor field to “new LevelExit(%xpos%, %ypos%, %prop:targetLevel%)”, and in AS3 I created my LevelExit object to do something like… “playState.level = new targetLevel();”, and it would create a new instance of the target level. I’ve got no idea if this is a standard way to use Flixel/DAME/etc., but it felt pretty neat to me. Pity the rest of my submitted code is so shocking, hah!
I realized that creating sprite animation in Photoshop is *much* easier if you use layer groups. Once I had the body part groups (“head”, “torso”, “left hand” etc.) set up, and realized that you just need to right-click on the group and “Duplicate Group” for each new animation frame, I was actually really enjoying the process. Select layer, Ctrl-T (for free transform), move pivot, rotate body part. Repeat.
Box2D was relatively straight-forward to implement, although I couldn’t get the debug-view (with all the rigid bodies overlaid on top) working with Flixel as smoothly as I wanted. I ended up with a hacky solution, which at least allowed me to see where my rope rigid bodies were going wrong. It felt right at home amongst the rest of the hacks, so it stayed.
Unfortunately, it appears that I’ve made the game a bit too difficult. At least from the comments on my entry, it seems that people aren’t getting to end, which is a pity… I spent hours on that end cutscene!
. I should probably release an easier version.
Alright, that’s me done – hopefully see everyone at LD21.
Heroic Cat – Post Mortem
Warning: Here be SPOILERS. Don’t read if you haven’t finished it. It should take you about 10 minutes to play through if you finish each level at a decent pace.
Yes. Heroic Cat has Spoilers. Can you believe it?
This was my first Ludum Dare I’ve ever participated in, and I had no idea what to expect and how far I would get in 48 hours. I didn’t prepare that much. I had my tools (visual studio, paint.net, bfxr and audiotool), but I had no pre-existing engine code or whatever, nor did I have any external libraries, engines or frameworks (bar XNA of course) to use.
Progress
When the theme was announced at 4 AM, I immediately started working out my idea. 2D sidescrolling platformer, cat being hero, save princess, common enemies, etc. This didn’t take that long. I had a rough idea about what I wanted to do, and figured I’ll just expand on it when I get to it. I then started working on the engine. Tilebased, basic collision for that, and collision between entities. I also wanted simple AI commands put into the map itself to control the green guy. At 9 AM I had the first 2 levels, including an enemy and basic AI. The core of my engine was done! I then went to sleep.
Entry/Postmortem – Bad Hotel
Monday, May 2nd, 2011 6:07 am
[ ENTRY | PLAY THE COMPO VERSION [Web - Flash] | PLAY THE JAM VERSION | Sources]
You built a hotel in on a patch of ground that missiles like to hit. You must now attach shields to protect it. Last as long as you can manage. You have to wait for the shields to be delivered to you though.
Z – Load, then attach a shield from the left
X – Load, then attach a shield from the top
C – Load, then attach a shield from the right
There is a Jam version as well that has better music, and sound effects. It also has a global high score table, so you can get ranked. The gameplay did not change at all though.
Thanks to Bender for the post format. I hope you don’t mind me borrowing it.
Post mortem in the extended.













