Times, trials, and turbulence.
Working hard, or hardly working?
Working hard, I most readily assure you.
As I’m sure many of you whom already juggle a full-time job and a game development hobby already know: it’s tough. It’s especially tough when you write code all day at work and then come home and try and write some more. It’s even tougher when your physics code keeps on breaking on you for 3 weeks straight — but I digress. Sort of. 🙂
It’s been really rough lately, since it seems like the physics engine in Gloom keeps refusing to work how I’d like it to. I’ve already had to cut down the engine from being a fully dynamic->dynamic simulation to one that works only on dynamic->static collisions/responses, so the least it could do it behave nicely enough for me to implement it. I began Gloom about 18 days ago, and I can’t believe that just getting the physics groundwork down has taken me this long. Gah! Anyways, it’s now operational and seemingly bug-free, so I suppose that’s all I can ask for. Now that this is done, I can finally start on the Actor class, from which Humans and Bots will derive from. My aim is to have an animated player waltzing around the map (possibly kicking objects around :)) by the end of the weekend, at least.
I haven’t been all woe, however. I implemented a simple spatial partitioning system, which is a fancy term for “regular grid”, which covers the game map in arbitrarily-sized cells (I opted for 64×64). The idea is that every time an Entity moves, it calls the grid’s writeEntity() method, which accepts the Entity in question and a Rectangle representing the bounding box of the Entity in the world, which fills in all cells that the bounding box overlaps with a pointer to it. This allows the game, during the collision-detection/physics phase, to do a call to the grid’s getFromRange() method, which accepts a Rectangle and returns a vector containing all Entities that fall within that area. This, in combination with already implemented bounding box checking, prevents 99% of unneeded polygon collision tests, as well as avoiding the dreaded O(n^2) pairwise brute-force checking I was doing previously.
New Computer, and Setup Woes
I’ve upgraded to a new computer just the other day. It’s not a big jump, but I’m now running on a Pentium 4 3.0ghz processor with a juicy 2GB of RAM. A bit of a jump from my previous 512MB. I’m still in the process of getting things restored/reinstalled, but it’s been a little slow. For some reason the Platform SDK (for use with Visual C++ Express) is refusing to download properly, and my copy of Visual Studio .NET 2005 causes anything it builds to crash cryptically. I’m a little frustrated, but I can manage to develop on my laptop until things get ironed out. I’m sure a little kicking-of-the-motherboard will fix everything. 🙂
Anybody else ready to lose a heck of a lot of potential development hours to this? 😀