Category Archives: World Machine Pro Development

All about WM Pro

On WM 2.3 and Code Debt

Beta 1 Available! Rejoice!

As I mentioned on the forums, Beta-1 of WM 2.3 is now available if you haven’t heard! Visit the main website and follow the news links to get at it.

I’ve already started fixing a couple further bugs, and introducing a few new things for Beta-2, such as multithreaded support for Thermal Erosion.

I’ve been continually mentioning how 2.3 is mostly an internals change that should pave the way for easier and more profound changes down the line. I’m hoping to be able to give folks a taste of those changes sooner rather than later.

What I really want to talk about is the concept of Code Debt.

The curse of Code Debt

One experience I’ve had on the World Machine project is just how toxic the kind of “code debt” that 2.3 addresses is. For those who aren’t familiar with the concept, Code Debt is essentially much like financial debt.

When you need something done in a whole hurry, and you don’t have the resources available, you can choose to “take out a loan” by coding things in the fastest but not best engineered way. In short, a dirty hack.

However, you have to pay interest on that loan. And the interest rate is high : Every time you need to touch that system in the future, you have to interact with your crude code. Over time, the cost of having to deal with your dirty hack far outweighs the time savings you got in the first place.

All that Work, but still the Same?

To deal with the code debt, you have to continually refactor your code to improve its quality. WM 2.3 is primarily a release aimed at doing just this. Lots of internal systems are taken apart, re-plumbed, and put back together again. The depressing thing though, is when you’re done..

… you have exactly what you started with, from the outside. In the ideal case, nothing will have changed from the User’s perspective. If you get alot of your development drive out of creating cool new features, like I do, this can be a bit depressing.

The good news of the effort though, is that done well you can move forward from that spot at a far faster clip than would have been possible if the debt was not dealt with.

Anyways, just a kind of windy aside about what the primary goals of WM 2.3 were. I hope it provides some illumination for folks out there!

2.3 Beta-1 — Monday?

Hey folks,

I had originally planned to release the first beta of WM 2.3 today, but I realized only yesterday(!) that that is probably not a good idea since I’m going out of town this weekend to help some friends out — in case anything is horribly broken I wouldn’t be able to fix it in realtime.

So I’ve postponed the 2.3 beta again, until monday, so that I can be sure that I will be immediately able to fix anything that arises.

See you then!

Out, dratted bugs

A good thing I pushed 2.3 back a little bit further, as I’m currently fixing a serious build crash that was uncovered once I started the final testing. And let me tell you, there’s nothing like tracking down subtle multi-thread crash bugs to really brighten ones day!

I also want to fix the “stranded route points” issue for 2.3beta-1.

Quick status update on WM 2.3

I intended to actually open up 2.3 Beta1 tonight to all registered customers, but I’ve decided to push that back a bit longer.

The main impediment is actually not the product itself but all of the supporting web code: I wanted to create a customer service center where registered users (and ONLY registered users..) can always go to download the latest stable and beta editions for their purchases, etc. This will ease the deployment issues I face for doing many smaller releases rather than mammoth ones. Probably about a week worth of work to get that up and running next week.

Long story short: If you’re a WM 2.2 user who urgently wants to get at the bugfixes from 2.3Beta-1, just drop me a line at and I’ll make sure you get 2.3B1 immediately! Otherwise it should roll out next week.


Feature Trickledown

Multimonitor support is working quite solidly now, although extended testing will be needed to make sure it is working well across all the myriad hardware configurations.

As a power-user feature, multimonitor support will be a Pro-level feature in WM 2.3.

However, to balance this, and to account for the changing landscape of computer hardware since WM 2 was released, the Standard (and Basic) Edition will gain the following features:

  • 2-core multithreading will drift down to the Standard and Basic editions. This offers a potentially near-doubling of build speed for Standard users! Since almost all CPUs sold in recent history are dual core, the time has finally come for this to be a standard feature. (>2 core multithreading will still be pro-level.)
  • WM2.3 Standard Edition will also come in a 64bit edition. With Vista and Windows 7 the vast majority of recent vintage PCs are now running 64bit operating systems, making it only natural to support this across all editions. This should allow Standard Edition users to finally put memory usage issues into the past.


Happy Thanksgiving! A new development cycle… (1/2)

To readers in the US, I hope you’ve had a good thanksgiving!

There’s a LOT happening now, as a development cycle is ramping up into full swing. I’m still deciding what features are going into the next edition; what follows below are things that are certainly going in.

  1. Ability to have different resolutions in the same world file. You can finally create your textures at a higher resolution than your heightfield, for example..
  2. Along with the above, support for localspace sections of the network. Localspace settings are unaffected by world settings, allowing you to do things like create and load textures, etc that can be later placed into the world.
  3. (To enable the two above) Groups are becoming stronger more privileged entities. Groups will become the primary means of designating parts of the world to exist at a different resolution, for example.
  4. A yet-more-fluid UI. Workview improvements; the idea is to provide much more feedback about what effects your actions will have.
  5. Undo/Redo support (finally!) Some major architectural changes are going into place to enable this. A side effect of those changes is the next feature …
  6. Background Previews and Builds. You will be able to startup a build and then still work on the network as the build proceeds unobtrusively in the background.

There’s much more planned,  but thats the featureset that will be enabled by the changes I’m making right now. I’m going to make a few posts soon on the forums detailing some of the feedback I received from all of YOU (my customers!) during the 2.2 upgrade when you filled out the survey (thanks!) Many of those requests will be directly tageted.

I don’t have too much more solid information for you guys yet, but I will try to keep everyone up to date on whats going on, including when a new beta cycle begins!

Internals Changes

One of the biggest things I’m working on right now is cleaning up, documenting and reworking the heart of World Machine’s codebase. I have three aims in this:

  1. Make it easier to maintain and debug for myself and anyone else (such as plugin authors) who needs to interact with the core
  2. Pave the way for some new features that need some core changes to be enabled (this includes using native real-world units, allowing for having localspaces and different resolutions in the same world file)
  3. Make embedding World Machine into games, simulations, etc much easier. Over the years, a number of game companies and others have licensed World Machine to use internally in their game or tools. Especially with some design changes to make this more streamlined and simple, I see this as a great growth area for both the Big Guys and licensing to indie developers, as you can develop your maps in the World Machine editor and then regenerate at needed resolution on remote machines, without sending many MB of map data. This is, in fact, the original purpose that WM was developed for back in the day!

I’ll write more on all of these things, but I figured it would be useful to know what’s going on right now!

Musing and Progress, October 2010

Hey folks,

It’s been a little while since I’ve written last. WM came out, the website has been revamped a good bit, so what’s next on the agenda?

Well, first and foremost is a small release to fix some of the new bugs that have been discovered since WM 2.2’s release. Rolling out an updater should be much less painful this time since there are no installer changes or document folder changes that have to happen. Besides bugs, it will also include a few small new features like an integrated update checker, very simple multimonitor support (full, more dynamic multimon won’t be just yet), etc.

I’d like to get a small feature-improving update out this year as well, although timing is tight on that one. Perhaps more useful would be to get more tutorial-type information up on the website, such as adding video tutorials — this has been a goal of mine for a while, one which I’m finally ready to tackle.

More broadly, I’ve been looking at the possibility of opening up WM into a new subfield where it has already had some success; I’ll post more on this in a little while, as work has been going on behind the scenes for a while now on this one. More to come.

Progress, Survey, and more tutorial resources

Hey folks,

Work is continuing to come along on the website and new information for both new and existing users. It’s taking longer than expected but that’s normal by this point 😛 There are also some scattered bug reports and issues coming in with WM 2.2 that I will fix as we go — a very minor WM 2.21 will be released in a while to fix any revealed bugs, luckily there aren’t too many so far.

I’ve been going through all of the survey answers that you all have sent in from the upgrade survey, and there are some very interesting suggestions and great info for me to know — and some fantastic testimonials as well. Thank you!

Lastly, I wanted to plug a set of tutorials on World Machine. The first one is here:

These are written by Alex Bluesummers, and it's a nice little primer on World Machine!

More tutorials and information is coming with the new website; more details to unfold as it happens.

What’s in progress right now

At the moment, I’m just polishing off a new central macro library. This is a feature I’ve wanted for the longest time for the WM website — a central place where you can easily sort through and share macros.

The new library will be linked to your forum account, and you will be able to upload, browse, comment, and rate macros. There will also be versioning support for updating your own macros.

Eventually, I want to have this integrated into the WM application itself, so that downloading from the online macro library is never more than a few clicks away. But the first step is making it available on the web, and that will be happening soon, along with other website updates!