High quality prefabs vs unique low quality building blocks

If you explore a cave in Elder Scrolls IV Oblivion, you quickly come to notice repeating patterns. Everything you see you’ve already seen before. The exact rocks, stalagmites, cave wall structures. Here’s an example of a raised platform with three stalagmites, in two different caves:

Even the pillars on the wall behind the platform are identical. So here you have an example of an extremely detailed piece of terrain used as a “prefab” in many different places of the world. Seen once, it is beautiful; seen 50 times it loses its luster and makes it feel like you are no longer exploring.

At the opposite end of the spectrum, in my opinion, would be something like 24 year old game Ultima 5. Here you have a very simple tile set – extremely low detail. Because they have such low detail, the similarity between them becomes irrelevant. It also means they can be assembled into arrangements that give a unique feel to every location in the world. Here’s an overhead map of the underworld:

Someone exploring the underworld:

All of this applies to things like buildings too. Buildings in Ultima 5 may consist of a small number of tiles, but they are assembled in ways that make each building, each room, unique.

In most modern games though, buildings would consist of a set of highly-detailed prefabs. Perhaps they appear in unique arrangements, but almost always the repeating patterns are visible. Most places look like other places you’ve already seen. The more detailed a prefab is, the more noticeable it becomes when it is repeated.

Of course when designing such a detailed 3d world, this is necessary. Given the amount of manpower it would take to create a detailed unique environment for every location (not to mention the memory requirements), anything else would be unrealistic.

And of course as an independent developer this would be even more unrealistic.

So the questions I ask myself are:

  • with my limited resources, how can I create a world that appears unique in every spot without resorting to abstract low resolution tiles such as the old Ultima games, or Minecraft?
  • how can I avoid the player noticing repeating patterns?

What makes it possible to have a unique-looking environment everywhere? I would argue:

  • The fundamental building blocks must not be detailed – they must not carry much “information”.
  • It must be possible to assemble them easily into some recognizable structure, or modify/perturb them in some way at each location in the world.


I’ll use the cliffs in my current game engine as an example. They are simply steep parts of the terrain. As a result, they are very minimally detailed, but are easy to uniquely perturb at every spot in the world (by simply adjusting the height). The result is something that looks reasonably unique everywhere, and is very inexpensive (resource-wise) to create.

Unfortunately they are still somewhat “plain”. They are basically no more than Ultima 5 style tiles taken into 3d. The unique textures and normal maps help of course – but it would be nice to be able to create additional detail. How could I accomplish this without resorting to noticeable prefabs?

What I think I would like is some sort of algorithmic method to generate cliffs and varied geology. I’ve played around with this a bit, but haven’t come up with anything useful yet. Ideally I want a small set of knobs to tweak, or “inputs” that allow me to add interesting detail without too much effort.

This could be something like the ability to “extract” cliffs from the terrain and add vertices, and carve grooves or layers into the rock. Basically, something that is very easy to do in the editor to add detail where I need it, without too much thought.

How could I make pillars rock that have the same style and overall look, but which are clearly each unique?


Another area this comes up in is building design. I could purchase a set of prefab building models,  but then “everything would look the same”.  Why does person X have the exact same house as person Y who lives on the other side of the world?

My current “implementation” (if you can call it that) for buildings really is just “Ultima 5” taken into 3d. These are simply straight lines I draw on the map. There aren’t even roofs – I just block out the insides when you’re outside, and block out the outside when you’re inside.

It looks acceptable for “just being straight lines”, but of course I want something that looks a little better. There are obvious improvements to make, such as using different textures, applying decals for things like cracks or missing bits of mortar – and of course furnishing the insides.

But I don’t want noticeable repetition. I want to keep the illusion that every bit of the building is different than every bit of every building you’ve seen in the past. So I want small building blocks from which I can easily assemble something unique.

What tricks/techniques have you used to create realism and uniqueness in your environment models, without “breaking the bank” (in terms of time or money), and without incurring noticeable repetition?


2 comments on “High quality prefabs vs unique low quality building blocks

  1. Well, I do not do (semi) procedural landscapes at moment so the idea is only theoretical:
    Take some time to research a set of actual landscapes/environments. And try to write, for each of these, a procedural synthesizing algorithm. It may be relatively simple – it is important that it will generate the “feel” of environment, not the precise details.
    After certain number of steps it should be possible to start mixing and combining the pieces. Like mixing swamp and cliffs – you will get new unique environment (like can be seen in northern Scandinavia/Russia).

  2. I think you’re thinking larger scale than I was. Basically, find a way to procedurally generate different types of environments. Like this: http://www.creativehoneymoonideas.info/images/honeymoons-camping-BWCA-lakes.jpg, or this: http://static.ddmcdn.com/gif/sand-dunes-alive-3.jpg, or this: http://www.duskyswondersite.com/wp-content/uploads/2011/09/karst-v.n.-5.jpg

    I think that would be an interesting thing to experiment with as part of the terrain editor to easily “seed” an area before applying a more custom touch to things.

    I was thinking a little smaller scale – such as being able to quickly generate something like this: http://img686.imageshack.us/img686/438/icecliffswip.png (or this: http://web.mst.edu/~rogersda/cp_megalandslides/0981-mouth_of_blacktail_canyon_narrows.jpg) , through some combination of a small number of specified parameters (to define the overall look), and a good amount of “random” to give different detail at every spot.

    I guess it’s basically the same premise though, just at a different scale.

Leave a Reply

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 )

Google+ photo

You are commenting using your Google+ 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 )


Connecting to %s

Just another WordPress site

Just another WordPress.com site

Harebrained Schemes

Developer's blog for IceFall Games

kosmonaut's blog

3d GFX and more


Turn up the rez!

bitsquid: development blog

Developer's blog for IceFall Games

Game Development by Sean

Developer's blog for IceFall Games

Lost Garden

Developer's blog for IceFall Games


Developer's blog for IceFall Games

Casey Muratori's Blog

Developer's blog for IceFall Games


Developer's blog for IceFall Games

Rendering Evolution

Developer's blog for IceFall Games

Simon schreibt.

Developer's blog for IceFall Games

Dev & Techno-phage

Do Computers Dream of Electric Developper?

- Woolfe -

Developer's blog for IceFall Games

Fabio Ferrara

Game Developer

Clone of Duty: Stonehenge

First Person Shooter coming soon to the XBOX 360

Low Tide Productions

Games and other artsy stuff...


Just another WordPress.com site

Sipty's Writing

Take a look inside the mind of a game developer.

%d bloggers like this: