About Store Forum Documentation Contact

Post Reply 
[Tutorial] - How to make insanly huge worlds using L3DT
Author Message
Demi Offline

Post: #1
[Tutorial] - How to make insanly huge worlds using L3DT
Hi everyone,

It seems that there is no real methodology established in building insanely large world in Esenthel so I will cover one possible way by using L3DT.

The following is a study of how I got L3DT to mosaic tile a world. This method can be used to make worlds in excess of 16 giga-pixels so be aware it is not for the weak developer. smile

Because of this method I find hand painting such world to be very time consuming and a method is needed to be able to mask the terrain with foliage, tress, rocks and texture materials. Procedural generation of model placement is almost a MUST have when building such a large world also. No engine exists that can do all these things so making such a world is beyond a one man effort and will require a very large team. Having masking is a big step in the right direction so I harp on it a lot here. Pleas make one bit alpha mask capability for this engine. Also please make a selectable curve with height limits so touching up can be much easier. These two things are just a must have when working with this size world.

However, some are inquisitive minds want to know how a terrain of mass size can be placed so I will give you the best method I found that works.

First off I made a terrain at 32,768 x 32,768 (1 giga-pixel) and decided to reduce the size to 8,192 x 8,192 (64 mega-pixels) for this demonstration because it took over 2 hours to put into the engine at 64 mega-pixels.

The finished world size is 256 x 256 (double size intended) blocks at 64 pixels per block so it is a very large world (16,384 x 16,384). Travel time is over an hour to cross the map in an east/west or north/south direction.

By expanding on this technique it will be possible to make worlds exceeding the drive space of most computers. After you have mastered this method the sky is the limit on map size up to 16 giga-pixels in L3DT. That is 1024 blocks (128, 64 or 32 pixels) square by the way and you can multiply that by factors up to 16 if you have the drive space.

OK, here is the method.

Open up L3DT and select new project. Select designable map.

[Image: designmap.jpg]

Click next and select 8192 x 8192. Set horizontal resolution to 10 (DO NOT split this map because mosaic maps take hours to generate) you can select edge wrap if you want. I won’t cover design principles here but making a world requires much work with getting a design right. I will hint that making a edge wrap and reduce the size can allow you to import and join height maps in L3DT to make continents that you can expand on.

[Image: designmap1.jpg]

Select the HF/DM ratio of 16 for a high detailed terrain.

[Image: designmap2.jpg]

Select next. Set the sliders in the shown position so you get a decent looking world.

[Image: designmap3.jpg]

Click next

[Image: designmap4.jpg]

Make sure you only have design map checked and click OK.

You may have to run several tries to get something decent but for this tutorial just take what comes up because in the end your going to have to edit the design map.

This design map was made at 32K pixel with 10 meters per division and resized to 8K. with 40 meters per division to make it easier to make this tutorial. Keep in mind the higher the detail level the larger the terrain you can make.

[Image: designmapfinal.jpg]

Save the project.
Next is to run off the height map which is an 8 hour process.

[Image: heightmap.jpg]

Now that you have a height map save the project again.

Right click on the height map and select export active map layer.

[Image: export1.jpg]

Make sure to split this map and save in a folder.

[Image: export2.jpg]

Click next.

Set the tile size to 4096 and the map file format to PNG then click OK

[Image: export3.jpg]

Save this project and select import heighfield..

[Image: import1.jpg]

Import the heightfield you just exported. and under layers->mosaic-duplicate tile borders if it is not done. In my case I already did this – IMPORTANT STEP.

[Image: tileborders.jpg]

After the tile borders are duplicated, select extensions->growtilesizebyone –> Grow tile size by one. make sure to select PNG format. then save it. – IMPORTANT STEP

Close L3DT and don’t save as you don’t need this anymore since there is no means to place 1 bit alphas in this engine. Again I am going to say, make a means to mask off texture materials by block sizes. It is going to save many hours of hand painting.

Open your file browser and navigate to the folder you saved the world mosaic in. Right click this mmf and select open with. If wordpad is not in the selection list then find it in accessories. Make sure not to change the default program!

[Image: thmmf.jpg]

With the mmf open there are two entries to pay close attention to. The global min altitude and max altitude are critical that they be used exact with all the decimal places to get seamless terrain and you need to divide them by 10 since the horizontal resolution is the factor. In my case this is 40 but I am going to fudge it by a factor of 2 later as for placement in this tutorial it is calculated at 10 meters per division 40/4 x scale factor of 2. Which on the generated map equals 10. The final result is really 20 but this can be any decent number that will keep the height field walkable. The closer you get this to the true resolution the more it is scaled exactly as the design. For engines like Bigworlds this is used to set the texture masks to match the physics of the world.

[Image: thmmf1.jpg]

Open Esenthel. Click on world editor and select import heightfield. Make sure to use the set tab and target. Enter min y/10 and max y/10 with all the decimal places. Copy these values to calculator and do the math then highlight the values in the editor and press shift insert. Once these numbers are in place they will be used for the entire placement of the four PNG files. Drag and drop the x0y0 file on the image.

This is where you need to do some math. The image is a 4097 x 4097 image that represents 4096 x 4096 pixels. The actual map blocks can be any number but for this tutorial I went with a factor of 2 pixels of terrain is 1 pixel of image. So divide 4096/64 = 64 blocks x 2 (scale factor) = 128 blocks per image. The x0y0 represents the lowest left corner so –127 to 0 blocks is 128 blocks –127,-127 to 0,0 is the setting for this image. x and z are both negative.

[Image: theimport1.jpg]

Select a texture. (in my case I imported the detail image of L3DT for this tutorial). You can use any material but to walk on the terrain you need a material. Click apply.

[Image: theimport1a.jpg]

The second image is x0y1 represents the upper left corner so these values need to be adjusted to compensate for the zero row and column. Here x is negative and z is positive.

[Image: theimport2.jpg]

Click apply.

As you can see almost seamless terrain.

[Image: theimport2a.jpg]

On the next image x1y0, x is positive and z is negative.

[Image: theimport3.jpg]

Last is x1y1 which x and z are positive.

[Image: theimport4.jpg]

The end result of placement is a exact 1.10 scale of the world.

[Image: theimport4a.jpg]

Finally I changed the scale so you can see the total awesomeness of this engine.

[Image: awesome.jpg]

A HD video to see the results.

From Awesomeness to insanity

04-03-2011 04:22 AM
Find all posts by this user Quote this message in a reply
Dandruff Offline

Post: #2
RE: [Tutorial] - How to make insanly huge worlds using L3DT
Wow, i'll be sure to look at this when i have the need to make a world. Bookmarked for now and i love how much care you took in making the screenshots! Really neat and easy to look at. Great tutorial Demi!
04-03-2011 06:03 AM
Find all posts by this user Quote this message in a reply
Truelegend Offline

Post: #3
RE: [Tutorial] - How to make insanly huge worlds using L3DT
Very good tut. More like that please smile
04-03-2011 10:06 AM
Find all posts by this user Quote this message in a reply
Esenthel Offline

Post: #4
RE: [Tutorial] - How to make insanly huge worlds using L3DT
importing materials from material maps will be in next SDK!
04-03-2011 03:13 PM
Find all posts by this user Quote this message in a reply
Demi Offline

Post: #5
RE: [Tutorial] - How to make insanly huge worlds using L3DT
(04-03-2011 03:13 PM)Esenthel Wrote:  importing materials from material maps will be in next SDK!

Oh man. Just super to hear. This changes things big time. Looks like I buy this one to make the MMO. smile

Will be later this summer and means another tutorial. smile

edit: After downloading the new update I just want to say this is really nice feature. Testing it out now and developing a methodology to make world building a snap.

Once there is model placement by masks I would say it is complete. This feature would push Esenthel into a whole new realm of AAA engines.
(This post was last modified: 04-10-2011 04:24 PM by Demi.)
04-03-2011 10:17 PM
Find all posts by this user Quote this message in a reply
Brad_Mclain Offline

Post: #6
RE: [Tutorial] - How to make insanly huge worlds using L3DT
Great tutorial Demi, nice work.
04-05-2011 12:41 AM
Visit this user's website Find all posts by this user Quote this message in a reply
Post Reply