Decommissioner Postmortem (LD25 48 Hour Compo)

Posted by (twitter: @crowbeak)
December 19th, 2012 6:52 am

This was my first ever game jam. It occurred a very short way into teaching myself to program again. My current skillset is very limited, though my conceptual understanding of programming is a bit above what I can currently do — for example, I can’t successfully program graphics, at the moment, but I have done so before and have some idea of how OpenGL, at least, works.

In spite of that, however, I figured I could get something done, and now seemed better than later. I learned a lot about Python in the process, particularly with exception handling, and in general had a blast.

Pre-Compo

Since I went into the project knowing that I was starting from such scratch as dreams are made on, I had what turned out to be realistic expectations for what I could accomplish in such a short time frame. Here’s how I envisioned my prospects going in:

  • I wasn’t worried about concept and gameplay design. I am accustomed to designing simple, focused games on short notice.
  • I knew I could come up with some kind of interactive game mechanic and program it in a decently short period of time.
  • I was not sure I could add graphics or sound, so I was prepared for the possibility of needing a text interface for the game. I therefore planned to focus on mechanics first and only add graphics/sound if I had time.

In the weeks leading up to LD25, I was busier than a starving mouse in a pantry full of food in cloth sacks. After digging my car out from under 1 meter (not a typo) of snow on the Monday beforehand, I spent three days bone-tired and recovering. I therefore had little chance to really prepare. I couldn’t get PyGame to install and barely got Pyglet installed with enough time to dink around with the tutorial stuff.

So I had absolutely no base code to start from. None.

Conceptualizing

When the theme was announced, I quickly assumed that most of the LD entries would run the gamut of stock game types with villain-themed wrappers. Although I take no issue with that, I wanted my game to be as unique as possible. Especially because of my limitations. In looking for a way to achieve uniqueness, I found inspiration in dystopian science fiction, a German board game a friend of mine told me about a while back, and some things I learned in my social psychology class in college.

I don’t really want to go into too much detail about the story here yet, since people are still playing and rating, but I will talk about the format of my game. There is more story than gameplay, but there really IS gameplay. There are segments in which you run simulations to determine the optimum configuration of robots for a work site with a farm and a factory, and which robots to discard in favor of some new robots. This ties into the story and the villainy, though the villainy isn’t apparent until the end.

Execution

Having set myself up to write a frelling simulation game with a lot of story (oh, how I facepalmed at myself), I had a feeling I wasn’t going to end up with graphics.

I focused first on working out how the simulation would work on paper and then launched straight into programming it, starting with object classes for the robots and where they were to work. I occasionally wrote functions to display the bits of the story when I needed a break from formulas and stuff, but I did the majority of the story work after the simulation was working. I wasn’t consciously thinking about having a playable prototype ASAP, but in hindsight… that’s essentially what I aimed for.

Once I had a couple of story segments and the simulation done, I considered my music and graphics prospects. I knew graphics were out. I thought there was a chance that background music was in, though, so I did some singing and then tried adding my music to the game with Pyglet. I got the music playing, but not looping; then looping, but all activity in the console stopped while it played. So I threw that out, too, and went back to working on the story and checking for bugs. (But you can hear the first BGM song I recorded here! Single take. It was to play during the normal, everyday parts of the story.)

I think the most important thing I learned from all the coding I did was how to properly handle exceptions in Python. I already knew how to make custom exceptions in Python, but I wasn’t practiced enough in their use to make good use of it. I am much better at it now! The way I handled input meant figuring it out lest the game crash.

Even so, my initial executable releases still included a bug at a critical juncture in the robot simulation because I missed exception handling at a critical juncture. I found and fixed the problem (I think) and have released updated files for everything except Windows, which I was unable to get to recompiling today due to not being anywhere near my Windows machine. I also figured out how to use Pyinstaller to compile the program into a single file for niceness.

Oh yeah, just figuring out how to compile the programs was a new experience, too. xD

Improving the Game

I definitely want to keep working on this game. There are a number of things I could do to improve the game, starting with more storyline branches and figuring out how to add sound. It would be nice to have graphics, too — basic visuals for the robot sim and maybe some visual novel style backgrounds and character graphics for the story bits. The story could be lengthened to allow for more robot simulations and better expression of the ideas in the story.

Tentative Plans for the Next LD, Based on Lessons Learned

  • I will have base code beforehand. Yes, I will. Starting well beforehand. Must learn moar!
  • Make sure I know how to incorporate at least sound, if not graphics as well. I’m not really a drawer, but by gosh I can sing, and if I am gonna keep doing things where mood is important, I want that extra mood buff.
  • Cook good food beforehand instead of expecting myself to want to do it during breaks. When I take breaks, I end up playing games or otherwise goofing off.
  • Spend more time in the IRC channel because the community rocks.

Overall

I’m very satisfied with how it went.

Wanna check it out? 😀

Tags: , ,


Leave a Reply

You must be logged in to post a comment.

[cache: storing page]