As this Tweet indicates, I’m currently working on creating a game. A browser-based game, that is, and a strategy game at that. (More on that below.) And by creating, I mean that I’m writing the code. Which, like all code, occasionally waxes poetic:

    G.MAPW = 1 + G.HEXA + (G.MAPSIZE * (G.HEXA + G.HEXSIDE)); // DIMENSIONS OF THE MAP ITSELF

The map itself. Probably more poetic if you’re the one writing the code, I’ll admit. Especially so if you haven’t written any code in a while and are rediscovering the man-machine integration one occasionally feels in the process. I have done a lot of things in life — freelance journalist, book author, software engineer (years ago), startup CEO, tech blogger, world traveler, international man of not much mystery — so it doesn’t feel terribly awkward to extend the dimensions of the map now to include gamemaker. In fact, given everything I’ve been up to for the last five or six years and how deeply all that has been involved in games, it doesn’t seem out of step at all.

Working the kinks out of my engineering skills is proving salutary, and I’m gladly putting in a fairly huge amount of hours (much to my wife’s chagrin). Happily, the work progresses faster than I thought it would, though it’s not without many of the same vagaries and vicissitudes of any software project:

  • I spend less time designing and planning, and more time coding, than I should
  • I spend more time than I should in reinventing wheels
  • Without a close inspection, I sometimes don’t understand why the code I’ve written works
  • I probably spend an hour refactoring for every four I spend writing new code
  • I experience a strong urge to leave a trail of technical debt in my wake (countered, fortunately, by the point immediately above)

Despite all that, I’m making rapid progress toward what will be a semi-playable prototype / early alpha version. It won’t arrive anytime in the immediate future, but it should get here well before the summer. The prospect excites. Already there are tiny little people scurrying around the map and occasionally shooting each other! If you squint, that is: what’s actually happening, though symbolically it represents what I’ve just described, is still hideously ugly at this point, heh.

The project itself is actually somewhat ambitious, and I’ll most likely seek some help with it before it’s in any kind of shape to release on the world. (The art I will probably just hire out.) The skeletion description pegs it as a real-time strategy game — with some secret Wallace sauce thrown in, of course. I’ll blog / Tweet about that later, although the sauce, and the market it’s designed to serve, are things I plan to build a company around, if all goes well.

Technology: The back end of the game I’m doing in Python/Django, and the front end in JavaScript, jQuery, and HTML5, with a MySQL database behind it all (which is fine for now). I’m not making HTML5 do anything particularly staggering at the moment, although I’m quite impressed by it, and particularly interested in pushing the cross-platform portability it brings. I’m sure the code I’m writing on the back end is not terribly Pythonic, but I think I’m bringing it more in line with each revision. (Book recommendations are welcome, by the way.) I’m also resolutely stuck on a development server; deploying Python and Django to a shared hosting service (DreamHost) has so far proved too much for my attention span, which constantly snaps back to the business logic of the game itself (much more interesting). Sometime soon.

So I have struck out on a new and highly cool path, and for some reason thought the blogosphere should know about it. Advice, brickbats, and tl;dr’s welcome in the comments.