L3DT to Skyrim Worldspace

About

    Creating a good natural looking terrain is not something that's easy to do manually. Luckily enough, there are some computer applications that are specifically designed to do this for us. These applications are very good at generating different types of landscapes and terrains and there are quite a few of them available.

    In this tutorial, I've documented an easy to follow work-flow for creating a randomly generated island using L3DT. Some of the images below can be clicked on to open a full size clearer image, while others that show menus and dialog boxes, are screenshots that have been cropped to show the exact steps or setting used.

    **Note**
    This tutorial assumes a 4096 x 4096 pixel worldspace. If you choose to create a smaller land, then there are suggestions for the different settings to use. If you change settings, then follow your own settings through the rest of the tutorial.

Required Applications

    L3DT (Large 3 Dimensional Terrain) is a 3D terrain generator available from Bundysoft

    You can download the Standard Edition for free. This will allow you to create a worldspace of 2048 x 2048 pixels (64 x 64 cells). The Professional Edition costs $34.95, but you can download it as a fully functional 90 day trial.

    With the Professional Edition, you can create heightmaps up to 131,072 x 131,072 pixels. The maximum size for Skyrim is 16384 x 16384 pixels (512 x 512 cells).

    There is a further limitation to the 'usable' size due to a Havok bug in the Skyrim game engine. This makes the terrain 'bug-out' when you exceed 4096 pixels on the x axis (128 cells left to right, centred around cell 0,0).

    The y axis (bottom to top) is unaffected.

    You have to register an email address to download.

    Download L3DT here

    You will also need an image editing program that can open and save 16bit raw image files. For this tutorial, I used Adobe Photoshop. Again, you can download it as a free trial, but you also have to register an email address.

    Download Photoshop trial here

    I believe a freeware program called ImageJ can also handle 16 bit raw images

    Download ImageJ here

    To convert the heightmap into a Skyrim plugin (mod), you will need Tesannwyn 0.23

    Download Tesannwyn 0.23 here.

    To add Sryrim.esm as a master file to your plugin, you will need TES5Edit

    Download TES5Edit here.

Index

Getting Started

    Start L3DT and select the menu File > New Project. The setup wizard will start and you will be presented with the box below.

    Image001

    Click on Designable map (recommended) to highlight it.

    Click on Next

    This will take you to the Heightfield size window

    Image002

    Here is where you set the size of your playable worldspace. I mention 'playable' because your final world will normally be bigger than the size you enter here.

    You can move the sliders to change the size, or type directly in to the Width and Height boxes.
    Make sure your Width and Height are equal and are an exact multiple of 1024.
    eg. 1024, 2048, 3072, 4096, 5120, 6144, 7168, 8192,.etc.

    Moving down, we see the box Horiz. scale (m). This is the size that one pixel is going to represent in your worldspace. The default is 10, but we want to change this to 5 for the time being. The reason will be explained further on.

    **Note**
    If the size of your worldspace is 1024 or 2048, set the horizontal scale to 2.
    If the size of your worldspace is 3072, then set the horizontal scale to 3.


    Make sure there is a tick in the Edge wrapping box

    Click on Next

    This will open the Design map size box.

    Image003

    The name is a bit mis-leading because the Design map size will be the same size as the values that you entered in the Width and Height of the previous dialog box.

    Basically what you're setting here is how fine the detail is going to be. The lower the number, the finer the detail, but the longer the generating time. I find 32 works well.

    **Note**
    If the size of your worldspace is 1024 or 2048, set the HF/DM ratio to 16.

    Click on Next

    Now you're looking at the nuts and bolts of you new world,..the Design map parameters box.

    Image004

    For the purpose of this tutorial, I recommend moving the sliders to match the image above. This should create a terrain that we can make an island from, but there's a little bit of work involved.

    Click on Next

    The final box of the wizard will appear, Calculation queue.

    Image005

    For now all we want to generate is the Design map. It only takes a few seconds.

    The Heightfield takes considerably longer to generate, but may not be suitable for our island, and that's just time wasted.

    Click OK

Design Map

    After a quick calculation, you may end up with something that resembles the image below.

    These full screen images can be clicked on for a bigger image.

    Image006

    Firstly, let me explain what we're looking at, and then, what we're looking for.

    Remember step 2 in the wizard, when we created the Heightfield size, we put a tick in the Edge wrapping box. This effectively 'tiles' the map to fit perfectly together when placed side by side.
    The left side matches the right, bottom matches top. This means that the land shape at the bottom, will fit seamlessly with the land shape at the top. It's the same for the left and right sides.

    Ideally what we are looking for is a clean water break (blue) that runs from top to bottom and another that runs left to right.

    What we see in the image above is a landmass that runs top to bottom with a body of water that almost runs top to bottom, but has a thin piece of connecting land that splits water. These thin pieces of land can easily have a channel cut through them to make the water continuous.

    It should be noted that when we make a cut in the landmass, the colour should be dark green with blue on both sides. The brown and white colours represent land that has a high altitude and is not suitable for cutting a channel through.

    You can zoom in on the design map with the mouse scroll wheel.

    Unfortunately, this map does not have a left to right split in the landmass and doesn't have a narrow strip of land that can easily be split. If it had a narrow strip of land somewhere running top to bottom, then it could probably be used.

    This is not a problem, we just generate another Design map.

    On the Operations menu, select Design map > Generate map.

    Image006_s

    You will be asked 'Overwrite existing design map?' Click OK

    After a few seconds you will be presented with another map.

    Image007

    This one is similar to the previous map, generate another.

    Image008a

    **Note**
    If you find it difficult to visualise what the land will look like once it is joined, I have created a simple guide on the Tips n' Tricks page that you may find helpful.
    If you want, you can also rotate the design map by selecting the menu
    Layers > Rotate > Rotate CW (clockwise) or Rotate CCW (counter-clockwise).

    Image008b

    I rotated the map above counter-clockwise

    Image008b

    This is still not what we're looking for, but I like the shape of that little island (it is similar to the UK in shape). We will come back to this design map later on for a different tutorial.

    You may have to generate a design map quite a few times, until you find a map that is suitable to use. Sometimes you get lucky after 2 or 3 attempts. Sometimes it can take 8 or 9 attempts until you find a map that you can use. As mentioned before, it doesn't take long to generate a new design map.

    I finally came up with a map that I wanted to use for this tutorial.

    Image009

    This is ideal. As you can see we have a clean break running top to bottom and left to right. The top to bottom break is the most important. It means that your landmass can never exceed 4096 pixels left to right (x axis) when joined together.

    Always remember this.

The Heightfield

    The next step is generating the actual heighfield for the design map.

    On the Operations menu, select Heightfield > Generate map and go put the kettle on.

    Image010

    It can take quite a while, but when done you should end up with something like this

    >Image011

    This is a good time to save your work.

    On the File menu, select Save > Save Project as... Create a new folder somewhere and give your project a name.

    As we work our way through this tutorial, you may notice that I save quite a lot (name changes in top left corner). I don't overwrite the old projects. I just create a new folder and give the latest save a new name.

    The heightfield is not directly editable and is used mostly for gathering information on height and position. This information is displayed in the bottom right hand corner. Here you will find the x-y position and the altitude / depth of the land that is sitting directly below the mouse pointer.

    You can zoom in using the scroll wheel. Move around by grabbing the heightfield with the left mouse button and moving the mouse left, right, up and down.

    Let's zoom in.

    >Image012

    If you click the image above, you will see that there are coloured contour lines on the map. These heights are listed below:
    • Olive = 1000m BSL (below sealevel)
    • Blue = 100m BSL
    • Red = 1m BSL
    • Green = 100m ASL (above sea level)
    • Yellow = 1000m ASL
    As a general rule of thumb, the red contour line is the edge of your land and we'll be using this later to determine the final size of our heightmap for Skyrim.

The 3d View

    The moment we've been waiting for,...what does it look like?

    On the tool bar, click the the icon that's the furthest to the right - '3D'

    This will open the 3D renderer that L3DT used, named Sapphire.

    You will be presented with a screen similar to the one below

    Image013

    The default keys for using Sapphire are w, a, s, and d for forward, left, backward and right. To increase the camera elevation, press and hold e. to decrease elevation, press and hold r. When you right click in the Sapphire window, you can turn left, right and look up, down by moving the mouse. Right click again to get the mouse pointer.

    In the image above, I didn't want the lake in the red circle to be there. There are two ways of removing it. One is to raise the land in that area, but but this doesn't work too well with the raise tool. The best way is to raise the whole landmass.

    In L3DT, the sea level remains fixed at 0m. To lower the sea level, we have to raise the whole landmass. To raise the sea level, we have to lower the whole landmass.

    Quit Sapphire and zoom in to the area that you want to raise. Move the mouse about until you find the deepest point.
    In this map, it was -141m (shown in bottom right corner).

    Image014

    This then shows that I need to raise the entire landmass by at least 141m.

    Select the menu Operations > Heightfield > Change vertical range

    Image015

    The lowest and highest points of the heightfield are shown in the top left and right boxes. To raise the landmass (lower sea level), we need to add at least 141 to the minimum and maximum values.

    Image016

    I decided to add 150 m and round off the result.

    Image017

    Original deepest point was -1249m. I raised it to -1100
    Original highest point was 1761m. I raised it to 1910

    Back into Sapphire and we see that the large lake has gone, but another smaller lake has appeared (red rings). You will also notice that the land has joined at the top and is getting closer on the left (yellow rings).

    Image018

    The small lake could probably be removed by using the raise tool, but I'm going to raise the lowest point up, while leaving the highest point where it is. This squashes the landmass a little bit.

    Again, quit Sapphire and find the depth with the mouse pointer in the lake.
    The deepest point was 50m.

    Image019

    If we only raise the lowest point of the heightfield by 50m, the lake area will not raise by 50m, because we are squashing the landmass. I guessed that raising the lowest point by 75m would probably raise the lake area by around 50m.

    Selecting the menu Operations > Heightfield > Change vertical range, I raised only the lowest point by 75m.

    Image020

    Back into Sapphire to see the results.

    Image021

    This is fine. The little bit of water remaining water can be removed by raising the lowest point again, or the land can be raised with the Sapphire raise tool. I raised it by another 5m and the lowest point is now at -1020m.

    I also lowered the highest point to to 1900m, just to round off the numbers.

    We can also see that there is still a solid body of water running from top to bottom.

Creating the RAW heightmap image

    With the heightfield in the L3DT window, select the menu
    File > Export > Export active map layer...

    Image022

    In the Export map box, click the drop down arrow and set the File format to RAW.

    Image023

    In the File name box, give the file a meaningful name. It's good practice to include the depth of the lowest point and the height of the highest point in the name. We need to remember these values for when we import the RAW heightmap back in to L3DT. Including the image size is helpful as well.

    I generally name the file in the format project_lowest point_highest point_image size, so the file name was Island_1020_1900_4096.raw

Editing the RAW heightmap image

    In this part of the tutorial, I'm using Photoshop. The process should be similar if you are using ImageJ.

    RAW image files (do not confuse with RAW camera files) do not contain any information about the width and height of the image, or the bit depth (amount of colours). This information has to be entered manually.

    Open the RAW file that you just saved and enter the information, as shown below.

    Image024

    • Width = The width that you set in the Heightfield size at the start of the tutorial
    • Height = The height that you set in the Heightfield size at the start of the tutorial
    • Channels = 1
    • Depth = 16 Bits
    • Byte Order = IBM PC
    • Header = 0 bytes
    Click OK and your image should load correctly.

    Press Ctrl+A to select all and then press Ctrl+C to copy. Make sure Snap has a tick next to it on the View menu.

    The next step is to tile the image so that the top, bottom, left and right all join together. To do this, we have to create a blank canvas that is three times the width and height of the original RAW heightmap (3 x 4096 = 12288 pixels)

    Select the menu File > New and enter the new dimensions. Make sure the Colour Mode is set to Greyscale 16 bit and we don't want Photoshop (or ImageJ) to manage the Colour Profile of the image. See all settings below.

    Image025

    A new canvas will be created.

    Press Ctrl + V to paste the image.

    From the tool bar, (left hand side) click the top icon (arrow with a plus sign) and then left click and hold the image you have just pasted. Drag it to the top left corner. As you approach the edges, it should snap into place.

    Press Ctrl + V again to paste the image again. Drag this image and place it next to the previous image. Again, it should snap into place.

    Repeat this until the outer border of the newly created canvas is completed.

    Image026

    When you paste the last image in the centre, zoom in and you will see that Photoshop does not paste it exactly in the correct position (see below). Drag it slightly to make the join complete.

    Image027

    You will notice that the image is now made from 9 layers (see right hand side of image above). With layer 9 still selected, hold down Ctrl and click on layer 1. This will select all layers.

    Right click on any of the now selected layers and select Merge Layers.
    On the File menu, select Save AS... and change the Format drop down box to Photoshop RAW (*.RAW). Give the file a name.

    Image028

    Click the Save button and an new box will appear.

    Image029

    Setting are:
    • Header = 0
    • Un-tick Save Transparency (if ticked)
    • Non-interleaved Order
    • IBM PC
    Click OK

Importing the heightmap

    Back in L3DT, select File > Import > Heightfield... and select the RAW from Photoshop

    Image030

    Set the Horizontal scale to 5 (same value as your original) and put a tick in the Specify new vertical range box.

    Enter the minimum and maximum altitudes (if you have forgotten, look at the name of the heightmap we exported earlier).

    Image031

    Press OK

    Enter the new size of the RAW image you created in Photoshop.
    Mode is 16-bit unsigned and Header is 0.

    Image032

    When Photoshop saves a RAW image file, it flips the image.
    We have to put a tick in the Invert Y axis box, to flip it back to the original state.

    After a short while, your new 'tiled' land will load.

    Image033


    L3DT can give errors when working from a .raw image import, so save this as a new project. I find it's best to quit L3DT at this point and start the program up again.

Creating the island

    Select File > Open and open your newly saved project.

    Currently, our ocean depth is sitting at -1020m. This is far too deep for our map.
    For now, we are going to clip the ocean depth to -90m. This is still too deep and will be changed later in this tutorial.

    From the Operations menu, select Heightfield > Clip heightfield...

    Image034

    On the drop-down, select Clip below and enter -90 in both boxes.

    Image034a

    Click OK

    This gives us a clearer picture of the shape of out island.

    Image035


    For our map, we are going to use the island in the red circle.
    We know that this island cannot exceed 4096 pixels on the x axis, because the left and right side never joined together.

    We also have to make sure that the island is going to be exactly in the middle of the map. To do this, we have to take a note of some coordinates (yellow circle).

    Image035a



    Zoom in on the area of the yellow circle and take a reading of the red contour lines at their closest point. Note the x coordinates.

    On this heightfield, the numbers are 4592 and 4678 (see image below).

    Now we are going to do a few calculations

    If we subtract 4592 from 4678, we get 86 pixels. We need half of these pixels on the right side of the island to make sure our island is exactly centred on the final x axis.

    Divide the 86 pixels by 2 and we get 43. Subtract the 43 from the left side of our island's x coordinate and we get 4678 - 43 = 4635. This would be the left hand edge of our 4096 map.

    Make a note of this number, we will need it later.

    Image035b

Separating the island

    Start Sapphire and you should have a complete map of the 12288 pixel world.

    Image036

    We now have to make the top and bottom (North and South) edges of the island. Zoom in on the area to the South. Press the H key to bring up the Sapphire toolbox.

    Image037

    Select Lower to and enter -90. This is the ocean floor depth that we clipped the heightfield to earlier.

    You will see a half globe shape on the map. This is our brush. The brush size can be altered with the mouse scroll wheel.

    Start removing (lowering) the land at the South end of the island. This doesn't have to be exact, we just want to make a separation.

    Image038

    Now move to the North of the island an repeat the process.

    Image039

    Repeat for East...

    Image040

    ...and West.

    Image041

    Now quit Sapphire and you will see our island shape clearly, on the heightfield.

    Image042

    Export this as a .RAW image and open it up in Photoshop. Remember to change the image dimensions to match our new size.

    Image043

    Using the eyedropper, change the paint colour to the black colour of the ocean bed. Set a large brush size (I used 1000 px)

    Image044

    Start painting the remaining islands away.

    Image045

    When you have cleared the area around your island

    Image046

    Use a bigger brush size (3000 px) and remove the rest.

    Image047

    Save the Raw image and import it back into L3DT, using the same height, depth and horizontal scale as previous. Save the project and quit L3DT. Open L3DT again and open the project that you have just saved.

    Image048

Cropping the heightfield - East to West

    There's nothing worse than standing at the waters edge and seeing the horizon stop 3 or 4 cells away. For this reason, I usually add a minimum of 32 cells (1 quad) from the edge of the landmass.

    From the previous section, Creating the island, it was worked out the edge of our 4096 x4096 heightfield would only be 43 pixels from the left and right edges of the land.
    This is not enough.

    The edge of the 4096 pixel world would end at 4635 pixels. We want to extend that by 1024 pixels (1 quad = 32 cells) on the left side and the right side. This will make the width of our world become 6144 pixels.

    We subtract 1024 from 4635 and get the new left edge at 3611. This new left edge will become x coordinate 0 (zero). The right edge will be 3611 + (6144 - 1) = 9754
    We have to subtract 1 from 6144 because the coordinates start at 0 (zero).

    On the Layers menu, select Crop.

    Image050

    Enter the new crop dimensions on the x axis.

    Image050a

    Click OK and the heightfield will be cropped.

    Image051

    The y axis will be cropped once we clean up the North and South coastlines.

Blending the coastlines

    Start Sapphire and move to the South edge of the island. Press H to bring up the Heightfield tools box and select the Lower brush.

    Image053

    Move the edge of the globe on to the cliff face and left click. This will lower the land directly under the brush and start to drag the cliff face down.

    Image054

    When you have shaped the coastline, it should look something like this.

    Image055

    If we quit Sapphire at this point, we see will a change in the heightfield colours.

    Image056

    We have lowered the ocean floor and now the original ocean floor is a grey colour, not black. To get thing back to normal, we have to clip the heightfield again.

    Select Operations menu, select Heightfield > Clip heightfield...

    Image034

    On the drop-down, select Clip below and enter -90 in both boxes.

    Image034a

    Click OK

    Back into Sapphire to see the results.

    Image057

    Repeat the process for the North coastline and this...

    Image059

    ...will become this (image is looking towards the South).

    Image060

Cropping the heightfield - North to South

    As with the East-West position, the North-South position of the island should be kept centralised.
    To do this, we have to work out the islands total length running North to South and then centralise it within the 6144 x 6144 heightfield.

    This is quite easy. Subtract the furthest South point from the furthest North point.

    On this map, those y axis coordinate are:

    • Furthest South = 2506
    • Furthest North = 7470
    This gives the total North to South length as

    7470 - 2506 = 4964 pixels

    The N/S middle of our island will then be (Most Northerly point) 7470 - (4964 / 2)

    and that is 7470 - 2482 = 4988 on the y axis.

    The lower edge will then become 4988 - 3072 (half of 6144) = 1916

    Select Layers > Crop and ignore the x axis. We have already cropped this.

    In the y axis we enter 1916 in the first box. The value for the second box will be

    1916 + (6144 - 1) = 8059

    1916 will become y coordinate 0 (zero), so we subtract 1 from 6144.

    It was at this point I noticed that the North and South points are only 590 pixels (approx 18 cells) from the edge of the heightfield. I decided to add 512 pixels to the top and bottom. To keep the heightmap square, 512 pixels have to be added to the left and right as well.

    Easy to do. Export the 6144 x 6144 RAW heightfield and open it in Photoshop. Create a new 16bit Greyscale canvas (as previously). Set the x and y dimensions to 7168. Paste the heightfield into the new canvas and paint the edges black (sea bed colour).

    Save as PhotoshopRAW (as before) and import the new RAW heightfield back into L3DT, with the new dimensions. Highest and Lowest point remain the same.

    **Note**
    I am only adding in the extra area to create ocean LOD. Unfortunately, this larger image size will add several thousand cells to your worldspace, which in turn, will add significantly to the file size of your esp. This can be looked on as being excessive.

    Fortunately, there are ways of reducing the file size of your final worldspace.

    See the Reducing The Worldspace File Size section on the Tips n' Tricks page, for more details.

Setting the Horizontal Scale

    Firstly, let me start by explaining what the horizontal scale is.

    The Horizontal Scale is the size of the area that is covered by 1 pixel. This is sometimes also referred to as map elevation or arcsecond. You may see some downloadable maps with the description 90m elevation (90 arcsecond), 30m elevation, 5 or even 3m elevation.

    This simply means that 1 pixel represents an area of 90m x 90m, 30m x 30m,
    5m x 5m or 3m x 3m respectively.

    Skyrim uses a horizontal scale of 1.82882m ( 1 pixel = 6ft x 6ft imperial )

    So now you're wondering 'Why did we set the horizontal scale to 5m at the beginning?'

    There are a few reasons for that, but mainly because you don't know what the highest point of your map is going to be when you start the project.

    Ideally, you should try to keep the final highest point lower than 1000m (1km).

    It becomes really tedious constantly running up / down a huge mountainside.

    Let's see what happens when we reduce the horizontal scale.

    On the diagram below, we start with a horizontal scale of 10 units and height of 6 units (triangle. A)

    Image061

    If we reduce the horizontal scale to 5 units (triangle. B), the sides become a lot steeper.

    To keep things in perspective, we have to reduce the height (and depth) by the same amount (triangle C)

    I've found that any 4096 map that is generated randomly is usually going to be too high for Skyrim. Some of the maps I've generated have been over 3500m (3.5km) high, so that's why I start with a larger horizontal scale. Scaling down the height becomes a lot easier, whilst maintaining the original
    map shape / structure.

    From the Operations menu, select Heightfield > Change horizontal scale...

    Image062

    Type 1.82882 into the box.

    Image065

    Click OK

    In Sapphire we see that the land has become very steep and unnatural looking.

    Image066

    Now we have to reduce the height and depth to keep everything as it was.

    We reduced the horizontal scale from 5 to 1.82882.
    This gives a reduction ratio of 5 / 1.82882 = 2.734

    To keep the height in perspective, we divide the highest point and lowest point by the same number, that is 2.734.
    • Highest point : 1900 / 2.734 = 694.952 round off to 695m
    • Lowest point : -90 / 2.734 = -32.918 round off to -33m
    Select the menu Operations > Heightfield > Change vertical range...
    and type in the numbers.

    Image067

    Click OK

    If we now check this in Sapphire, things should be back to normal, albeit, a lot lower than before.

    Image068

    **Note**
    Although Skyrim uses a horizontal scale of 1.82882m,
    you do not have to set your horizontal scale to 1.82882.

    If you find that your mountains are too low after using the Skyrim default, you can try setting the horizontal scale to 2, 2.5, 3 or 3.5 (or any number in between) until you find a suitable number and then set the height / depth accordingly.

    TESAnnwyn will still create an esp and it will still be usable in Skyrim. Problems start to occur when using a horizontal scale of 5.5 and above. This usually ends up with tears in the landscape.

    The only drawback is that landscape curvature is not as smooth when using a higher horizontal scale.

    If you can imagine a curve made from 20 small straight lines at slightly varying angles, you get a nicely rounded shape.

    Now imagine the same curve made from 5 larger lines. This is the effect you get with using a higher horizontal scale. The higher the horizontal scale, the less straight lines are used, and the longer the lines are.

    The vertices are still there in the correct place, but you may get 4 or 5 of them in a row without any angle variance or correction.

    This can easily be remedied with a quick tap of the left mouse button using the CK landscape editor tool with Soften Vertices selected. This works well, especially on snow landscapes.

    In fact, this has to be done on snow landscapes anyway. The vertices will sometimes show through, even when the correct horizontal scale is used. It also smooths out the roughness to give a snowy smooth look.

    If I wanted the highest point on this map to be around 1000m, I would set the horizontal scale to 2.5 (half the original 5) and then reduce the height / depth by half. This would give a final height of 950m (1900/2) and final depth of 45m (90/2).

    To be honest, there's not a great deal of difference between a horizontal scale of 1.8288 and 2.5 (hardly noticeable). It becomes more noticeable with a horizontal scale of 3.5 and upwards.

Finishing the seabed

    This next part is possibly the one that takes the most time to do.

    At the moment our seabed is completely flat and and un-natural looking. We are going to fix this by adding some random underwater slopes, using the Perlin noise tool.

    Start Sapphire and press H. Select Perlin noise.

    Image069

    It's probably best to try this first on an area that's well away from the coastline, just to get a feel for the brush.

    Make a large brush and start moving it slowly with the left mouse button pressed. If you stop moving but still have the mouse button pressed, the affect is accumulative.

    Once you get the 'feel' of the brush, move into the coastal area, but make sure you don't go too near the coastline.

    Start making random noise, leaving a small flat area all round the coastline. This small flat area will be done later will a smaller brush, as more care is required.

    Image069a

    When this is done, your land / seabed should look something like this..

    Image070

    The next step is to use a smaller brush size and get in close to the land to finish the remaining flat areas. Inland lakes will also have to be done like this. Try to make sure that the brush always remains in the blue area.

    Image071

    When completed...

    Image073

    ...we have to go over the whole thing again with the Smooth tool to make it look like a more natural underwater landscape.

    Image074

    When the entire seabed has been smoothed, there is only one last thing to do. We now have to set the lowest point on the map to -117.04m. This ensures that our sea level is going to be at exactly 0.0m in Skyrim.

    Move well away from the land area and select the Lower to tool.
    In the box, type -117.04m.

    Make quite a large brush size an click in the area you selected.

    Image075

    Select the Smooth tool and lower the brush size. Slowly go round the cliff face and smooth it out.

    Image076

    After going around 3 or 4 times, your lowest point should look something like this.

    Image077

    Quit Sapphire...

    Image078

    ...and save the project.

Export the final heightmap

    With the heightfield in the L3DT window, select the menu
    File > Export > Export active map layer...

    Image022

    In the Export map box, click the drop down arrow and set the File format to RAW.

    Image023

    Click the Options box.

    Image079

    The top 3 settings are going to be changed.

    Image080

    **IMPORTANT**

    Double click Mode (combosel) and select the 16-bit unsigned (manual scale) option.

    Double click ManualScale (float) and enter the value 0.114

    Double click InvertY (bool) if it is set to true. It will then change to false.

    Click OK

    Give the file a name and save it in your TESAnnwyn folder.

Creating the plugin file with TESAnnwyn

    TESAnnwyn is a command line based utility that requires data for certain switches and then produces a plugin for Skyrim. We have to supply the required data.

    The switches are
    • -i : This is the game that the plugin is for
    • -w : This is the name that you want your worldspace to be called
    • -p : This is the picture (image) type. 1 for RAW. 2 for BMP
    • -b : This is the bit depth of the image
    • -d : This is the dimensions of the image
    • -x : This is the furthest left cell (x coordinate)
    • -y : This is the lowest cell (y coordinate)
    • -h : This is the lowest point (sea depth) of the worldspace
    Followed by the name of your RAW heightmap.

    If you have followed this tutorial, then there are 3 switches that will always have the same values for all subsequent maps created, -p, -b and -h.

    -p will always = 1 : RAW image type.
    -b will always = 16 : 16-bit colour depth.
    -h will always = -8192 : -117.04m (lowest point at the end of the heightfield tutorial)

    Let's look at the other settings.
    Some of these settings will vary, to suit the size of your heightmap.

    -i for this tutorial, the game is Skyrim. TESAnnwyn can be used to make plugins for other TES games as well.

    -w whatever you want your new land to be named.

    -d enter the dimensions of your RAW image file in the format 1024x1024 (no spaces)

    -x this can be determined by dividing the x size of your heightmap by 32 and then half the result. Example: if the map is 5120x5120 pixels, then the -x value will be half of (5120 / 32), which is half of 160 = 80. Put a minus sign in front because it's the furthest left cell (negative value).

    -y same as above. This will always be the same as the -x value on a square map.

    Before you start, make sure that the RAW heightmap is in the same folder as TESAnnwyn.exe

    Double click the CommandConsole icon.

    Type the command tesannwyn followed by a space. Now type one switch at a time followed by a space and then the data for that switch. Type a space after the data and continue on to the next switch. Work your way down the switches in the list above.

    For this tutorial, the typed command was

    tesannwyn -i Skyrim -w Tutorial -p 1 -b 16 -d 7168x7168 -x -112 -y -112 -h -8192 Tutorial_Island_7168.raw

    Hit the Enter key.

    Image081

    When completed, you should see the following, or something similar.

    Image082

    Your plugin file will now have been created in it will be in the TESannwyn folder.
    The file will be named tesannwyn.esp. Rename the file to Yourmod.esp and copy it over to your ...Skyrim\Data\ folder. Keep a copy in the Tesannwyn folder. We will need this later to create a map of the worldspace.

    The great thing about L3DT is the heightmap it produces for TESAnnwyn. It really is a WYSIWYG editor. What you see in Sapphire is exactly what you get in Skyrim. There's no messing about with different heights and landscape scales on the command line.


    **Note**
    If some of your mountains are very steep, TESannwyn will try to correct these and you may get some underflow and / or overflow errors. Usually these are OK, but if you see a lot of landscape tears in your worldspace, you will have to open up the heightmap in L3DT again and reduce the highest point of the land. This will flatten things out a little.

    You could even try leaving thing as they are, but increase the horizontal scale a little (i.e. from 1.82882 to 2.3 or 2.5). This will also make steep cliffs a little less steep.

Adding Skyrim.esm as a master file

    This section shows you how to prepare your plugin for use in the CK. I'll add Skyrim.esm and Update.esm as required masters for my plugin. Adding additional master files is beyond the scope
    of this tutorial.

    If we were to open it in the CK, it would have no master files associated with it.
    We have to add these manually with TES5Edit (sometimes referred to as TESVedit).

    Start TES5Edit and select your plugin. Select Skyrim.esm (essential) and Update.esm (optional).

    Image083


    Click OK

    After a short while, your plugin will load. In the right hand window, you will notice that your plugin has several thousand warning messages.

    Image084


    This is fine. We will use the CK to 'clean' the cell data later on.

    In the left window, expand your .esp (click the + sign) and then expand Worldspace. Click on the ID number to highlight it, and the right hand window will populate with details about your worldspace.

    In the right window, find the reference DNAM - Land Data and right click in the box on the right hand side of it. Select Add.

    Image085

    You will get a warning box. After a few seconds, you'll be able to click the green arrow.

    The DNAM - Land Data will populate.

    Image086


    The CK will set the Default Land Height to 2048 if no data is present. We would have to change it back to zero. This saves having to change it in the CK later.

    Repeat this for NAM4 - LOD Water Height (above DNAM - Land Data)

    Image087


    This will also populate.

    Image088


    Scroll down the right hand window and find the references to

    TNAM - HD LOD Diffuse Texture

    and

    UNAM - HD LOD Normal Texture

    Repeat as above (right click > Add). No data will be populated into the box.
    We have to add this data manually. Do this for both TNAM and UNAM

    Right click in the box next to TNAM - HD LOD Diffuse Texture and select Edit In the box that appears, enter Textures\Landscape\mountains\mountainslab02.dds

    Right click in the box next to UNAM - HD LOD Normal Texture and select Edit In the box that appears, enter Textures\Landscape\mountains\mountainslab02_n.dds

    Image089


    The next thing to do is add the master files.

    In the left hand window, right click on your plugin and select Add Masters

    Image090


    In the box that appears, tick Skyrim.esm and Update.esm (optional)

    Image091


    Click OK

    To save changes, just exit the program (click the X in top right corner).

    Click OK in the box that appears and your plugin is saved.

Creating a master file (.esm)

    If your heightmap is 4096 x 4096 or bigger, then your plugin is going to be too big to be loaded into the Creation Kit.

    The plugin file (.esp) will have to be converted to a master file (.esm). Even a 3072 x 3072 worldspace will eventually have to be changed into a master file.

    There are a few ways of doing this.

    I use the Creation Kit to change the plugin file into a master file.

    The first thing we need to do is change the file extension from .esp to .esm

    When this is done, load up the Creation Kit and select File > Data.

    Double click your plugin file to put a X at its name. You will notice that the Status still states
    that it's a Plugin File.

    Image092

    The Created By and Summary boxes are still editable. There is no need to change anything in the Created By box. This will change to Bethesda Game Studios automatically when it becomes a master file.

    Write a brief description in the Summary box. This information will be saved when the plugin is changed into a master file.

    Image093

    Now double click Skyrim.esm to put a X at its name. You will see that the Status of your plugin changes instantly to Master File.

    Your master file has now been created.

    Image094

    If you now click on your newly created master, you'll see that the Created By and Summary boxes are no longer editable.

    Your short description is retained in the Summary box.

    Image095

    To make and save edits to the master file, you have to set up Version Control. This is very easy to do. Details can be found in the Creation Kit Wiki

    If you have problems, just ask for help on the Creation Kit Forum or the Nexus Forum - Mod Talk.

    Dark Creations also has a large Forum post about Version Control problems -
    Dark Creations - CK Version control - discussion

    If you're making a smaller worldspace, you probably won't require Version Control.

Cleaning the cell data

    At this point, I'm going to assume that if your worldspace is 4096 x 4096 or above, and that you have Version Control up and running. Don't forget to create the bit arrays for Skyrim.esm, Update.esm and Yourmod.esm

    The following applies to all sized worldspaces.

    When we added the master files to the plugin, TES5Edit gave several thousand warning messages. Although these are probably harmless, it's better to be safe that sorry. I've no idea what these warnings refer to, or what harm they may cause, but it's a by-product of using Tesannwyn.

    Since writing this tutorial, I have been told by Zilav (TES5edit team) that the errors will not affect your plugin. It's up to yourself if you want to clean them.

    Here's the instructions that will make the CK to clean the cells for us.

    Load your master (or plugin) into the CK and select the menu World > Regions. This will open the Region Editor.

    From the drop down box in the top left, select your worldspace.

    In the list below the worldspace name, right click on any of the pre-defined regions and select
    New Region.

    Image096


    Scroll down the list and find the newly created region. It will have an asterisk * next to it's name.

    Change the region name to Border and tick the boxes No Color and Border Region. Click Apply.

    Move the mouse pointer into the large grid area and your mouse pointer will change to a large + sign.

    Zoom out using the mouse scroll wheel. Place the mouse pointer in the bottom left corner. Press and hold down the scroll wheel button while moving the mouse to the top right. Repeat this until you find the corner of your map.

    Zoom in and left click in the corner square. This will place a red X in the square.

    Image097

    Zoom out and drag the grid to the bottom right square. Left click again.

    Another X appears. You'll notice this time, a red line has been drawn from the first X.

    Image098

    **Note**
    Before we make the next point, there are a few things to take into consideration. Mainly what operating system you use (32 bit or 64 bit) and how much RAM you have.

    If your worldspace is smaller than 4096 x 4096, then it's probably safe to complete the whole border area. However if your worldspace is larger and you have a 32 bit operating system with 3GB RAM or less, your success may vary.

    In this scenario, it might be better to do this in two halves. To do this, go up until you find y axis -1 and make the third X. Then drag the grid until you can see the left edge of the map (staying on y axis -1) and make the forth X. Once the region is saved delete it and start again for the top half of the map (starting at y axis 0 (zero).

    Uncharted territory I'm afraid. Try it to see what happens. If the CK hangs, then doing this in two parts may be your only option.


    Drag the grid all the way down until you see the top of the map. Place your third X in the top right corner square. Then drag the grid to the right until you see the top left corner square. Place your forth X in the top left corner square.

    When the forth X has been placed, right click in the grid area and select Done.

    Image099

    The CK will complete the forth line automatically.

    If your using an .esp file, this will be completed very quickly. If you're using a master file with Version Control, be aware that this can take a very long time.

    You have tens of thousands of cells that have to be checked out and the bit array files haves to be updated. Your hard drive activity LED will continue flashing all through this process as the bit array file get written to.

    Once you merge the saved .esp to the master .esm, the errors will no longer appear in TES5Edit.

    You'll be happy to know that once this has been done, you can delete the Border region and go through the whole process again when setting up the real border :-)

    Keep it until you're ready to set up the real border of your lands, otherwise your LOD will have a blank cell at 0,0 (little tip).

    **Note**
    For tips on how to set up a large worldspace border, see the Tips n' Tricks page

Finishing off

    I hope you've found this tutorial instructive. There's enough information here to get you up and running. L3DT has a lot more tools and options that can be used, but I think the basics have been covered in this tutorial.

    I'll finish up with a few screen shots of what the Tutorial island looks like in the CK.

    The north point of separation before LOD creation.

    Image100

    The full map after LOD creation. Screen shot above is the red box area below.

    Image101

    The next screen shot, shows what can be achieved after regions have been set up.
    Using TES5Edit, I copied this texture region over from another esm that I'd done about a year ago.

    I may do a tutorial on this at a later date.

    Image102

    Happy world building

    Tamb0