Development Blog‎ > ‎

Level Editing

posted Mar 12, 2012, 11:10 AM by Mavrik Games   [ updated May 1, 2012, 10:02 AM ]
This weekend, I made my first attempt at creating a world for Astra. My idea is to make an "overworld" map so the player could walk around from place to place and when they get to points of interest, I'll switch from the overworld map to that place's map - Final Fantasy/Zelda: Twilight Princess style. The first system I tried used streaming Terrain components. I split up the overworld terrain into several smaller maps and I streamed them in by distance. The problem was, they were each way too big, and streaming them in caused the game to hang for a noticeable amount of time while they loaded. The terrain has to be big though so that it actually takes a little time to get around.

I started searching for suggestions about how to best load giant maps, and I found out about what UDK calls Landscapes. Landscapes are basically the same idea as Terrains, but they're implemented via heightmap textures instead of mesh data. As the page states, this allows the levels to be much, much larger and still be efficient. It uses an interesting LOD system as well. Each LOD is a separate mipmap texture, and they use HLSL to interpolate between LOD's, creating smooth and seamless transitions. I used HLSL extensively when working on the graphics system for The Last Pod Fighter, so it's exciting for me to see other systems using it as well (meaning I didn't just waste my time learning it, but it's actually being used in the industry!).

The good thing is, my work with Terrains isn't completely worthless. You can convert a Terrain into a Landscape, so I won't have to completely redesign the world again. I haven't had a chance to experiment yet, but I'll post again when I do.

I'm quickly realizing that this is the area of game development that's going to be the toughest for me. I'm a fairly experienced programmer and I'm getting very comfortable with Unrealscript. I also have quite a bit of experience with 3D modeling and texturing (though due to my limited artistic ability, I have to resort to less complex/detailed assets and stylized characters). Unfortunately, I have zero experience designing levels, since The Last Pod Fighter is a dog-fighting game that takes place in space. I've never actually had to design a level before, much less use the complex system in UDK. Not only do I need to learn how to use the system, but the amount of time required to create anything interesting can be staggering. I think as long as I keep my expectations in check and don't get too carried away with the project though, I should be able to learn what I need to.