Article / 10th Dec 2006

Change & Synchronicity

I'm terrible with focusing on one project, since I'll get bored after a few weeks of one, and so I need to change. Luckily, I'm overcoming this 'probem', but in the meantime, I have a good menagerie of projects to work on. I like to keep a few around since each is really a learning experience; ByteHoard is web programming, Aevolution is singleplayer games.

So, onto the last main project to appear on the blog. Perhaps some of my readers (yes, both of you) have heard of it; although it's pretty unlikely.

QuSpace is the (rather bad) name this project has, and simly put, it's an MMO engine. It's my vain attempt at creating something more interesting and versatile than an MMORPG, something more interactive and prettier than a website, and something faster than Second Life. It's my way of learning more about multilayer game and network programming, as well as a bit of fun (creating virtual worlds is always fun; there's a reason Sim City is so popular).

It's already had one attempt at life, which failed badly thanks to it being my first ever attempt at both game and network programming. I now return to it almost a year later, feeling a little more confident.

And, thankfully, I seem to have been justified. I have the whole client/server thing working really well; streaming map data, dead reckoning, and so forth. I haven't tried anything like collision detection or physics yet, since I'd like to get the other parts (authentication, etc.) working.

I still have the wonderful synchronisation issues where, if I get two clients on different computers to connect, one lags behind the other slightly, but I'm confident I can solve this with a slightly better time synchronisation (cue reading up on NTP). However, I currently have a somewhat-decent VRML-alike, with the bonus of real time streaming, something that seems to be in vogue these days.

At least my job is made a lot eaasier thanks to both Python and Panda3D, the python-oriented 3D engine I'm using for both this and Aevolution. The entire project fits in less than 1000 lines of code at the moment, yet does all the network stuff for both ends, the rendering, and everything else. It may not be as efficient to run as C, I guess, but it's a lot more efficient to write.