The Game Development Blues

I always had the subconscious desire to - one day - write a game that would rank up with my once-favorite, now-retro console games that I grew up with. You know, those who did a huge part in fueling my interest in the most diverse fields of everything around da comput0r, but still kept me in touch with my fable for audiovisual art. These games showed me that there's much more than old paintings to art, and that layering style, composition, aimless creativity, and rigid story into consumable chunks named cartridges, diskettes, CDs, or downloads, can produce a lasting experience and create a whole bunch of good memories.

The only problem is getting there. I mean, I've tried it a couple times in the past, and I haven't given up yet either (that's why I'm writing this) but every time I try to realize this dream, I routinely stumble over the complexity of my goal. I mean, sure, I approach this with a step-by-step method wherever possible, but even if it's a simple point-and-click adventure, I fail to see how much art (graphics-wise) I would need to create to even start approaching old Steve's disk-swapping adventures.

So, now, I tackled Jump'n'Runs. But you wouldn't believe how many headaches a simple collision-detection could give you. And I'm not talking get-hit-by-a-projectile collisions but keep-me-from-falling-through-the-platform collisions. Even if it's a simple block-based engine like Mario, you need to make sure that the character isn't moving fast enough to skip blocks, or approach this from a totally different viewpoint if you feel you need that speed. And I am aiming for something more speedy, more Sonic-like. With smooth slopes, ramps, loopings, and ceilings to run on, and all that. Plus, I wanted to add a hint of Game Gear Shinobi 2, so you can explore special places only when you've found the right character, with the right abilities (e.g. the one that walks on water). Either that, or you'd have to perform break-neck stunts.

I'd happily read into a detailed dissection of the 16-Bit Sonic engine, but I couldn't find one yet, and with the info that I have found already (per-pixel slope maps, multiple collision layers), I'm thinking that an altogether different technique (vector masks, maybe splines) would be more of what I'm after. So, as a personal reminder, and for documentation purposes, I'm posting my progress on another dying project of mine: Phlatform.

Phlatform Screenshot

Features:

  • Levels consist of blocks (i.e. those Gray Boxes) that can be positioned with pixel precision
  • That orange marble is a placeholder for the player sprite. You can move it around and make it jump.
  • You can jump any time, any height, even if you've just taken off. (That's a bug, actually)
  • Jumping up and hitting a block's edge on the way will place you directly on the block. (That's a bug, too)
  • You can place new blocks using the mouse. New blocks will be placed under existing ones. (Which is a design decision)
  • You can run over small gaps. (That's an intended feature)
  • Running into a wall of overlapping blocks will most likely warp you to the lowest block in the group. (That's a bug, again)
  • Jump height is dependent on the time you hold the "up" key (And on a random bug that makes you jump double the height)
  • You could sink through a block if you managed to hit the pixel column in the exact middle (I fixed that, tho)
  • However, you can still pass through a block if you move fast enough (A bug that I might fix one day)
  • There's only a black background (colored ones were are on my todo list)
  • There's no scrolling yet (also todo, you could resize the window though, for what it's worth)

So, all-in-all it's a pretty hacked-together coding experiment. But I don't know whether this will be going anywhere from here, or if I just start over from scratch, or salvage parts of it for other projects. Like I did a couple of times already... :]