Delays and Procrastination

This project is really honestly the one I want to finish.  Well, perhaps not “finish” exactly as much as simply “release to the public.”  The problem is that I’m feeling a bit overwhelmed and underawesome.

I’ve chosen, for better or worse, to build my own game engine for this game.  This has several interesting side effects.  First and foremost it means I have a metric crapload of code to write and things to learn before I ever manage to get any game on the screen.  Second, I have to build every possible subsystem required to make a concept into a game.  Third, I have about 17 simultaneous learning curves to try to tackle to make it all happen.

This post is not intended as pure complaining, but I’d be lying if I claimed I’m not complaining at least a little bit.  This is hard.  Really really hard.  It’s a little bit scary, and a lot bit interesting, and as previously mentioned a whole pile of overwhelming.

After wrapping up the code for my math library and the subsequent code to test the heck out of it, I’ve made very little progress.  A little bit of messing with how I represent 3D models and some confusion about how I should be representing them.  I’ve opened my programming tools a couple times with the intention of coding only to find myself not even sure where to start.  The next logical step for someone that doesn’t know where to start is sadly to simply not start.  The step after that is to play a bunch of Minecraft with the intention of observing how different things work.  Yes, that really is how the last month has gone.

On the bright side I’ve put in a lot of hours studying how liquids work in Minecraft and some of the sassier details about redstone.  I do not have any solid ideas about how to code either one if I ever manage to get enough of a game engine together to bother, but at least I’ve learned a little more about how they work.  Also, where Minecraft uses redstone as a form of electricity, I plan to make QubeKwest have good old fashioned electricity with wires and devices and logic circuits.  Someday.

Here is a list of the things I’ve been working on without successfully finishing much.

  • I started an asynchronous network client and server.  Neither is done or functional, and in fact, they no longer even compile.  My synchronous version grew up to be an extremely simple version of a chat program, but was dropped from the project as too limited.
  • I started making a lot of the data structures that the game will need to represent all sorts of things.  Everything from blocks to the chunks they live in to the idea of a world coordinate.  Some of these even have tests written for them.  Others are properly serializable.  None are “final.”
  • I wrote code that can load shaders from the disk into the video card.  I wrote code that can put geometry into the card as well.  Neither is especially flexible or in any way ready to be used for actual rendering of pretty things.
  • I’ve created tons of Java packages.  Some are empty and others are probably unnecessary.  It’s occurred to me that I may be breaking down the project a little too far, and that’s helping to confuse me instead of, well, helping me.
  • I wrote some random functions.  By this I mean functions that produce random numbers in various interesting ways.  They sort of work, but are also somewhat limited.  I guess I’m entitled to sort of finish something from time to time.
  • I have vast amounts of code devoted to doing complicated math and even more code devoted to making sure that code actually works correctly.  While that’s cool and everything, it’s also utterly unused so far.

Well, I think you get the idea.  I’ve stalled on the project for now because I get home from work and can’t find the motivation to work on it and because it’s hard and confusing.  I’ll build up a head of steam created by frustration with myself and I’ll start working on it eventually.  I hope.