Procedural Content

I'm just some random guy having fun doing stuff I'm good at while having a great time being challenged by technical difficulties. I don't know of any good 3D artists willing to create free content for a project I'm likely to abandon the moment I get bored with it. For this reason procedural content seems as a good topic to start brainstorming about. Procedural content is cool, but there should be a lot of diversity. A lot of times an algorithm is implemented that uses some kind of noise to generate random mountains and valleys but that is not the kind of diversity I'm talking about. Each mountain has a unique look, but it's still just another mountain. Even if we add different climates to different areas and add different vegetation to those areas there is still something missing. Sure the world is empty of life, there are no NPC's, villages, or a story to make you feel this world has long existed before you started playing and will continue to exist after new version of the game comes out. But even before creating all that content, there is something wrong with procedural generated worlds that makes the worlds feel kind of cheap. I am not saying that I have the cure, but the least I can do is to try and figure out how procedural worlds could be made to become awesome. So if you like to read about procedural worlds from someone who knows what he is doing I'd recommend, if not, grab yourself a drink and continue reading.


Lets assume we have an algorithm that generates random worlds that uses different climates, rivers and vegetation. Why does every random world feel like they are the same? If we hired a 3D artist that uses Blender, 3D Studio Max, or whatever program they use for 3D-awesomeness nowadays, are they able to make a world that is better? If they have access to the same textures and are also limited to the same game-engine enforced limitations we might not end up with a world that is so different. If we allow the artist to create his own textures the world will probably look very different. It probably has to do with the consistency of the visual style of the game. If we want to amaze people exploring the worlds that we generate, we need an exciting range of different visual themes that has enough overlap in visual style to feel connected. If we are building a game that uses the fun of exploration as one of its main selling points, how can we achieve this? Creating lots and lots of biomes and I'm not just talking about the nature-thingy, I'm talking about atmosphere (again, not the nature thingy). One biome could be a place where you are continuously smiling at the cutesy little bunnies hopping in the color-saturated grass while another makes you depressed because even the rocks look to be in agony. There are couple of games and television series that were so good at this, that I almost want to find a torrent to relive that feeling.

How it should be

 Chrono Trigger starts with a world of joy and happiness, but who can forget that eerie feeling when first entering Magus castle? And what about Kingdom of Zeal with that serene music or that depressig future where everybody was hungry? These are the biomes I want... who cares about forests, deserts and snowy mountains!? Places should conjure up feelings even before the world is filled with a story and music. Chrono Trigger uses time-travel as a method to connect all the different themes, but there are other methods to connect this diversity. The most obvious way is to just create all the biomes side-by-side on the same world and connect them in way that makes sense (e.g. no desert connected to a jungle). This method requires a lot of work, so lets look at some other methods first.

Star Trek uses space travel to find all sorts of weird planets. As a television show this is great, but I have yet to see a Star Trek game that actually created a diverse enough universe worth exploring more then 10 hours [disclaimer]. I don't mean any disrespect to game makers and I'm certainly not saying that I could do better. It's just that there is so much that 'could' be fun (exploring space, stealing technology, walking on planets, being invaded by the Borg, mapping Wesley Crusher, slapping anomalies, digging a hole...) that there seems to be a loss of focus. We need to figure out if we want to create a world that is really interesting (difficult) or that we want to create a world that can be made interesting by the players themselves (less difficult). I'm talking here from a programmer's perspective so designing well crafted worlds is hard, but giving the player a pickaxe and shuffle is not.

There are other games out there that had whole new ideas on creating diversity. I'm talking about a game that was hyped beyond recognition and had repetitive looking environments. Most of us* didn't mind the hype because this game offered something that was really awesome. Ah yes, we could finally create our own silly looking creatures in Spore that evolved from a floating collection of cells to space conquering raptors. Finally a hype that's about a feature of the game instead of something stupid like "most realistic looking trees" or "biggest 3D world ever". Don't get me wrong here, those are things that will be missed when gone, but they aren't vitally important to the fun when playing a game. I often (wrongfully) look at such features as the amount of extra fun it adds to a game, but just the feeling you get that the world is really-really-really big, even if you're not going to explore, makes it feel more worthwhile to continue playing.

* Spore is critized by a lot of people, just read the customer reviews on amazon, I still though it was a fun game though

Another truly amazing game is Dwarf Fortress, one of the few ASCII-games still played today. I can hear you sigh, you are not that kind of girl that plays ASCII games. I don't even play Draw Fortress, but it's still a cool game. If you don't agree with me, just read the "World Generation" paragraph on the wikipedia article. It doesn't just create a world, it creates a world with a history.

Now you know, and knowing is part of the problem

If you don't expect to be surprised while exploring a newly generated world, it doesn't motivate you to pack your knapsack. Just knowing that content is random generated somehow makes me less enthusiastic about exploring. Can I really expect to see cool things if everything is created using a couple of randomization functions? When we start playing the game everything is new and shiny, but there is no reason to generate a new world after I destroyed all lifeforms in the first. Random data is not enough to make me excited. We need structure yet plenty of variation, we need uniquely themed landscapes yet try to avoid Photoshop, we need a design that makes sense. So many things to choose from, so many decisions to make! Who ever said that making a game(engine) is easy?[citation needed]

All that pretentious talk made me thirsty. Maybe I should take a step back and just make a decision of something that is the most fun to build. It certainly shouldn't be too big of a project (even though all the fun stuff needs a lot of time).

Making Decisions - World Layout

Brainstorming is fun and all, but there will be a time that we need to get back to reality :(. I'm not a big company nor do I have a good idea that will be the next Minecraft. Lets just start at a generic idea and see how we can transform that in something worth writing about. I'm not interested in doing stuff other people have done numerous times before, so don't expect me to become the next Notch-clone. On the other hand it is unlikely that I can come up with totally new revolutionary ideas, so a little bit of copy-pasting of ideas might be necessary. Okay here we go.

I like planets. Planets are cool. I like space and unicorns too but for sake of focus lets just ignore that. Lets us focus on one spherical planet and ignore everything else in the universe (sorry charlie). The planet could be any size, but I don't intend to generate endless area's of desert, forests and whatnot so it's probably not going to be too big. The goal is to generate areas that are really interesting to explore so i need to put a lot of time in biome-diversity trying to represent various emotions such as rock, forest and desert.

Also if a world is 'very' open the world becomes easily accessible, now where is the fun in that? There is no adventure if you can just draw a straight line from point A to point B, walk, and from time to time press the jump button. If you don't really have to think how to get to some place in the distance, why not just implement fast-travel and remove the sense of adventure all together?  There are several ways to make the world better for adventure, all of which limits your freedom to move around (thats a good thing). If you could die at any moment because the area is filled with vicious looking raptors (instead of the cute harmless ones) its all the more exciting. The more traditional way is to deny access to area's until you have reached some story-driven event. A bridge could be broken, Soldiers won't let you pass, you need an airship, Ganon has not yet sent you to the other dimension or you just need to find a missile launcher to open green doors. All good ways, but like I've said before, I just want to have a good time solving technical difficulties. Thinking of far-fetched ideas that gamers don't seem to mind is something better left to the professionals. Its all about the sense of freedom, while we actually try to limit it. Gaming is full of those nice little contradictories, it makes sure that there are all kinds of different people that will buy your game.

Oh my! I've been talking way too long and I didn't even talk about the more technical fun stuff like heightmaps, voxels or even the joy of digging holes (no, really, that can be fun, I'm not joking. Stop looking at me funny!). Oh man, I'm not making a lot of progress and just wasted a couple of hours watching "Lets play ..." videos on youtube. That's not really a good start.

BrainstormingProgramming Language