After the previous month’s physics hell, July’s task was pretty much a holiday. A scenic journey with a dead Spanish surrealist artist doing the navigating.
For years and years now, long before I even started work on this engine, I’ve been fascinated by the idea of procedural terrain. Landscapes that just go on forever, without ever repeating. A whole, world-sized world inside your PC, that you could in theory spend the rest of your life wandering around, like some ice-bearded Edwardian explorer pointlessly mapping the endless wastes of the polar ice shelf. And all of it spun out of a small algorithm and a handful of numbers. “Wouldn’t it be great to make something like that myself one day,” I used to think.
This was the month I finally got a taste of that. My scheduled task: “make playable terrain” – a vague goal for a vague concept, but I had some ideas.
One problem with procedural terrain is that it is naturally homogeneous: it may not repeat the same exact feature, but it will keep showing you the same kind of terrain, on and on. So once you’ve seen one area created by a particular algorithm, you’ve seen everything that algorithm has to offer. Exploring further becomes unrewarding, because everywhere looks like everywhere else. This was very much the problem with No Man’s Sky’s infinite worlds. In theory you had the dizzying prospect of a whole planet to explore; in reality, once you’d walked around the place for two minutes you’d seen everything you were ever going to see.
Another, subtler issue is that procedural terrain lacks drama. Good game terrain is normally handcrafted by a designer: you follow a preplanned route, the scenery changes to keep you engaged and to provoke particular moods. Epic vistas open up before you at the point when the designer wants you to feel epic. Procedural terrain, in comparison, can feel bland and meaningless.
Battling those twin challenges is going to be an ongoing project. This month’s task was all about finding and coding a small arsenal of techniques to bring to the fight: ways of making random landscapes interesting to be in. Things like Distant, Dramatic Mountains:
In the finished game that flat, circular space will be where you play, and will have its own varied scenery. The Distant, Dramatic Mountains are simply there to give you something exciting to see on the horizon.
The real fun starts when you decide to throw in a little three-dimensional simplex noise to liven things up. Like so:
Yeah, it’s kind of hard to see what’s going on in there, isn’t it it? But I think we can agree that it’s not boring. In fact, I ended up spending ages just wandering around that place, marvelling at its weird, Daliesque features and thinking “what hath God wrought?” God being me, in this instance.
A few snapshots:
And that’s not the half of what I saw.