Tuesday, March 1, 2011

Game Engine Design - A Free-For-All

If you Google "game engine design best practices" or "game engine design techniques," you get a real melange of results, few of which provide much immediate value outside the satisfaction of personal curiosity, on the off chance that you are curious about the design of a particular game engine.  Since the engine I'm building / have built is my first one (well, probably third or fourth, but first to progress to the point of actually being able to run a game) I'm no expert on the subject, but I've learned enough to find that a game engine is a very single purpose beast.

This singularity of purpose leads to the lack of "best practice" in the domain.  While I'm sure if I took a series of classes on game design and game engine design I would be fed some "best practices," or at least, design patterns, the creation of a cookie cutter game engine, while theoretically possible, would be such a boondoggle it would rival if not trump the practice of low-level-design in traditional software programming.

Simply put, what works for Final Fantasy is not going to work for Angry Birds, and the effort of trying to make a one size fits all game engine, and coding to the engine, would be considerably greater than coding two game engines. Since I write all this as a personal opinion from the perspective of someone who has minimal experience in the field of game development,  I will be providing no hard evidence to support my rambling, so take my statements for what you will, however the direct correlation between the complexity of usage of a framework / engine and the level of flexibility afforded by said framework / engine has been demonstrated time and again (and I'm sure if you enter a magic series of keywords into Google you'll find some evidence to that effect).

And now for something actually interesting, another demo sprite.  Enjoy

a Panda, standing, in a v-neck

Saturday, February 26, 2011

Panda Town Sprite Development

Since this is my first official post about the Panda Town project, for those not yet familiar with the project, it's probably also the first you're hearing about it.  To give you the brief intro, Panda Town is a game I'm working on, the engine of which is entirely Javascript (though the game definition is housed in a tripple-store and delivered asynchronously to the game engine upon request).  Graphics are courtesy of HTML5's canvas element (which is an element with a LOT of potential for those of you who haven't played with it yet).  I'll post more about the engine itself in the future but right now we're talkin' graphics.

Being my first venture into Sprite Graphics (I don't know why I capitalized those words), I'm having to draw and re-draw a lot of the work, but some of the elements are starting to coming together.  I want a bit of a retro feel to my work, something maybe reminiscent of Zak McKracken or Monkey Island (the early Monkey Island, not the newer stuff (which is also solid work) ).  My primary tool thus far has been Photoshop and my best friend in Photoshop has been the 1px pencil tool which gives the image the blocky feel that I'm looking for.

A Panda and his coffee

Working with the constraints of individual pixels and the constraints of a particular feel has been a great exercise thus far.  The medium, while challenging, is also somewhat rewarding, especially for someone who still loves the classic feel of Maniac Mansion or Lolo. Just changing a couple pixels can have a huge effect on the way the image is perceived since you're dealing outside of realism and have to trick the eye into seeing some degree of continuity.  

As I get further into the drawing I'll probably post some more teasers.  At the moment I'm waiting until I figure out what I want the floors and walls to look like (and by that I mean waiting until I have the patience to draw the floors and walls) to post any full rooms.  I also hope to talk a little more about the engine soon since it's close to being done.