If you’ve been following my game development activities for any length of time, you’ll probably have seen me attempt to create a level building workflow about… four times. I started with heightmaps and static meshes, but bare meshes aren’t particularly comfortable to work with and Unity’s heightmap is, err, too high-poly. I tried to roll my own voxel terrain editor, but that was too complex and janky and didn’t really tick my boxes after all.
I had a stab at procedural generation quite a long time ago now, which created levels based on a 2D grid of tiles. I ported all that to Unity more recently, and it broadly worked but I ran into some snags, so I gave up on it. But, even more recently, I finally came up with an answer to those snags. This time — this time at last — I reckon I’ve got a sustainable answer.
When it comes to modding, I have to admit to a masochistic streak. I could use the 3rd party pre-processor to get structs and pseudo-object-orientated syntax that would make this a whole heap easier, but no, I’ve got to use the bare metal to feel alive.
So, that procedurally generated Warcraft III side project I’ve been fiddling with during lunch hour is a whole barrel of laughs. This episode’s consternation surrounds creature spawning.
We all know that I’ve never been any good at making textures. (Maybe I’ve never been any good at modelling and animation either, but let’s not get into that right now.) Making a game, however, requires lots of textures.
I’ve been surfing on two aging atlas textures for years, generic layouts I have ceaselessly wrapped around almost every single piece of geometry. While this approach makes it very easy to swap out varied colour schemes, I didn’t do that very much in Project Y4 and it turned out a bit monotonous in the end.
No, I need a new solution. One that will provide an endless variety of textures… without the need for any painting skill.
We’ve been through the cellular automata algorithm before. I said some things back then that were mostly theory — things I’ve now been able to test in the wild.
So how does one take a grid of noise and turn it into a functional RPG? Well, lucky for you, I’m getting close…
I recently did something called a Lightning Talk to my work colleagues about the ultimate basics of procedural level generation. I’m scared of, and terrible at, doing presentations, so I volunteered because I need to learn to face my fears. (Be bold, etc.)
A Lightning Talk is when three or four people do very short, five-minute presentations about Something Cool — so I figured that, since I kind of care about this stuff, at least my enthusiasm would shine through if my tongue refused to cooperate (it did).
This was written as an introduction for absolute beginners, because nobody at work gives two figs about game technology (except me), so it should be interesting enough for mildly technical people with a passing interest in the area.
I’ve done a reasonable bit of work with procedural terrain generation of two different kinds recently (well, when I say “recently”…) for Project Y4, hopefully into techniques that can be re-applied in the future to different projects. But while lusting after the most hilarious procedural generation technique of them all for a long time, it’s only been in the last couple of weeks that I’ve delved into the wonderful world of Markov chains…