Creating a Custom Worldspace for Fallout 3 (WIP)

A lot of people have difficulty creating custom world spaces, and, indeed, it is one of the buggier areas of FO3 modding, but it really isn't any more complicated than modeling, scripting, or any other element once you know what you're doing.

This tutorial will show you how to create a custom world space from scratch in the G.E.C.K. without using any external applications. It will cover creating the world space data in the World Space dialog box, creating the heightmap in the heightmap editor, using the region editor to paint landscape textures and populate the world space with static objects, using the landscape editor to tweak your landscape and provide finishing touches, and creating the navmesh for actor pathfinding AI. It will also cover creating LOD meshes, textures, and objects for your completed worldspace so that objects and terrain may be viewed at a distance.

Pace Yourself: This is a very long and involved tutorial, so don't expect to get through it in a single sitting. It took me months of work and experimentation and a sizable number of tutorials by others (mostly written for TESIV:Oblivion) to learn how to do all of this stuff myself. My goal in writing this tutorial is to decrease that learning curve to a matter of mere weeks for others by providing you with information in a meaningful context, an efficient workflow, and a lot of tips and workarounds.

Setting Up Your World Space Data

If you don't have the G.E.C.K. open, open it up and load the Fallout3.esm master file. (If you've never used the G.E.C.K. before, do the mini-tutorial at the G.E.C.K. wiki first, to make sure you know what you're doing.)

Warning! I recommend doing this tutorial with a test mod, not your 'big mod project' loaded the first time you do it, just in case you royally screw it up. If you do want to work directly on your mod, at least make a copy of your plugin before starting so that you have something to go back to. The G.E.C.K. still has a lot of poorly understood bugs, and I can't guarantee you won't run into a problem I didn't experience myself in writing this tutorial.

Once the G.E.C.K. has finished loading, immediately save your file. This is critical. If you don't save your file before starting your heightmap, the G.E.C.K. will crash and any work you put into your landscape will be lost. This is the most important line in the whole tutorial, so don't forget it! (People routinely run into this problem and post a help thread about it at least once a week on the forums. If I catch you doing it, I'll know you didn't read this carefully enough!)

Naming Your Plugin: When naming your plugin, I recommend adding a version number after the name of your mod so that you can keep track of your mod's progress and return to a previous, working version if necessary. It also ensures you will always be able to find the right file to work on! Personally, I make backups and update the version number after every major change (like adding a new, working heightmap, or after I've finished tweaking the heightmap in the landscape editor). This gives me a very generous comfort zone when working with the G.E.C.K., which is notoriously unstable. If you go this route, you must remember to remove the version number from the name of your mod when you release it. If you ever want to update your mod, using a different name for your plugin will screw up the save game info for anyone who used the previous version of your mod. Trust me, they will not thank you for it!

Before we can start creating our landscape in the heightmap editor, we have to create a reference for our world space in the G.E.C.K. and set up some default settings for our heightmap. With your new plugin freshly saved, go to the World menu and select 'World Spaces...'.

Select World Spaces from the World menu

This will open the World Space dialog window, which is a little intimidating the first time you look at it. (If you click on the image, you can see the settings I used for this tutorial.)

The World Space dialog window

I'm going to admit up front that I don't fully understand all of the options on this dialog, but I will cover the ones that I do understand, and provide a bit of speculation about some of the others. (The most authoritative information can be found at the wiki, under World Spaces.)

To create a new world space, right-click in the World Space list on the left side of the window and select 'New' from the context menu that pops up.

Right clicking in the World Space list

This will pop up a small dialog window asking you for a reference id ('EditorID') for your world space. You can give your world space any name you like (the reference id does not show up in the game and is only used internally) so something like MyWorld is fine. In the example I use for this tutorial, I've used aaaMyWorld so that my world space always shows up at the top of the list.

The New Editor Id dialog box

Using Prefixes on EditorIDs: It is generally recommended that you prefix all of your reference ids (for every new object you create in the G.E.C.K., not just your world space) with a brief two or three-letter identifier that you can use to quickly identify them when scrolling through the lists. Many modders prefix their ids with '00' or 'aa' or even 'zz' but I prefer to use identifiers that actually refer to my mod. For example, if I'm creating a mod called My Big Quest, I might use mbqMyWorldSpace as the reference id for my world space. This can prevent conflicts if, for some reason, you decide to load multiple plugins in the editor at the same time. You can quickly scroll through a list to the location of your objects by selecting the list (for example, in the Object or Cell View window) and typing your prefix. This will instantly bring you to the first object beginning with those letters and can be a real time saver.

Now we need to define some settings for our world space. The first part we're going to look at are the Name and Parent Worldspace fields.

The Name and Parent fields

The name field is self-explanatory. Just type the name of your world here. This is the name that shows up in the game menu when selecting your saved game. The Parent Worldspace field is a drop-down box that allows you to select a second world space to be the parent world space for your new world space. If you look at the Megaton world space, you will notice that it uses the Wasteland as its parent world space. Using a parent world space means that your world space will 'inherit' the landscape, water, LOD, climate, weather, map, etc., of the parent world space automatically. If you want to change one of these settings, you will need to uncheck the 'Use' box and enter your new settings. Parent world spaces are really only useful for defining closed world spaces that exist inside other world spaces like pocket dimensions and that are only accessible via load doors. Think about Megaton: every time you went in or out of the town, you had to load a new world space. For the purposes of this tutorial, just leave the Parent Worldspace set to 'NONE'.

The next set of options we are going to look at are the top two rows of the Sharable Data group.

The Sharable Data options

LOD, for those of you who don't know, stands for Level of Detail. When you play the game, the engine only loads the cell that you are in and a few cells surrounding that cell. Anything else that you see in the distance is defined by LOD meshes and textures. (We'll get into this more, later.) LOD Water Height and Type may be set differently from the near water height and type, though it is generally a good idea to make sure that they are set the same.

Image spaces are a new feature of the G.E.C.K. that essentially allow you to apply effects to the way a world space is viewed by the player. These affects seem to apply mostly to lighting and luminosity, but it's something I really haven't had time to look into yet, so we'll just leave it at that.

Climates allow you to define the textures to use for the sun and sky, set the times for sunset and sunrise and define weather for a world space.

The Default Land Height and Default Water Height set the height for land and water in game units. (A human in Fallout 3 is about 128 units tall just to give you some perspective.) The Default Water Height is set to 0.0 by default, which you can think of as 'sea level'. This should probably match your LOD Water Height setting. The Default Land Height is set to -2048.0 units which is about 96 feet below sea level. (See Oblivion units, which are the same as Fallout 3.)

The Water field allows you to pick the type of water you would like for your worldspace. Again, this should probably match your LOD Water Type setting.

Because we are not inheriting any of this information from a parent world space, we are obliged to enter our own settings for these fields. For the purposes of this tutorial, we can leave most of them set to their defaults, but you will probably want to experiment with some of them for your real mod. The only setting which we must change is the Default Water Height field in the bottom middle. Setting it to a number lower than 10500 seems to result in inexplicable gaps in the water mesh where the water meets the land (like along beaches). The closer this number gets to 0.0 (the default setting), the more likely you are to encounter this error, in my experience. For this tutorial, I have changed the default setting to 10500.0 and updated the LOD Water Height field to match. I have also heard of people experiencing problems after changing the Default Land Height, so you might want to leave that set at the -2048.0 default as well.

The next group of options we're going to look at are the Map Data options. These options allow you to include a map for your world space, like the World Map that you see in the Pipboy.

The Map Data fields

I won't actually be covering map creation in this tutorial (since I haven't tried it for FO3 yet myself) but it should work the same as it did for Oblivion. The large empty area on the left is the map preview area where a thumbnail preview of your map will be visible once you've selected a map for your world space. Pressing the Edit button beside the text box under Map Image allows you to browse to the image you are using for your map. The Usable Dimensions X and Y fields allow you to specify the dimensions of your usable image area (which doesn't have to be the same size as your image; it will count from the top left corner of the image X and Y pixels to the right and down). The Cell Coordinates fields allow you to specify the cell numbers for the cells which should occupy the top left-most and bottom right-most corners of the map. Getting your map image to match your cell coordinates then becomes a simple matter of fine-tuning the relationship between your Usable Dimensions and Cell Coordinates.

The G.E.C.K. also supports a couple of new map options located below the map image in the World Map Offset Data group. To speculate a bit, I'm guessing that the Cell X Offset and Cell Y Offset allow you to further fine-tune your cell coordinates to your map coordinates. (Which could be tricky to get right in the Construction Set.) The World Map Scale should allow you to scale your map by fine degrees to further facilitate an exact match between map and cell coordinates.

The World Map Offset Data options

For this tutorial, all these fields can be left at their defaults.

The group of options beside the World Map Offset Data group is sort of a grab-bag of world space-related options. The first of these are the Canopy Shadow and Water Noise Texture options.

Canopy shadow and water noise

Pressing the Canopy Shadow button will allow you to browse to a canopy shadow texture in the Data\Textures\Trees folder. (A canopy shadow is a shadow created by closely grown trees, as in a forest or jungle.) I've never used this feature before, so I don't know if it's working or not, but it is set for at least two of the vanilla world spaces and there is a canopyshadow.dds in the Trees folder so it might be worth looking into if you are planning on using trees in your mod that aren't completely dead and bare.

Water Noise is another new feature of the G.E.C.K. which allows you to manipulate the surface normals of the water plane to produce more realistic waves and ripples. This is another feature I really haven't had time to explore yet, but I can tell you that the Water Noise Texture option is important to set properly, otherwise your water won't look right in-game and you will get errors when loading your world space in the render window. To set this option, just click the Water Noise Texture button and browse to the texture you want. The texture I have selected here, generatednoise01.dds, seems to work well for the DefaultWater type.

The next group of check boxes sets a number of flags for your world space which can have important consequences for the players and help optimize your mod.

Additional world space options

I don't think anyone outside Bethesda really knows exactly what the first option, Small World, actually does, but the only vanilla world space that doesn't use it is the Wasteland. Unless you are creating a world space of similar scope, I would probably leave it checked to help 'speed up processing'. It is unclear what constitutes a 'small world', or if leaving this option checked when creating a 'large world' has any negative effects, but anything less than a quad (32 by 32 cells) in size probably qualifies as a small world. For the purpose of this tutorial, leave this option checked.

The next two options, Can't Fast Travel From Here and Can't Wait, are pretty self-explanatory. Selecting the first will disable fast travel for your world space and the second will disable waiting (pressing the T button).

The No LOD Water flag disables water LOD for your world space. This is useful if your world space contains no water, or if no water is visible from within the boundaries of your world space. Selecting this option should help speed things up a little. To be honest, I'm not sure what the No LOD Noise option is for, but it may refer to Water Noise on LOD Water. None of the vanilla world spaces have this option selected.

The next row of options allow you to select the background music and encounter zones and set one additional world space flag.

Music type and encounter zones

I haven't had a chance to play around with the music options in the G.E.C.K. yet, so I don't know if there is any real usable variety, but you are welcome to explore them yourself. I have just left it at the default music for this tutorial. Encounter zones are another new feature of the G.E.C.K. which allow you to set minimum levels for leveled encounters and a couple of other options. For more information about Encounter Zones, check out the wiki. Encounter zones are outside the scope of this tutorial.

The Allow NPC Fall Damage option allows you to disable falling damage for NPCs in your world space if it would be inconvenient for you to have them frequently dying on you. This option is deselected for Megaton for fairly obvious reasons, but should probably be set for any world space that does not involve a lot of friendly NPCs living in elevated communities. (Like a village of mutant Ewoks.)

The final sections of the World Space dialog box are still a bit of a mystery to me. The Swaps Impact Data option isn't used by any of the vanilla world spaces, and I'm not sure what it would be used for. (Impact data refers to the effects that various types of weapons have on the environment when they are used, like bullet hole decals appearing on walls and the like.) The Footstep Materials obviously relates to the 'crunching' sounds you hear when walking and is tied up in this Swaps Impact Data mystery somehow as well. The Output Cell Ref Counts generates a report which can be saved to a text file listing data about the references contained in each world space cell. I have no idea what the numbers in the report beyond the cell coordinates mean, though.

Swap impact data and output cell reference counts options

Once you have all your options set (you can review them here) click OK. (If you ever change your mind about creating a world space, you can click Cancel to exit the dialog without saving the data.) Once your world space has been saved, it should show up in the list.

Now that you have set up your world space data, save your plugin. You are now ready to begin shaping your landscape in the heightmap editor.

Data Mining the G.E.C.K.: I highly, highly recommend that you get in the habit of examining Bethesda's files in the G.E.C.K. whenever you are learning how to do something new, or whenever you run into problems with your own mods. You can often learn how to set things up properly without the need for tutorials or help from the forums simply by copying what Bethesda does in your own mods. The best way to do this is by opening a second instance of the G.E.C.K. and examining the files in there. If you start mucking around in the vanilla files with your mod open, there is a chance that you will accidentally change something in a vanilla file and corrupt your mod. To open multiple copies of the G.E.C.K. you have to change a setting in the GECKCustom.ini file, which should be located in My Documents\My Games\Fallout3\ (on a WindowsXP system; might be different on Vista). Open GECKCustom.ini in a text editor (like Notepad) and go to Edit->Find... and type 'edit'. This should bring you down to bAllowMultipleEditors=0. Change the zero to a one (bAllowMultipleEditors=1) and save it. Now you can open up more than one copy of the G.E.C.K. at the same time! (If you don't change the .ini file, any new instance of the G.E.C.K. will crash instantly.)

Next: Creating the Heightmap

See also: G.E.C.K. Editor Warnings and Solutions

Last updated July 22, 2011

© 2009-2011 Dave Finch