4/20/08

Touring

Someone asked the creator's club a question about writing a Mille Bornes game. I remember liking that game as a kid, but the first version of it I played was the older more simplistic game of Touring.

I've been thinking of putting together a simple game to test the XNAMachine engine with, something a little more simple than Star Maze just to see what it's like to build something with it, and this seemed like the perfect thing. So rather than completely rip off that guy's idea of making Mille Bornes, I've been putting together a Touring card game (ok, so I'm mostly ripping off his idea...)

Making a 1-player Touring game would be a little "too easy" I think, so I'm building both server & client programs to allow for multi-player sessions of Touring to be started by whomever wants to play. If the engine proves to be a decent performer for this application I'll begin the process of "porting" what's completed of my Star Maze project over to the XNAMachine engine.

At this point I've got most of the object structure done for Touring, the game logic is easy, and so now I'm writing the network code for the server. There are no movement predictions or tight synchronizations to worry about here, the server & client really just need to relay simple commands & acknowledgments back & forth so it's a really good starting place for network code I think.

At the risk of enduring a copyright violation lecture I've obtained some rather pristine editions of old Touring games from eBay as texture sources, and I've been browsing around a neat little website called soundsnap, which has a lot of nice free sounds & music loops.

This is something of an unexpected diversion but I guess that's typical; the hardest part about programming is finishing something, right? No worries...

4/8/08

Vacation 2

I'm in Japan this week. I don't speak or read Japanese so sometimes it feels a little crazy, but at least we haven't gotten lost yet. The train system here was a challenge at first (especially to a foreigner from a small US town without any serious public transport in the first place). But a lot of things are in English of course so it's not so bad. Today we're in Kawaguchi which is a small country town just north of Mt. Fuji. Just hanging out here, it's like a mountain resort type of place.

I wanted to get some good work done on the XNAMachine engine on the 11 hour flight, but after a couple hours I realized I didn't have the right power adapter for the plane's weird DC plug.

4/3/08

The XNAMachine

I'm continuing to plug away at my new engine here and there, mainly by jotting ideas down into classes & interfaces, and then shaping them into workable objects. It's kind of like throwing lumps of clay down into the IDE & then shaping them into recognizable things. It's probably the world's most inefficient way to design something but I'm having fun with it.

The XNAMachine (my obvious name for this new engine) has grown into 5 primary categories which I've split into as many Namespaces within the project. The primary namespaces are, in no particular order

  • Core - this contains classes such as the base Game class, the VBContentManager, a static math helper class, all the primary singleton stuff

  • Objects - the base game object is defined in here along with a base game component for including objects in the XNA Game's components collection. Future items in here will be other common bases; screen, camera, and some sort of base spacial partitioning class either a grid or a quadtree or both

  • Augments - a base class + various primitive implementations of game object expansion pieces

  • Automations - this is the bit I've been working on the past couple of days, it's a system of rudimentary classes that primarily hold information which can be used to modify various properties of augments. Automations are intended to be Augments, but it's such a big category of "stuff" that it got it's own namespace. An example of an Automation Augment would be, for example, if you have a Transformation augment attached to a game object, the game object gains the ability to be transformed by a matrix. You can then attach an automation augment to that game object, specify which element of the transformation object you want the automate, and this will allow for "scripting" various activities over pre-defined times & destinations. I have a system like this now, it's just not nearly half as elegant as this revision will hopefully be

  • Augment Update Services - the way I'm experimenting/planning to update augments is to create a collection of service implementations that perform various tasks, each built to accept a single augment at a time. Every single augment will have a reference to the service it uses to update itself, so when an augment wants to update, it simply passes itself in to it's service reference.
So that's kind of the gist of it so far, and I'm getting reasonably close to finishing up the classes in the Automation Namespace, but my wife is hardcore giving me the stink-eye so I better turn my laptop off before I get busted.