Category Archives: World Machine Development News

Development News concerning World Machine

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!

Beta-2, Layout View tidying

Beta-2?

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!