LTE World Machine Development News

Introducing LTE

Long Term Evolution

Last time, I revealed that an effort is underway to modernize the UI of World Machine. That effort is code named World Machine LTE, or Long Term Evolution. We also talked about why that change is necessary. If you haven’t yet, read Part One. The main theme is that UI improvements are prohibitively difficult in the current framework.

What we haven’t covered yet is where we’re going. What new framework is World Machine moving to? What changes can everyone look forward to? Near term, and then further in the future?

And the framework is…

When World Machine began, the world was a very different place from today. We should expect the same thing going forward; our new framework needs to be adaptable and able to work in new ways and on new platforms.

Now, often you’ll hear the above as codeword for “we’re going to create a Javascript app in Electron“. And for many kinds of applications, that would be a reasonable approach. But not for World Machine: we need to be able to leverage the full native performance of your workstation.

So let’s cut to the essentials: After looking at a lot of options, I decided to base the new GUI on the QT platform. QT is a standard in our industry for good reason: It’s a platform that is feature filled, well designed, and especially with C++17 I’ve found it a complete delight to code in.

QT is also cross-platform: Although we are only targeting Windows at present, this will reduce the barrier for eventual mac/linux support. This has been requested almost from the beginning. Although there are currently a lot of windows-specific APIs being used, they are being reduced by the day as the standard library matures. There’s also this intriguing ability to cross-compile to WebAssembly and actually run in your browser.. but that’s for some future time perhaps.

The focus for this first LTE release is very deliberately to keep the look and feel of World Machine the same. When you start using the first LTE builds, you should feel right at home… except for some remarkable new features unleashed by both the new framework and some intelligent redesign of the core of WM. Internally, World Machine is the same native C++ code, with all of the features and speed of the previous builds.

Work has been underway for a while, and enough has been converted to the LTE framework that I can share some pictures of it in action.

So… Are you ready for the first public screenshot of the LTE branch?

First look at the LTE GUI
The first look at a new World Machine

I’m sure the astute will notice a whole lot of intriguing changes visible here… and we’ll cover all of them in future blog posts 😉 But seriously, there was sure a lot of low-lying fruit to pick! Some of the changes are enabled by the GUI framework migration, others from modernizing the core of World Machine. Either way, LTE will be a pretty dramatic release. When will it be complete? It’s far too early to give an exact date, but somewhere in the first half of next year is a good guess.

Over the course of LTE development, I’ll be writing short snippets about the new features, as well as other development topics. For now, I’ll just list some of the changes that are already live and working in the current LTE builds:

  • Optional full-skin “Dark Mode”
  • Progressive, high res background previews
  • Drastically improved device parameter presentation: Groups, Toggle “advanced” settings, and much more
  • Full edit history retained: jump to any point as desired, compare full-res results to the past
  • Save bookmarks/snapshots of past edits or exports
  • Responsive/resizable dialogs, panels, and windows
  • Consistency of font, design, etc through the app
  • Tooltips for every control and parameter
  • Multiple viewports of the same type
  • Customizable workspace
  • Full Unicode support
  • Support for Internationalization

Some of the above are absolutely game-changers for how you work in World Machine! Others fix longstanding problems that had no easy solution previously.

And you know what? That’s just what’s already implemented. Once the transition to the new platform is complete, World Machine will be finally unshackled and things can mutate even more dramatically. I have a lot of further ideas of where I want things to go. But most importantly, I want to hear what YOU would really love to see!

What would you change?

If you could change anything about WM’s UI, what would you change?

Having a major barrier to UI innovation removed is really liberating. Even some pretty big dreams are now possible if there’s enough interest in them, so chime in with your thoughts.

Comment on this post in the forum, or send me your ideas directly at

By Stephen

Founder of World Machine

Notable Replies

  1. QT is an excellent choice for a mature cross-platform UI framework. No such framework is flawless, but QT is nice to work with. I’ve compiled identical C++ sources for some graphic apps for both Linux and Windows and had no issues. At work, we are building a massive QT-based visualization tool as part of a hardware compiler product. QT seldom imposes a limitation.
    The primary issue is the “inversion of control” where QT wants to be the big cheese and run your code in small dribs and drabs in event handlers. I’m sure you are already past that point, and probably have come to grips with the issues of integrating long-running computation into a responsive QT UI. If not, you will need to make sure that no WM module grabs the CPU for unbounded time, or the UI will apparently lock up, being completely non-responsive until the QT GUI thread gets a chance to run.

  2. DUDE! I am STOKED!!

    That GUI looks fabilus…I cant wait to get it.
    The overlay view looks awesome.

    My most wished feature would be some floating device property area instead of open/closing the device property window.
    Second would be a better Layout generator.
    Third a better flyaround UI.
    ohh and also some easy toggle overlay to see scale on the heightmap like my old macro!!

    WTG @Stephen

  3. @sfriedberg,

    I’m glad to hear that you’ve also had success with QT!

    In terms of responsiveness, this is actually one of the big things that LTE is focusing on; Current World Machine does a lot of computation on the GUI thread which causes the UI to become unresponsive. LTE is completely asynch for heavier tasks, so the GUI will never block when loading/previewing a big world, for example.

  4. @Hotshot,

    I’m also pretty stoked! All of your suggestions are good ones.

    In particular there’s a very long-standing plan to have device parameters not be modal dialogs anymore. This would let you have the parameters for more than one device up at once, and you can have them appear/dock to a side pane.

    That’s not going to appear for the first LTE release, but sometime after almost certainly.

  5. Good choice Stephen. I suspected that’s what you’d land on. Probably going to be a dream after dealing with MFC (I haven’t used MFC since 2002 or so and I hated it then).

Continue the discussion at

8 more replies


Avatar for system Avatar for Stephen Avatar for pokoy Avatar for Hotshot Avatar for sfriedberg Avatar for OlaHaldor Avatar for WFab Avatar for doug

Additional Comments

14 replies on “Introducing LTE”

Comments are closed.