All posts by Stephen

Founder of World Machine

Build 3019 ‘Mailbox Peak’ available to all

Just a quick update for what’s been happening here.

Build 3019 is available on the Release Channel as well as the Dev Channel. It is mostly similar to 3018 but contains a number of cleanups and bugfixes.. The full changelist is available on the Update Center. It is also now the version available to Basic Edition users, finally bringing all WM users up to date with the changes from the last couple years. No longer will Basic Edition customers be stuck running 2.3.7!

Speaking of which, the website has also been refreshed to be simpler, cleaner, and more modern, as it had gotten woefully out of date. A few things still need to be added back; Instead of hard-coding them, I’m hoping to introduce a Wiki to use for authoring documentation, which will help keep especially things like workflows to 3rd party applications up to date.

Finally, the installers for World Machine are now code-signed, eliminating the ominous “Unknown Publisher” warnings that Windows issued previously.

So, what’s next? Here’s what’s on tap for the immediate future:

Release Channel

The next build or two of World Machine will be focused mostly on cleaning up bugs and issues discovered in the latest builds.

Keep contributing your crash reports, as they are a major help in stamping out serious issues! I’m also looking at adding some small scale improvements sometime in the next build or two, such as:

  • Tweaks to how the Slope Selector functions
  • A new “Copy/Paste Device Settings” command, that lets you copy settings from one device to another while preserving the destinations network connections.

Dev Channel

We’re looking at approximately an April time frame for the next feature release.

After some reflection, the approach that we’re going to follow this year is to group changes such that each major feature release (those that get a new codename) will be related in some way. This makes communication much easier than when the changes are scattered about to a dozen systems at a time.

I’m excited for what will be coming: Among other things, it involves some of the experimental work from 2016 finally reaching fruition. More to come on this as we get closer 🙂

Build 3018.. What’s in a Name?

Build 3018 should be available tonight, and it will mark a significant milestone for World Machine…. without even considering what it contains!

Specifically,  3018 will become the basis for the next Release Channel build.  Although it’s natural to think of this as “World Machine 3”, we’re moving away from Big Number Releases entirely. In a world where quarterly+ dev channel feature releases and constant improvements are happening to World Machine, Big Number releases simply lose their meaning (unless you like Mozilla-style versions like ‘Firefox 53’…I sure don’t.)

Instead, World Machine will simply be branded as…

World Machine.

Whatever build number it may be.

Of course, some releases are still much more important than others, and it’s helpful to have a way to refer to them. Following in the footprints of Apple, Intel, and others, when a World Machine build contains major new features it will also receive a build name. We’re adopting a whimsical but appropriate version naming system; the build names will be notable mountains or natural features in the Pacific Northwest part of the US, my home.

And so, I introduce to you:

Build 3018 ‘Mailbox Peak’

The actual Mailbox Peak, midwinter.

Mailbox Peak is a local mountain near to Seattle that is beautiful in its own right, but serves especially as notorious training for mountaineers aspiring to larger summits. It’s a fitting name for this build…

Which more than anything, is about getting faster.

Let’s talk about:

  1. Speed
  2. UI Improvements
  3. New Coastal Erosion Device
  4. Many small changes

Speed

Build 3018’s primary focus is improving build speed for large worlds on modern, many-cored machines.

The subtext here is that I finally updated my 2012-era dev workstation to a modern, high performance machine — one of AMD’s new Threadripper processors. This thing is a beast, with 16/32 cores available, and it was immediately obvious that World Machine was not always putting such parallelism to work. So I set about to change that. You’ll certainly still notice the benefits even on more humble workstations.

Here’s a performance comparison on a selection of example worlds between 3017 and 3018:

Build 3018 is faster across the board, even where 3017 already did quite well. In certainly very common cases, it’s dramatically faster.

As you can see from the above, not only does 3018 bring sometimes-dramatic improvements in speed, but World Machine now scales quite well to high core count machines. Individual easily-scaled devices like Noise show completely linear improvement, while entire world builds aren’t that far behind.

How?

Multicore everything

Virtually all* devices are now multithreaded. Many of these are relatively fast devices like the Combiner that on smaller worlds have a negligible effect. Nonetheless, when building large worlds, speeding up these common devices shaves seconds-to-minutes off the build times.

For completeness, the following devices received multithreading support:

Coastal Erosion, Equalizer, Clamp, Height Curves, Height Select, Slope Select, Select Convexity, Select Aspect, Select Hue, Combiner, Chooser , Channel Combiner, Channel Splitter, Circular Gradient, Constant Height, Constant Color, Height Combiner, Height Splitter, Normal Maker, Splat Converter, Local Placer, Local Scatter, File Input.

*The only remaining 1x devices are essentially just the parameter devices and the Tiled File Input device, which has a separate set of improvements in progress that needed to be coordinated with. That will happen later…

Optimized Implementations

Some optimizations have been made to the Erosion, Advanced Perlin, Snow, and Layout Generator devices. In addition, many internal core operations including mesh creation, grid resizing,  etc now use all processor resources.

In particular, the Layout Generator device benefits, now being able to use all threads to build a single shape whereas before each shape was only built by a single thread. In worlds that heavily use layout shapes, this will be a massive speed win.

New Compiler

World Machine has finally been moved to a modern compiler — Visual Studio 2017. This brings with it improved optimizations that on their own improve performance between 0-15%. It should also make writing plugins easier, as the old compiler was difficult to get a hold of these days.

 

 

This alone would be enough to merit a new release.

But.. there’s more.

Workview Improvements + Dark-theme

The workview has gained many small tweaks, most notably a new “dark” color scheme.

If you don’t like dark colors, you can switch back to the old default light scheme in program options. Due to the old framework that WM is built on, full dark throughout the UI will have to wait, but all of the OpenGL viewports use the new color scheme.

Also, a new option for wirecolor-by-group has been added. Just like the dark scheme, you can switch back to color-by-type if you’d like, but I think you’ll find that it’s very helpful to be able to color a set of wires according to a purpose.

In addition, various other bits of the workview UI large and small have been tweaked, including:

  • Improved grid/snap behavior — this is actually quite helpful as you can finally consistently line devices and groups up properly.
  • New “Snap All to Grid” to fix old worlds 😉 and for those who don’t use a grid normally.
  • Some improvements to wire routing, highlighting
  • Removed device deletion warning thanks to having Undo now
  • Pan using arrow keys in Device View
  • Default left-mouse drag action is now panning instead of box-select (use shift or ctrl for that)

In general, I spent some time revisiting the Device Workview to try to make its operation more understandable for new users.

New Coastal Erosion Device

The Coastal Erosion device has been improved for 3018. Although operating on essentially the same principles as the previous version (mostly based on modifying height curves appropriately), you’ll find it that it creates more pleasing results as well as being easier to understand and use.

The main goals here were:

  • Simplify the parameters, as many of the old ones were not obvious how to best manipulate together
  • Create higher quality output, in particular the way that terrain above waterlevel was affected.
  • Fix problems that made masks output from the old device hard to work with

Pursuing the first goal, the number of parameters was reduced to the essentials:

While hopefully the first image shows the kinds of results that you can now more easily achieve!

Smaller Things

Finally, a number of things large and small  have been tweaked:

  • Build Estimator lower bound improved
  • River Device goes directly to layout view
  • Entering river/layout devices scrolls to the render extents
  • Left-side preview says what device is being displayed
  • Checkpoint device now auto-names from the input names if nothing else is provided
  • Height Curve now lets you specify that it affects only a certain height range. This is incredibly useful! In addition, you can fade the curve effect.
  • Height Selector falloff is now specified in meters
  • 3D View now uses anisotropic filtering for improved graphics quality, and is smoother and more responsive
  • Build Statistics now update faster
  • Bugfixes, including “Disable group instead of device” and “3D View doesn’t update when view is frozen”

 

Build 3018 will go live tonight, hopefully.

The Release Channel version will follow along as quickly as I can make happen — it will contain reworked examples, etc, as it will also become the default choice for new Basic Edition downloads, and that will take some time. And then the WM website in general is getting a refresh to go with it. So there’s lots happening, but Dev Channel people get the action first!

 

Build 3017

Build 3017 is now live on the Dev Channel, with the full changelog posted on the update center.

The primary focus of this release was continued improvements to the River device, with special focus on making the UI and controls more intuitive to use. Although still certainly not perfect, this release is a major step forward.

Of course, there are several additional very useful changes in 3017, including the life-saving “Estimate build time” command in the World Setup dialog, but the focus was on the River device.


The first thing you’ll notice is that the rivers are displayed more intuitively; the flow direction is indicated by chevrons on the path, including marching flow direction if you don’t have a GCS overlay selected.

 

And although it’s hard to show in a static image, the behavior and defaults are now much closer to what an artist might expect, while still preserving the specificity that was possible before.

For example, if you just take the default WM world, drop a river device onto the output of the noise generator, and then click “Add Reach” within the river device and sketch a river, you’ll get this:

Which may not be especially pretty, but is probably a much closer match to what you were hoping to produce than the previous versions!

The main things that have been improved are:

  1. General UI behavior and display
  2. Elevations can now be manipulated much more easily: You can still manually specify a datum and slope as before, but you can also have the reach elevations be set automatically from the terrain (the new default). The river will be placed below the terrain elevation a distance specified by the valley height
  3. The reach valley walls are now improved and include both a fractal breakup and also control of the valley shape, allowing you to achieve both U and V shaped valleys.
  4. The behavior of child reaches is improved, both in the display blending between them and also the way they get their elevations from both the terrain and their parent.

There are still some issues with the River device, and it is currently flagged “Experimental” within WM, a new status for 3017 and beyond. Experimental devices are those that have notable issues that remain to be resolved, or expect to have their interface changed, but are too powerful to let them not be included.

I’ll end with a larger view at one of the new example files included, modeled very loosely after the Grand Canyon area. What’s awesome is that if you play with this example, you can easily add tributaries and extend the river with almost no additional work, while getting results like the below:
I don’t know about you, but that’s pretty compelling to me!


Lastly, I wanted to mention that this release is also going to lead into a major milestone — All of the features of the Dev build are going to be synced to the Release build soon.

Compared to WM 2.3.7, The current dev build is incredibly feature rich and advanced by this point. It was never intended to get quite so far ahead in the first place.  A variety of circumstances conspired including an unclear conception and policy on my part on deciding how perfect a feature needed to be to be Release-channel-worthy.

The result, among others, has been that new users of World Machine have been completely kept in the dark about all of the advancements over the last several years until they by chance read about or try the Dev channel.

There’s a lot more I could say about updating the release channel but I’ll keep this short for now. Briefly, the next steps  are going through reviewing, packaging, and revising examples, macros, and blueprints for all of the new features in preparation for updating the Release channel (including the Basic Edition). This shouldn’t take long.. keep your eyes peeled in the immediate future!