I apologize for being quiet for so long. I’ve been working hard on my Worldbuilder random planet generator, as well as preparing my website for Worldbuilder’s eventual release. Today that release has finally arrived, and Worldbuilder is now available for purchase from the Experilous Store!
It’s a long ways off from what I envision it could become, but it’s already got a lot of potential value. If you are an author of speculative fiction, a map enthusiast, or a programmer interested in procedural generation, read on to find out what Worldbuilder is already capable of, and where I hope to go with it in the future. Or grab the free demo here and try it out yourself.
What can Worldbuilder Version 0.1.0 do?
On the surface, it is very similar in functionality to the prototype I made last year. It starts by generating tectonic plates and uses the geological stresses caused by tectonic movements to generate elevation data. On top of this it creates wind patterns which distribute heat and moisture around the globe. This data is finally used to produce sensible biomes on the landmasses which are above sea level.
Another feature that was often requested but absent in last year’s prototype is the ability to view the planet as a flat map. Worldbuilder now supports a small collection of rectangular map projections. These maps can be exported as PNG images at whatever resolution is desired, up to a maximum imposed by your graphics adapter. (On my system, I can get up to 16384×16384.) The PNG export also works for the globe view, and it leaves the background transparent so that you can easily place the planet on top of any background you wish, such as a starfield.
While the user interface and infrastructure code will remain closed source, the procedural generation code is being released under the permissive Apache License, Version 2.0. Have a stab at tweaking the available algorithms or adding your own. And feel free to port the source code or otherwise adapt the algorithms for your own projects. (You can find this source code in the ModuleSuites folder of the demo or full product.)
What does the future hold?
I don’t want to commit myself to too many promises just yet, but here are some of my thoughts regarding features I hope to implement, in no particular order.
Stylized Rendering: Instead of colored polygons, I’d like to support multiple modes of artistic presentations with more interesting details, shading, and coloring. A mode to mimic real satellite photos. A mode akin to a parchment map. Curvy lines and arrows for a wind map. The possibilities are naturally endless, but even just a few options beyond the current bland hexagons would go a long way. Related to the subject of presentation, I think it would be really cool to support many of the non-rectangular map projections that have been devised.
Manual Modifications: A randomly generated planet might be close to what you want, but once your imagination has had a shot at processing the map, I bet there will be some tweaks you’d like to make. Extend that island chain a bit further; add a solitary mountain in the middle of this barren wasteland; decrease the size of the desert over there or forest over here. I hope to add controls of this variety to enable you to massage the random planet into precisely the shape you desire.
Annotations and Illustrations: Continuing the above thought, there is also obvious use in being able to add textual annotations and graphical illustrations to the planet surface, especially when using a flat map projection. This could include labels for geographical features, pictures for cities, and more intricate details for plotting a travel route.
More Generation Algorithms: The current version is limited to a single overall method of generation, only allowing quick modifications through the exposed parameters. It is also missing a lot of relevant geographical details, most notably rivers and other inland bodies of water. I would very much like to expand on this. Fortunately for all of us, the open and modular nature of my generation system will hopefully give others a chance to contribute in this area too. I’m only one person, so there’s only so much that I can implement. But the power of a community can be an amazing thing! I look forward to what other people can do with the tools I am offering.
Improved Performance: As noted above, my execution engine has the capacity to thoroughly parallelize many of the algorithms used in procedural generation, but it’s simply not doing so at the moment. Once I take the time to implement basic parallelization, many of these improvements will come almost for free. Further improvements are likely possible through the use of highly optimized code for specific functionality (such as vector/matrix operations), and maybe even the utilization of GPGPU computation pipeline. I have no doubt that these optimizations will be crucial to enabling greater detail and advanced generation algorithms without sacrificing the ease of use that comes from quick execution.
Better User Interface: I’ll admit it; the user interface of the current version is subpar. I want to even call it shameful, but I should resist being too hard on myself. I’ve no doubt seen far worse UIs. Regardless, as I work on the other more exciting features, I full intend to continue improving and polishing the user interface also. Better map navigation being the most urgent.
What do you get with your purchase?
The pricing model that I am using for this product, and likely most others I release in the future, is heavily influenced by the article Freeloadable content – an alternative to paid DLC, written by Lars Doucet. In simple terms, after buying the product, all future versions and additional packages will be available to you for no additional charge, regardless of any difference between the price you originally paid and any later price attached to the product for new purchasers. As an entrepreneur, it is important that I make money to stay in business, but I wish to do so primarily by maximizing the value I provide to an ever-increasing audience, rather than by repeatedly extracting the maximum amount of money from each member of a stagnant customer base.
At the same time, I want to emphasize a distinction between my implementation of this model and a similar funding model which is far more common currently: alpha funding/early access. I’m not selling promises of a hypothetical product, some future version that’s going to be awesome and will totally justify the price I’m asking right now, even while the current version is worth significantly less. I humbly request that my customers view their purchases as entitling them to precisely what is available at the time of purchase, no more. That’s why I’ll keep my early prices low, and only increase them as the product grows and improves. I hope that this will serve as a high quality compromise that grants my customers the respect for their expenditures which they deserve while allowing me to retain a flexibility critical to navigating the risky and unpredictable waters of early entrepreneurship.
Go forth and generate!
I won’t hide that I’m super-nervous about selling my first product, but that nervousness is offset by the excitement of all the uses people might extract from the tools I have produced. I would love to hear and see what you come up with, or any suggestions you have. Feel free to email me or leave comments here on my blog. I thoroughly enjoy the process of working on this tool (most of the time, heh), but ultimately I’m making it for you, so I welcome any input about how it isn’t quite solving the particular problems that you face. If anything goes wrong with the software or the purchase process, or if you encounter anything that is unclear or confusing, don’t hesitate to contact me at firstname.lastname@example.org.
Once again, here are links for your convenience, to purchase Worldbuilder or try the demo.
Thank you, and happy genesis!