Knighthood – 2012 7DRLC [Failed]

Well, I’m calling it. I cannot call half a finished product a success, and that’s part of the challenge to this event.

Unfortunately it seems like I made some very fatal errors during this event, and I would like to just take a few minutes and talk about them. I am seeing some beautiful roguelikes popping up this year, and I am proud to say I have already tried some of them!

Meanwhile, my project.

Let’s start from Day 1. I chose Python with Pygame. I rejected libtcod and decided I would build a graphical engine from scratch. Mistake 1. 900 lines later, at the end of day 1, I was stuck in one source file. Wouldn’t make the switch to consolidate functions. Mistake 2.

The effect of both of these mistakes soon took a toll on me as Day 2 started coming along. I started creating more classes, variables, functions. I decided taking advantage of Python’s objects and classes would be too much to figure out. Mistake 3. I simply used classes as a way to store array containers and name them. I soon had 5 different identifier object arrays. This…Was madness. Mistake 4. Imagine having the IDs of objects in one array, the positional IDs of these objects for another array stored in an array, and then the ID of the locations of these objects (for dynamic loading purposes) in yet another array, requiring searching for object IDs, which were retrieved from another ID. Sound like a headache? It was a nightmare. And this was only Day 2.

Day 3 and 4. About 10 lines worth of progress. All those arrays I was talking about? They were all jumbled up. I took a break and implemented line of sight with my buggy graphical engine. At least I got something done.

Mistake 5. On Day 5, I was extremely frustrated with my array setup. I decided to restart my python file. What did I get out of it? About half of the engine I had previously. That was Day 5, a waste of time trying to improve the engine.

Mistake 6. Day 6…So instead of going back to my content-developed engine (It had a pretty good amount of content by now, since I ignored the graphical glitches for awhile), I decided to instead start a Game Maker version of it instead. I thought to myself, “Well, I know I can get the graphical stuff out of the way with this program and get right into the engines in a matter of hours”. So I hacked through it only to find that Day 7, the last day to work on this was right around the corner.

And things hit me pretty bad today. Mistake 7. Rushing a program is probably the worst thing you can do. All the engines were done. Maybe 2 of them were working. The first half of today required debugging and fixing things. Still have to implement skills, abilities, and not to mention all of the content, which this newer engine had none at the moment.

I caved. I knew if I wanted to develop something in 7 days I had to start correct right from the get-go. Restarting two times is not an option for this kind of challenge, unless you want to really stress yourself out and push yourself to the limits with time.

My 7DRLC 3-parter time was broken down into this:
87 hours – Python Original Engine
13 hours – Python Bug-Fix Attempt Engine
14 hours – Game Maker Engine (No content)
114 hours…I don’t feel like I did 114 hours worth of work.

I understand failure is unavoidable sometimes, and considering this is only my second year in the challenge, attempts at bigger goals lead to bigger challenges. I was not prepared for them.

But the most important thing I got out of this, was that I now know what I have to work on. What I have to learn, things I have to spend time experimenting on, and coming up with a game plan. My final mistake, Mistake 8: Have your ideas layed out. Ask yourself, “How will I implement this one? If it currently seems impossible, can I find some resource to help me with that? Should I consider another language, external resources?”

Truthfully, I am glad that I experienced this failure, it is part of the learning process and part of what makes this challenge fun. Next year, 2013…I’ll be ready for you.

As for everyone else who has already finished, congratulations, I salute you all for releasing a finished product! We all put a lot of time and effort into these and the results are just splendid. As for others still working out the last few bits to their game, good luck and hope to see you all next year.

This was a very good learning experience, and I got a lot more out of it than my successful little (Read, VERY little) successful entry from last year.

Author: Joshua Sigona

Me in a nutshell? Computers, Programming, Electronics, Soccer, Golf, Puzzles, Anime, what else? Well, I'll leave that for you to figure out. Oh, can't forget DDR!!!

4 thoughts on “Knighthood – 2012 7DRLC [Failed]”

  1. This is a great read, thanks for outlining it. You must be exhausted. I liked the screenshot with the red square from during the week. Your game from last year was less trivial than you make it out to be.

    > I simply used classes as a way to store array
    > containers and name them.

    Wow! I hadn’t even considered you could do that. That’s a proper old-school C struct. I’ll totally use this in the future.

    > Imagine having the IDs .. It was a nightmare.

    You could probably do something neat with list comprehension to make that work.

    [array_a[idx] for idx in range(len(array_a)) if array_b[idx] == 5]

  2. Your humility and your analysis of your mistakes written in such a nice way have added something valuable to the treasure store of the 2012 7drl.

    As someone who didn’t enter this year because I felt I wasn’t ready I can say I learned a lot from your report.

    I will spend all year dedicated to roguelikes and honing my development skills and knowledge of languages and libraries and next year…. Next year we will both do well!

Leave a Reply