Blog 417: Procedural Generation Y4

I’ve always wanted to get into procedural content generation. So I’ve decided to attempt to implement it in Project Y4: the node-hacking minigame will require you to navigate a generated maze, possibly dealing with obstacles or gathering items…

Glowing Lines

Pretty much the driving force behind this decision is to get something of the cyberspace glowing lines aesthetic into Warcraft; this is, like RDZ Industries, something I’ve tried to do before. Besides, I’m already half-way there with the interface and the whole holographic gyroscope thing, so as long as I keep the lines glowing orange and yellow everything will be quite sumptuous.

Do you remember a game called Assault Rigs? I only ever played it at a friend’s house (this was before we had a PC), but it had a strangely profound impact on me. Basically, it’s a tank shooter in blocky 3D levels where you shoot bad guys and collect gems to win. If you ever see it on GoG or some equivalent, let me know…

It turns out that, from what 320×240 or less screenshots I managed to trawl from the tubes, this tank looks nothing at all like the red one from the first zone of Assault Rigs. This is a common theme among things I make influenced on ancient, dimly-remembered stuff, but it should at least avoid copyright infringement.

 

Yes, yes, I know WC3 doesn't have specularity. Bitch.

 

Blockade Run

The principle behind the terrain is simple: take an unpathable plap and drop walkable bridge tiles on it according to the generated maze. Shazam.

Maybe I can also take specific arrangements of tiles (such as a 3×3 crossroad or a 2×2 right corner) and drop different decorations down. We’ll see.

 

Except it won't look like this, because there will be a further eye-wrenching skybox and no 16x16 platforms.

 

Growing Tree Algorithm

The hard part is, of course, generating the actual maze. And even more than that, doing it in vanilla WE — that means no data structures like lists or stacks that a lot of maze generation algorithms seem to depend upon (though we do have hash tables these days). I will no doubt have to make static array-based implementations, but that is oh so tiresome when all I really want to do is to rub salt into your eyes with insane visuals.

The growing tree algorithm is helpful because it functions on tiles rather than cells and walls. Though I could work with walls in WC3, it would make the actual laying down of the terrain somewhat more difficult. The other advantage of this algorithm is that I actually have a hope in hell of understanding how it works. And this handy example.

And if it all fails really badly, blu_da_noob made and released a wall-based maze system already. So if I cop out of building it for myself, the feature itself won’t be dropped. Your eye-wrenching cyberspace visuals are here to stay, bro.

Another option is to run somebody else’s maze generator and just make each hacking challenge pre-programmed, but that’s not very space efficient on a map that’s already straining at its 256×256 britches. And if I create and destroy each pre-programmed maze on demand, it’s more fun if they’re different each time!

And I’m all about fun.

Snooze You Lose

The primary limit on this hacking is going to be time; harder nodes will have more stringent time limits and/or obstacles that kill you. The basic justification for this is that if you take too long, you are interrupted in the real world (er… in the game… real world…) and have to defend yourself from a number of enemies. Something that’ll keep you on your toes, if not necessarily kill you outright (but that would be what you get for giving all your attention to the computer when you have low hit points).

Maybe the computer could also do a Deus Ex and drain all your bio-etheric energy. And set off alarms so all drones in the entire map come to you. Mmmm.

And some other miscellaneous technical updates you’re not interested in, including completely scratching the drone respawn and pathing systems and starting again. Maybe I can avoid a total clusterfuck this time.

Advertisements

And you tell me...

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s