Jan 8, 2012

Byte Wrangler is 1 year old!

I started this programming blog a year ago and its time to look back at what I've accomplished over the last year, and see if I'm on track.

The first thing to note is that there isn't anything available for download. In my second post on this blog I suggested I wanted to have something available for download at the end of 2011. That was my plan throughout the year and it seemed achievable until about August when I re-assessed where I was up to and realised I was well short of where I needed to be.  Rather than lament the slippage of the deadline it's worthwhile looking at what went wrong and learning from the experience.

As far as I can tell I made 3 main mistakes, which I'll discuss in more detail below:

Mistake 1: Underestimating how long it would take to get certain parts of the system working.

This is the big one, and probably caused nearly 6 months of slippage.  Since I decided I would use SlimDX and develop everything from scratch and not use an existing games engine, I started with nothing. I accepted this, but overlooked the fact that meant I had no user interface system to work with at all. That means no buttons, no textboxes, no labels, no scrollbars etc. Even designing a simple settings screen requires many different interface controls, and if you want to implement something more complex like an inventory screen with drag and drop etc, you're talking quite a bit of coding to develop the whole lot.

And just when I thought I'd implemented every control I'd need, I would think of another major one I'd forgotten. As if developing the user input side wassn't enough, I also needed a skinning/texturing system that allowed the controls to size dynamically as required and not have visual artifacts or ugly stretching when resizing.

On the plus side, over the past year I've implemented a windowing system and the following interface controls:

  • Window
  • Button
  • Checkbox
  • Context Menu 
  • Label
  • Image
  • Message Box
  • Progress Bar
  • Scroll Bar
  • Text Box
  • Tool Tip

There are a few additional controls on the wishlist, but they won't be needed until later and shouldn't take as long as getting this framework up and running.

Mistake 2: Overestimating how much free time I had over the entire year.

This one is hard to judge, as 2011 turned out to be fairly tumultous from a family standpoint, and since I'm developing this game in my spare time, work, family and sleep pretty much come first, and Bulldog lost out more times than I would have liked. Not much can be done about this moving forward as life is unpredictable, but I should adjust my estimates in the future to assume I have less free time.

Mistake 3: Spending too much time researching and developing unnecessary features.

This one was avoidable, and was caused by becoming sick of coding "boring" features and wanting to implement some cool stuff. Like for example, I spent a good 6 weeks developing the signed distance field font system, when I had an ok (albeit ugly) font system already in place. The end result is about 10x better in terms of flexibility and visual look, but that time might have been better spent working on essential features. At the same time though, the distance field stuff was a lot of fun to work on, and was very rewarding at the end of the day.

It's hard to stay focussed on the boring stuff, when there's so much unnecessary fun stuff. But since the fun stuff keeps you motivated, you have to deviate from the schedule sometimes.

Where to from here?

So I guess the question is, how much has actually been done, and what's the current plan / deadline? Since that will be a reasonably large post in itself, I'll leave that to my next post. Stay tuned.

No comments:

Post a Comment