tunginobi.uplink();

After Dark

About

Jack awakens. The streets around him are in ruins. The sky is dark. And the dead are hunting him.

After Dark is a modern-day tale of the struggle of survivors against the undead in Grim City: a fortress that seals their escape, and possibly their tombs. Jack, having no recollection of how he came to be in such a place, becomes the catalyst to a desperate plan. One that will unseal the city gates and offer the survivors one last opportunity to escape.

How will the gates be unlocked? Why were they locked? Why do the dead walk? And which survivors are working against Jack?

After Dark is a FreeBASIC RPG at its core. A number of years have past since I last used its predecessor, QuickBASIC, but it has been only days since I last enjoyed a game written in the language. In the years that have past, I've picked up many programming techniques: object oriented programming principles, localisation of variables, usage of structures and generic algorithm design, amongst others.

This was the wrong approach.

All such techniques, though good, stand in the way of one thing: completion of projects. By consuming my time, those techniques effectively eliminated themselves.

Less than a week ago, I fell upon an old QuickBASIC RPG made by the former king of QB RPGs: DarkDread (there's no new king; he just left). The Secret of Cooey was his own first officially released RPG, a fact I found out at his website (sorry, I haven't a link). I started looking through the source of his game, and realised just how simple it is. Some code structures were nightmarishly long, and global variables were rife, but it was just so simple! Checking to talk to NPCs was nothing more than a inkey$ and position check. Saving and loading were little more than 10 lines a pop! And yet it was a game I found good enough to play for considerable lengths of time.

The unlocked functionality of procedural BASIC that FreeBASIC provided, such as vsyncing, page flipping, loading of conventional bitmaps, graphical transparency, high- and full-colour screen modes, pointers, preprocessing and many other convenient features brought about a burst of creativity. A language that was so simple to use, and yet brought so much power to my fingertips.

FreeBASIC code is also cross-platform compatible with Windows, DOS and Linux. It's community developed, and it directly addresses the needs of the development community. Though the current version number, 0.15 beta, says otherwise, I've found it to be a feature-packed and completely operable procedural programming language.

Combining the procedural simplicity of FreeBASIC, and the simple perspective offered by Secret of Cooey, and I just had to make an RPG. That QuickBASIC RPG I always dreamed of making.

It was originally going to be a case of "Find the four keys, fight the end boss, win the game" deal. Now it's grown to encompass a sizable plot and some unique gameplay elements, as well as that stuff.

You have hit points and skill points. You need skill points to do things. You need hit points to live. Recover them with any of the five types of items, which only heal these stats.

You also have a gun. You need ammunition to fire it. Damage is based on your accuracy, not strength. You can fire multiple rounds in a single attack, thereby strengthening your assault. If it runs out of ammo, you reload it, or strike the enemy directly. If your weapon jams, you need to unjam it.

You also have armour. All it does is protect you by boosting your defense. Weapon and armour, those are your only equipped items. Simple.

There's more to equipment. If the combined weight of your eqiupment exceeds your level, you receive stat penalties, thereby reducing your combat ability. And the tech level of your equipment will reduce the amount of received experience from defeating enemies.

Battles are one on one. This keeps things simple for me.

This simplicity is paramount to the completion of this experimental RPG. It's already produced interesting results and frighteningly fast progress. All the more reason to devote my efforts towards completing it.