Island War Day 4
Slowly, the Island War project begins to grind its wheels again. Time for a review of what’s happened so far. When I started this project, I was still intoxicated from the successful completion of my just-for-fun project “Ball Race”. I was eager to build a real, full-blown game taking no shortcuts and doing everything in the best way imaginable.
This turned out to be a real time waster and motivation sapper.
For example, when a missile is fired from one island to another in my game, I need
a method to check for height map collisions in order to notice when said missile hits
the ground. I could have quickly written something that checks once per Update() call
whether the missile’s location is above ground or below. I’ve even seen people use
BoundingBox class for this by considering each height map
square to be a box (which is certainly creative, but not breathtakingly accurate :))
Instead, I wrote the perfect ray to height map collider(tm) that would calculate the exact time and position of impact in the most efficient way possible. Even if the missile was so fast it crossed the entire length of the height map in one single step, it would tell exactly where the impact should have happened and use only three or four plane queries for that. Did I mention that it works with fully deformable terrain, too, and at no performance loss?
Same for the GUI system. I wanted a clean, elegant, powerful and efficient system that could easily be ported to other renderers (like Tao.OpenGL), be able to handle any kind of visual representation (like, instead of bitmaps, windows might consist of 3D models), separate state from display (so you could switch between bitmaps and 3D models with all your dialogs unaffected except for their look) and everything should be usable with a gamepad, too.
Perfectionism vs. Motivation
I could repeat such excerpts on and on, but I guess you get the point.
That not only got me sidetracked, it slowly sapped away at my motivation. Instead of seeing progress and being encouraged by it, my evenings consisted of shifting around classes in UML diagrams for hours, trying to find a way it can all be pieced together without making even the slightest compromises to type-safety and efficiency.
The fun part is, while it is true that I tried to do everything in perfection, I had decided for a seemingly realistic goal: just two islands you put buildings on, firing missiles at each other (don’t steal my great idea, I warn you! :D) I knew I wouldn’t be able to create the next Crysis or WoW successor. And I knew I had to create a game and not an engine. And still, the project grew over my head.
I’ll write about how I’m hoping to get back on track in the next post.
Now I don’t know how many readers my little blog has, but if you happen to be working on a game, too, what’s your take on this?