Going retro with sprite-based first person


I've been scouring my brain for a game I actually want to make, and since I've been writing about pseudo-3D a lot as of late I figured, why not put my money where my mouth is? The question, as always, is what exactly to do, and there just happens to be an old favorite of mine that, to my knowledge, nobody has tried remaking in a modern form. So I set to work, and four days later ended up with this:

(play the demo)

Older gamers may be reminded of the ZX Spectrum classic Lords of Midnight. Nothing similar has been made since, but imagine something that goes beyond the dusty Dungeon Master / Eye of the Beholder technology without quite reaching Might and Magic VI levels. But what does that mean, and why is it important?

As you can see in the demo, the turn-based gameplay involves traveling across a rectangular grid in any of eight compass directions. These may seem like pointless limitations since I can compute everything on the fly, unlike the original game. But allowing for arbitrary rotation would also require me to render in real time, and scaling large sprites still takes a surprising amount of computing power. Published in 1998, the aforementioned M&M6 already required hardware acceleration, and even though a modern PC is seven times faster (going by Moore's Law and CPU frequencies), a mobile device is not. Worse, web browsers introduce their own overhead; they're simply not optimized for fast graphical operations.

Ultimately, though, the design was shaped by my desire to emulate what was originally a strategy game. Except I didn't want to make a simple clone; and in departing from the formula, I already ran into a number of tough questions.

For example, what would be a good maximum viewing distance? In Lords of Midnight one could see up to five grid units away, but that meant twenty kilometers. In order to justify similar visibility with three meter granularity, the action would have to be set underground, by torchlight. Not a bad idea, actually. It would make reaching the edge of the playable map less jarring, too. It would also justify the fact that shadows are running away from the player, which is noticeable right now; but is it also worth fixing? Using eight sprites per object, depending on viewing angle, straddles rather close to true 3D. (NPCs are another story.)

Either way, my engine is more flexible than it appears; you can hang objects in the air, fake looking up/down, climb on a pedestal to see farther, you name it; and even though it is nominally an outdoors engine, by limiting the viewing radius and using clever graphics (such as octagonal wall segments) it should be no problem to represent enclosed spaces if the need arises.

What it doesn't have yet is a name -- the one I had chosen initially turns out to be associated with a scam -- and a specific game design to direct its development. But those are hardly obstacles when you're having fun.