Questions about further additions to terrain generation

Discuss Daggerfall Unity and Daggerfall Tools for Unity.
User avatar
username
Posts: 80
Joined: Sat Apr 22, 2017 12:29 am

Questions about further additions to terrain generation

Post by username » Tue Aug 29, 2017 6:05 am

I have looked through the roadmap but I couldn't seem to find anything on the subject, my main question is; are you planning to change anything about the terrain generation? And, if so will you be:

-adding in the random puddles from classic

-adding in the separate "rocky" climate region for/near the ocean from classic

-changing the amount of random noise in any way

-getting rid of those square that appear on the shoreline when a location is near to the water

-removing the angled water that appears towards the edges of lakes/oceans when they are by a slope

Any answers would be appreciated :)

Edit:I don't know if it's on purpose or not but on the dfworkshop homepage the link to the "Daggerfall Unity" subreddit actually links to the "Daggerfall Tools For Unity" subreddit
Check out my patch to remove nudity, it's a WIP but it's coming along quite nicely.

User avatar
Interkarma
Posts: 3192
Joined: Sun Mar 22, 2015 1:51 am

Re: Questions about further additions to terrain generation

Post by Interkarma » Tue Aug 29, 2017 7:32 am

I personally have no plans at this time to make any further changes to default terrain system. My focus is 100% on gameplay systems and bug fixes for the foreseeable future.

But keep in mind the terrain system is moddable and you can plug in entirely new terrain samplers. For example, Nystul's mod both replaces the default sampler and extends it with a distant terrain renderer. It would be just as possible for someone to write a more classic-styled (flat and noisy) terrain system and distribute as a mod.

It's simply not possible to keep everyone happy all the time. if I tried to do that, I'd never get anything done. That's why this stuff is open source and moddable. :)

Edit: Have updated link, thanks for that.

User avatar
username
Posts: 80
Joined: Sat Apr 22, 2017 12:29 am

Re: Questions about further additions to terrain generation

Post by username » Wed Aug 30, 2017 12:36 am

Thanks for the reply. That's kind of a shame though, I guess I'll just have to hope Nystul does something :cry:...
Check out my patch to remove nudity, it's a WIP but it's coming along quite nicely.

User avatar
Nystul
Posts: 1122
Joined: Mon Mar 23, 2015 8:31 am

Re: Questions about further additions to terrain generation

Post by Nystul » Wed Aug 30, 2017 9:54 am

I can't promise anything. Maybe I might spend some time in the future AFTER daggerfall unity has reached version 1.0 with all core systems in place ;)

User avatar
username
Posts: 80
Joined: Sat Apr 22, 2017 12:29 am

Re: Questions about further additions to terrain generation

Post by username » Thu Aug 31, 2017 1:01 am

Nystul wrote:I can't promise anything. Maybe I might spend some time in the future AFTER daggerfall unity has reached version 1.0 with all core systems in place ;)
It would be awesome if you did :D, but no pressure.
Check out my patch to remove nudity, it's a WIP but it's coming along quite nicely.

Daggerfool
Posts: 1
Joined: Sun Oct 22, 2017 5:35 am

Re: Questions about further additions to terrain generation

Post by Daggerfool » Sun Oct 22, 2017 5:51 am

it's very interesting to me what is real size of original Daggerfall map and the way it's stored on disk. I tried to google, but different sites said different things: first opinion is that only locations are stored, but heightmap between locations is generated procedurally during game, so new landscape will be every time player goes at some point; second opinion is that all terrain was once generated and stored with other game data. I played and figured out that sprites of rocks/plants have random postitons and number. What about heightmap ? What is actual size in km ? How does it store on disk ? How many bits per terrain vertex ? What about terrain texture ? Is map random or just good compressed ?

User avatar
Interkarma
Posts: 3192
Joined: Sun Mar 22, 2015 1:51 am

Re: Questions about further additions to terrain generation

Post by Interkarma » Sun Oct 22, 2017 7:16 am

Welcome to the forums Daggerfool. :)

Here's a high-level overview of how world is stored on disk and handled at runtime:
  • There are 1000x500 world cells. Each world cell corresponds to a single pixel on three 1000x500 byte maps. These maps describe elevation, climate, and political alignment.
  • Each world cell is 32768x32768 inches, or about 832m2. This means the overall terrain area is around 832km x 416km, approximately half of which is water.
  • Each world cell can have up to 1 location. The largest locations (e.g. Daggerfall, Wayrest, Sentinel) fill nearly the entire cell.
  • Daggerfall (and DFUnity) only draw the world cell the player is standing in, plus the surrounding world cells out to max draw distance. If a location is present, the terrain is flattened out and locations positioned inside the world cell.
  • DFUnity uses a special terrain sampler to generate a local heightmap inside each world cell of 129x129 sample points. A combination of perlin noise and filtering is used to create smooth, consistent terrain chunks. You can read the blog posts on this here: part1; part2; part3;
  • DFUnity seeds noise and foliage systems from terrain coordinates so the elevations and foliage placement remains constant, unlike classic.
  • DFUnity uses multiple coordinate systems. The player's GPS tracks everything in classic Daggerfall units (inches) while the local scene view operates in Unity units (metres). There's a floating origin system that keeps actual world close to 0,0,0 to avoid the precision problems found in large worlds. If player runs too far in one direction, the whole world shifts back towards origin. The player doesn't see this happen, to their eyes they are running continuously through the wilderness.
  • As player moves through world, old terrain chunks are returned to a pool and placed back in front of player with new local heightmap.
  • Terrains and location objects use a variety of performance optimisations such as pooling and recycling to keep load times short and reduce as much visible skipping on boundaries as possible. This works quite well in default setup, but YMMV depending on speed of your computer - especially when mods are involved.

Al-Khwarizmi
Posts: 106
Joined: Sun Mar 22, 2015 9:52 am

Re: Questions about further additions to terrain generation

Post by Al-Khwarizmi » Sun Oct 22, 2017 8:25 am

Just a little nitpick: a square of 32768x32768 inches is a square of around 832.3x832.3 m, but in units of surface that's 692 723 m2 (or 1 073 741 824 square inches), not 832 m2.

User avatar
Interkarma
Posts: 3192
Joined: Sun Mar 22, 2015 1:51 am

Re: Questions about further additions to terrain generation

Post by Interkarma » Sun Oct 22, 2017 8:46 am

832m2 means metres squared, shorthand for 832x832. This is different to the product which is 692,224sqm (square metres). I also dropped the decimal places intentionally as I was trying to keep numbers small and concepts informal. But nevermind, your nitpick is fine. :)

BadLuckBurt
Posts: 4
Joined: Sun Nov 05, 2017 8:30 pm

Re: Questions about further additions to terrain generation

Post by BadLuckBurt » Sun Nov 05, 2017 9:04 pm

Hi,

I've been messing around with the 1000x500 heightfield in L3DT. You're probably familiar with the FiryWoods and WLDthing tools, I extracted the map using that. One of those tools also puts out a 1000x500 noise map (8-bit unfortunately) and I merged the heightmap with the noise using Darken in Photoshop. The result is quite interesting I think, this is the lightmap:

Image

I think the stepped mountains are the result of darkening with an 8-bit image, the lower regions seem to have finer relief after the same operation. I plan to do an experiment with the 5000x2500 maps soon once I figure out how I'm going to do it. I think the gridbands in those images are interpolated using the 3x3 pixels so I wonder what it'll look like when I replace the gridbands with interpolated values.

I also believe the 1000x500 heightmap was used to generate the overworld map which is 220x110. I resized it to 1000x500, overlayed the lightmap and ended up with a near perfect match.

One thing I've been wondering about since no-one seems to mention it anywhere: what is the heightrange supposed to be? Playing with the vertical scale in L3DT, it appears to be somewhere between 4096 and 8192 meters, 6184 looks kinda nice but that's definitely not how it's rendered in Daggerfall itself.

Post Reply