“I can give up any time I want, bartender.
“Just lemme make one more Warcraft map…!”
Falling Off the Wagon
As with all such things, it’s the seductive idea that something will be easy to do. “I’ve already done the hard work,” I told myself. “It’s just a bit of recycling.” As I said the other day, I’m beginning to realise that I’m not clever enough for real game development — but WC3 mapping? I can do that. (Indeed, I have recovered my working knowledge of mapping with disturbing ease.)
I might have left the mapping scene, but I still keep an eye out for singleplayer RPG projects. I might have stopped making my own, but I continue to enjoy them and so actively search for anything of interest.
Suffice to say, I played one and it sucked. Then I thought to myself… “I can do this better.”
Experiments in Procedural Generation
I’ve always been fascinated with the idea of a “skirmish” mode for an RPG. The same way you can roll up a fresh Age of Empires II skirmish map for a more constrained play time than going through a whole campaign, I’d like to see something similar for an RPG — a smaller generated world with generated quests and a generated villain to ultimately defeat.
(The flip-side would be doing an entire RTS campaign on one monstrous map — not Supreme Commander‘s faked scale, but Age of Empires II played across a seamless 1:1 set of countries Daggerfall-style, with completely persistent bases and an even more sprawling tech tree to keep you going all the way.)
Project Y4 might have been an unmitigated failure but the programming underneath a lot of it is brilliant, in its own bastard Jass/GUI hybrid kind of a way. I spent many long and hard days building two kinds of procedural content generation into it — one of which had to get canned for the fact it corrupted saved games. Oh well?
On the other hand… There’s a certain game mechanic that’s quite fashionable right now. They call it “permadeath”.
It seems obvious now, but permadeath and procedural generation are fashionable because they’re easy answers to hard problems. You don’t need to make a level state saving system if the level disappears when you leave, and you don’t need to worry about boredom setting in when replaying the same level again and again because it’s not actually the same level.
(Procedural generation isn’t actually that complex — most of the work has already been done for you, it’s just a matter of nabbing a library and/or transcribing an algorithm into your language of choice. If I can do it, anyone can!)
So I had already implemented the cellular automata algorithm in WC3; within an hour I’d ported it to the ashes of This Wreckage and rigged up some more parameters (past RDZ was very naughty with his hard-coded constants). Bish bash bosh — natural jungle area of mixed trees, rocks and even terrain tiles.
It’s not a complete waste of time, though. I fully expect to be building some kind of procedural level generator into No Excuses to exercise the engine during its formative days before we dive headlong into the fully hand-crafted narrative-driven scenarios. Yes, the implementation details are fairly tied to WC3, but the high-level algorithmic tweaks and conditionals that turn a generated terrain into a game level are eminently transferrable. Spawning enemies, clearing quest locations and joining them together… all of these things will be relevant.
(They’ll also be a lot easier in C#, because my procedural implementations are very object-orientated — so it’s trivial to deal with the different shapes that make up a terrain, rather than having to juggle integer tile states in a 2D array in a 1D array as I have to do in Jass.)
Whats In a Game?
The primary advantage to building on This Wreckage is that the details of the actual game are already done. Clean action-RPG mechanics with ability selection will dribble on top of a large roster of identical footmanimation Henrik clones made up of all the character models in the game and plenty I never got around to using. A huge suite of equipment items is already in play, too, so all I need to do is rebalance the sword and shield strengths so they make actual sense this time around.
There will be no narrative to the map; rather, it is to be a never-ending sequence of episodes. Each episode is a piece of generated terrain with one quest, villains, wild animals, shops and other points of interest to occupy you as you chew through the universe.
Each of those quests will have a self-contained narrative, though — you’ll not be told to Kill All the Enemies, you’ll be asked to retrieve the merchant’s supply crates from vicious mur’gul thieves, or avenge the murder of a poor traveller. Assuming I can deploy such quest templates easily, and even parameterise the quest giver, opening dialogue, enemy types and items for each, it should be trivial to make a large variety of quests. RPG, AoS, defence…
Top it all off with a scoreboard that appears on your hero’s demise, and we should have ourselves a convenient “skirmish” mode for This Wreckage.
Think it’ll work? Only one way to find out…