February Roundup

February has been mostly spent sorting out all of the various odds and ends of the major release of last month. Bugs and customer problems have been getting sorted and triage-d, and a lot of kinks have been getting worked out on the new website.

I’m working to better surface the workflows for using World Machine with the various common game engines (Unity, etc), as this is a very common question that we can do a lot better at addressing. Also good news — the Unity splatmap import script is fixed for the latest version of Unity…

I want YOUR workflow

Very soon I’m going to pour some significant dev time into workflow related issues and features, and I’m all ears to hear from all of you.

  • What would make World Machine work better in your production pipeline? Are there file formats, features, etc that you need to make things work, or that would make your life happier?
  • What are the most painful steps when you’re working with terrain you’d really like to be able to avoid?

I can’t promise that I can get to everything that’s brought up… but I’d love to do what I can. Feel free to post in the comments or just email me at stephen@world-machine.com.

Swatting Bugs

The crash dump files that ya’ll have been submitting have been very helpful, so thanks for that!

I’m happy to say that I’ve identified and fixed some of the major crash and usability issues that folks have been running into. Build 3020 will address them. Software will never run out of innovative new ways to fail 😉 but hopefully we can keep things stable and productive the vast majority of the time.

What’s next on the Dev Channel?

The next major new feature release is still roughly on track for an April release. More to come on this later!

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


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.


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!


The latest 'Behind the Scenes' news from Stephen, the author of World Machine