Category Archives: World Machine Development News

Development News concerning World Machine

Build 3026

Build 3026 is making progress and should be released in the next week or two; it will likely also be the ‘Alpine Lakes’ release channel version.

Erosion now plays nicely with river systems, bugs have been squashed, and the ability to pin/edit the headwaters of your rivers introduced. But along the way, I encountered a problem.

A difficult choice

I ran into a quandary while implementing the “pinned channel heads” option for the Create Water device.

In order for you to “drop a pin” where you want a river to start, you use the Layout View to place/move the pins. But Create Water works quite poorly in Layout View! It’s very confusing/hard to see where your river will actually run.

Retiring the Layout View (eventually)

This is yet another example of the problems that Layout View have caused over the years. As time goes on, I’ve become increasingly certain that the Layout View functionality should become a “mode” of the 3D View instead of being its own very unique display.

There are a variety of reasons for this:

  • It would be very useful to be able to use the 3D View and its pan/zoom/track ability when creating masks, shapes, etc.
  • The great strength of the Layout View is that it supports viewing infinite terrain extents. In practice though, wanting infinite pan/zoom ability is rare; you’re mostly working on the area defined by your render extents.
  • The technique needed to render a realtime infinite viewing area means that devices like Erosion, etc sometimes look nothing like what they will in the actual world you’ve created!
  • Going forward, our focus will continue to double down on simulating nature; more and more new devices will be introduced that are problematic with Layout View.

However, this is a big change that we want to do properly, in concert with some other features later this year or next. But in the interim, we need something to hold us over until that changes. What to do?

Solution: “Focus Extents” mode

The Layout View now has a “Focus Extents” toggle. When enabled, the Layout View switches from the infinite-extents display to showing only what the current preview does.

This lets you see the true output of your world with no artifacts. Not only does this make devices like Create Water much easier to manipulate, but it also is much faster and more pleasing to work in.

Here’s a video showing it in action:

That’s all for now. Next time 3026 should be out and I’ll go over the full set of changes, as well as finally get a chance to talk about what comes after that!

Friday update

Happy friday everyone! Here’s a bit about what’s in progress here at WM.

I’m going to talk first about some updates to Alpine Lakes that are coming down the pipe.

Thank you for everyone who wrote in with any issues they ran into with build 3025! I think most of the license-related hiccups are out of the way now, and build 3026 is intended to both fix some issues discovered in 3025 and also bring some improvements along for the ride. We’ve also continued to slowly flesh out the documentation on the new devices; we still need to write an overall “guide to water” however.

A few hints and tips for water

Here’s a few tips from the upcoming guide to water:

Always re-structure before creating water

If you ever run into issues with tiny pocket lakes appearing when you create water, 99.9% of the time the problem is you haven’t restructured the terrain for flow.

Flow Restructure is useful in many different situations which is why it is a separate device, but you will almost always want to use a Flow Restructure device directly before Create Water!

Always flow before water!

Modifying your terrain after a flow restructure device will, with few exceptions, break up the carefully created height differences that allow the terrain to drain properly.

Don’t hesitate to use Flow Restructure multiple times in your network! It’s very useful early to help set the overall elevations of your world. But remember to re-apply it right before creating water, unless you have a good reason not to! (*reasons include: creating intentional lakes)

Next let’s talk about some of the upcoming improvements. Build 3026 isn’t available yet, but hopefully in the next few weeks. It contains a number of bugfixes, but also some larger new features.

Here’s some of the bigger items:

Water Mesh Output

You can now simply wire the water datatype into the mesh output to export your geometry. Easy peasy. The Water Output macro is still useful when you want the flowmaps as well.

Water and Erosion

River networks have a unique property in real life. Rivers are prescribed by terrain, but also profoundly shape it. This kind of emergent, positive-feedback effect can be tricky to control. And there’s no single solution – sometimes we want to guide things exactly, and other times to let nature take its course.

One solution is to capture some of that feedback by applying erosion to the terrain, adding rivers, then continue eroding into the new river system. One geology text refers to rivers as “endless conveyor belts” that carry away sediment from your hillslopes, which I think is a really illuminating concept! Imagine heaps of sediment carried into your river channels and being swept out to sea…

So given that, we definitely want to support erosion post-water. However, in 3025 that doesn’t always work. First of all, it’s a bit annoying to setup the network needed – you have to extract the river mask, invert it, feed it into the erosion device.

Then even when masking, if you really crank up the erosion you run into major problems where the terrain is eroded right out from beneath your rivers and streams. Witness this sequence.

We start out with a basic eroded terrain that has water applied:

Erode-Create Water works fine

And everything is fine. But let’s say we want to erode the terrain more into our rivers. Then we run into problems:

Dangling cliff-side stream: Where did my terrain go? guys??

Given the unique way that rivers and erosion complement each other, this should be a “golden path” where it just works. Now it does. Just feed the water data into any erosion device:

and no more floating streams:

The cliffs around the stream is preserved

Even with quite extreme erosion we now can be confident that the terrain won’t be ripped out from underneath/around the river network.

Eventually it would be useful to have an option to allow erosion to co-evolve the terrain and water systems in tandem… but that’s for another day 🙂

Click and Flow Rivers

Create Water has been carefully constructed to be scale-invariant; all other things being equal, the river networks should appear in stable locations no matter what resolution you build at.

However, all other things are not equal. As reader Pratyaksh wrote in the other day, sometimes this doesn’t seem to be true. What’s happening? Two problems:

  • Sometimes the underlying terrain itself is changing! This happens when other devices are not scale invariant. This is often the case with erosion, etc, where the result when building at higher res can be quite different.
  • The scale-invariance only holds for convergent terrain. Convergent terrain simply means that water tends to combine rather than thin out as it runs downhill. This is usually true; but when water spreads out running down a cone-like surface, for example, it is not.

What’s the solution? 3026 will let you pin the headwaters of the rivers in place according to the current terrain. The rivers will still flow naturally when built, but they will only spawn where indicated.

This functionality is only one step removed from “semi-automatic” click-and-flow rivers, so I went ahead and implemented that too 🙂 Now you can simply use the Layout View and click to spawn a river; you can move around or delete the headwaters to control your river network. The UI is not great for this right now, but that’s the subject of a whole other post…

This is the final piece of the continuum of control over rivers. You can now:

  • Create fully manual rivers that impose themselves into the terrain around them using the river device
  • Create semi-automatic rivers that are placed by you but flow naturally
  • Create fully automatic rivers that are placed and flow according to nature

Long term, the goal is to make these options integrate more tightly; automatic rivers should have GCS channel character for example, and I’d like to be able to promote/demote between manual and semi-automatic; so you can easily customize as much or as little of a river as you’d like. But that’s for another release…

… and that’s all for now. Until next friday!

After the Storm

GDC was a whirlwind! It was great to meet a lot of longtime World Machine users and put some faces to names, as well as connect with new folks. I got a lot of great feedback about what people are hoping to get out of their terrain software.

This week has been a slow return to normal. I’m making small tweaks and fixes to ‘Alpine Lakes’, including tracking down some issues that have affected a couple folks activating with the new license manager.

Have you gotten a chance to play with 3025 yet?

Encounter any issues, or have anything not work the way you want/expect? I’d love to continue polishing the new features before they drop to Release. Email me with your thoughts, or post to the comments here.

For example, a few small improvements that are in-progress include:

  • We forgot to package the Water Output macro with the initial release. Oops! You can get it here for now if you’re missing it.
  • Allow the Erosion and Thermal Erosion devices to accept water in their sediment removal inputs
  • Improve erosion’s ability to treat areas masked by water as permanent (stay at the input height)
  • Have Mesh Output accept the water datatype and just Do the Right Thing for export.

There’s going to be a lot of continued iteration in the future on the new features exposed in Alpine Lakes. Expect a followup build 3026 once some of the above issues are ironed out and more feedback is incorporated.

Simultaneously, the Help Center should continue a slow march towards full documentation of all the new devices and features. It takes a lot of work to write good docs, but I’ll do my best.

Until next time!