Texturing w/ Roads

Hi guys,

Just wanted to post this image which I thought demonstrated a use of mask outputs that I haven’t seen much of yet.

I’ve created a basic terrain, eroded and then placed a road into the terrain via a spline path.

What’s interesting, is that I’ve then looked at the terrain before and after the road insertion to determine the areas that have been cut, and the areas filled, and then textured them appropriately:

Capturing cuts and fills

What struck me how simple this information was to extract from the WM network, but how bloody useful it is to anyone doing paths on terrains!


Graphics Bugs

Been working on fixing numerous display bugs lately — one of them turned out to actually be an ATI display driver issue that was fixed in an update, the other another strange driver quirk with a viable workaround.

Graphics compatibility vs performance has always been a challenge, as a content tool WM is sometimes run on substandard hardware and needs to remain compatible with that… while at the same time, when displaying high resolution output requires real-time performance as well.

I’m thinking WM 2.3 Beta-2 will be released sometime in the next week or so to bump out the changes to everyone!

On MSVC 2010 and Sales Text

I upgraded to MSVC 2010 yesterday. Primarily for compatibility reasons — MSVC 2005 is not as common anymore and it is getting harder for people to write plugins, etc with it.

The back of the box had this beautiful feature list:

This is interesting to me as one of the things I’ve been slowly working on over the last year is doing a better job on the marketing and sales side of World Machine. There’s a common “golden rule” for writing convincing text: Tell how your product enables the user, do not just list a feature.

This is a great idea actually, as unless you know exactly what kinds of features you’re looking for, a feature list is pointless. However, the above makes me realize something:

When selling to technical people, throw out your normal rules.

I’m going to pick out a couple particularily glaring examples from above:


  1. Accelerate the coding process using your existing skills.
  2. Now practically anything is possible, virtually anywhere.
  3. Be more creative to build richer experiences for Windows
  4. Spend more time imagining the possibilities with [powerful editing tools]


None of these tell me anything at all about the product! I have no idea off the top of my head if MSVC 2010 actually has dramatically improved the coding process with an innovative new IDE, better design tools, etc…. or if they’re simply having  a creative writing session on the back of the box. And I’m inclined to naturally think the latter.

To me, this is a good example of terribly misapplied marketing. They could have sold me with C++0X standards support.. or multimonitor support, or any of the other new things. Instead I got a list of fluff.

The Lesson

If I were to try and distill down the self inflicted marketing wounds above into guidelines for myself as I pursue better marketing techniques, it would look something like this:

  1. Explain how you’ve made your users’ life easier by enabling them to do [blank] but…
  2. Also show them how/why they can achieve this result

You must satisfy both of the above at the same time to convince a technical user. Failure to follow this advice will make your carefully tweaked and sweated over sales text be simply bypassed and ignored as a “content-free zone”.

With that food for thought, I know I can certainly improve the presentation of World Machine on the website when I next have some time to devote to wearing that hat!

Beta-2, Layout View tidying


Beta-2 is accumulating a nice set of bugfixes, most of which were NOT introduced in Beta-1 which is nice. I have had an isolated report of a crash issue in B1 which I have not had replicated or further information about.

Layout View

I’m right now going through and fixing some minor irritating issues with the Layout View, including inconsistencies in the UI and a couple other issues. I also would like to add a few more tools into the layout toolset — certainly allowing polygons to have custom heights set at any knot is a highly requested feature.

Anyone have any other wishlists I should know about?

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 stephen@world-machine.com 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.


Just a quick post to show that I am still alive 🙂

Actually, I’ve been under the weather for the last week or two due to whatever new variant of the flu is circulating this time of year. Luckily, nothing compared to the whole H1N1 thing of last year.

What’s new for WM?

1) I’m working on getting WM 2.3 ready to go into an open beta. 2.3 will be an incremental bugfix release to keep pounding away at the small bugs that creep into the corners of WM. The open beta status will mean that all existing customers will be able to test the new version if they wish, but it won’t be the default for new purchases.

2) Although focused on bugfixes, there will likely be a couple nice new small(-ish) features included. One that I’ve been working on for the last while is multi monitor support:

I’ve been wanting to include real multimon support for a while now, where you can put any combination of views over to another monitor (or two) and increase your productivity. There are, of course, a number of snags that require more work than desired, but multimon will at least hit the beta and if no compatibility issues are raised, it will make it into the final.

3) My “new features” code branch continues to get bits and pieces of some really cool new functionality added to it. More to come on that in due time!

News, Ideas, and Random Musings by the author of World Machine