Monthly Archives: June 2011

Landscaping: Importing & Streaming Tiled Terrains

Completely out of the blue, here’s something I’ve been working on for the past month or so that might interest you:

Landmass Screenshot

A test landscape for the system

The above landscape might seem like a single, solid piece of geometry, but it isn’t. Instead it consists of many smaller peaces that are seamlessly stitched together as you move through the world.

How does it work? The import tools takes chunks of heightmaps, splatmaps and any other relevant maps, and loads them into Unity. The streaming system dynamically loads and unloads these chunks around the player.

The view from up really high

What’s so cool about this? It allows games that use it to have much larger areas of play! The system only loads the parts of the level it needs, while the rest just sits on your hard disk. Now, it won’t quite give you the whole surface of the earth to explore, but you can certainly spend ages walking towards a far stretching horizon of a level.

The test level I’m working with right now uses heightmaps with a 1 pixel-per-meter resolution to form an island of about 16 square kilometers. The individual chunks have either 1 or 2 splatmaps assigned to them, with 4 channels each. Compressed on disk this results in a package of around 200MB, so a full game could have a lot more of it. Plus, a game like Volo could easily manage with a 2 pixel-per-meter resolution, doubling the potential size. I have yet to explore the idea of having different map resolution for different tiles, but such a thing would make sense for chunks of terrain that you don’t expect the player to get close to.

Both the importing and streaming system are built to be highly configurable and extensible. More on this later, but right now I’m interested to hear what other developer would want from this tool, so I can make sure everybody’s happy. If you have any suggestions: Let me know!

An early snapshot of the editor, to be overhauled later.

Note: I was originally developing these systems for Creath Carter, a fellow indie developer. He has kindly let me develop this into a tool I can use for Volo and sell on the Unity Asset Store as middleware. The terrain meshes in the above screenshot were generated by him using World Machine. The textures and engineer character are some default Unity assets.