This post is about giving a good overview of:
- The motivation behind Orb Crafter
- The engine used under the hood
- What’s been done so far
- And… What’s left to do !
Allright… First entry into the devlog, strap yourselves in! 😉
Orb Crafter – a novel yet experimental take on map-making
When it comes to map making, especially fantasy map making, for tabletop games, well, most of you already know about the wealth of solutions and tools that are readily available, whether they be free or paid, online tools or standalone software. Upon closer inspection though, most of these tools do focus on stylized mapping. This means maps that look like they come either out of Sir Tolkien’s imagination (as if hand drawn), either from a Blizzard video game (with playful, saturated colors and all that jazz). And that’s fine. After all the graphic content of, eg., Pathfinder, is a good example of what TTRPG players are accustomed to.
I don’t have a problem with that, and as a matter of fact, if you put these tools in the right hands, beautiful outcome result most of the time. No, the only caveat imo, is that I like my RPG sessions to rely on a realistic touch of low-to-dark fantasy… So, with that respect, the good question consequently would be: where’s the mapping software that’ll let me portray that ? I’m not sure… I did a quick search, couldn’t find it. And then, the following idea slowly diffused into my brain: “let’s make it happen then”…
And so here I went. I started drafting ideas for this now coming piece of software called Orb Crafter. The initial impulse (making realistic maps) evolved into ambitious stuff like seamless/coherent edit from world maps down to local baronies with proper geometric handling of spherical globes… I like that. It’s not an easy task. But, hey, what ‘s the use of holding a PhD with a specialty in computer graphics and geometric modeling of natural sceneries, and at the same time being a long time TTRPG player – if not to endeavor to develop such a tool? You get my point… 😉
The Cargo engine
First things first, let’s talk about the multimedia engine that runs the show. Instead of choosing say Qt5, I preferred, again, to roll my own. In fact, most of the grunt work has already been done on Cargo…
The Cargo engine is a personal C++ game engine that I started developing during my thesis (for a pending personal video game project), and that I decided to put to use with Orb Crafter. This heavy piece of code relies for now on OpenGL4 when it comes to talking to the GPU – so, yes, I guess this means no MacOS support if you need compute shaders (but more on that later) – and comes with a nice looking GUI stack (user input, events, text, widgets, layout, etc.). This is my main criteria: I needed something that I could work with damn fast whilst maintaing a highly customizable look n feel. Hence the Cargo decision.
It’s not a perfect solution. There are still some features lacking right now that I’ll need to implement, and some that need revisiting and/or hardening. But it’s fine, I much prefer having full control over the engine, hence the resulting product, than relying on third-party pre-wired stuff (even if more trustworthy production-wise, granted).
So. Mid february this year (2021) I started to code for Orb Crafter. About six months later, here is a rough list of what’s been implemented. Be aware, “implemented” does not mean feature completion, rather things have been tested and seem to work as-is. Most of these aspects need polishing, while a few need complete rehauling.
- World Wizard
- Instant tectonics-inspired continental generation – with features such as rifts, island arcs, coastal cordilleras – alongside real-time update of parameters changes.
- Biome generation.
- Planet wide river network generation. [Work-in-progress, to be detailed in a future post]
- World Edit
- Continental (landmass) brush.
- Topographic (relief) brush.
- Forest, grassland, badland, desert brushes.
- All brushes work seamlessly across the globe (no map boundary artefacts), and come with user-visualization of pole distorsion along with on-the-fly size and roughness setting.
- Hand-drawn major rivers and lakes.
- World Overlays
- Paths, with 4 path styles (more can be added). [Needs rework]
- Symbols (cities, ruins, fortresses, etc.) [Pending art commissions, for now assets are placeholders]
- Grid, as a longitude/latitude polar grid. [Not complete, numbering is missing]
- Compass Roses. [Pending art commissions]
- Text, ie. map labels, with outline, transparency, rotation and curving.
- Global Parameters
- Topography enhancement.
- Coasts underwater extent.
- Globe average temperature (conditions polar caps extent, land ice and snow).
- Final shading: gamma, contrast, saturation.
- User sketch overlay.
- Local Maps
- Extraction from the world map: user specification and visualization of the target area, from ~9000 km down to ~200 km (local map size) for an initial planet radius of 6000 km (similar to Earth).
- Coherent continent shape (coast), topography, hydrography (river network) and biome (vegetation) super resolution. The automatic process preserves all wizard operations and brush work done on the world map (except hand drawn rivers and lakes, for now).
- Map style: satellite vs simplified colors & enhanced rivers. [WIP]
- Other Features
- Program options [WIP]: for now, only internal map size setting (from 2K to 6K pixels). This is mandatory to allow Orb Crafter to perform well on a variety of platforms, the bottleneck being what kind of GPU is present. Note that internal map size is independent of the final map export resolution.
- Project menu [WIP]: maps are organized into special containers called Projects. Commonly one Project will host a world map plus any number of detailed local maps created from it.
- Project save / load (including maps). [works only for world maps, as of now].
What’s left… The roadmap
Allright, these are great achievements in themselves. Most of the proof of concept has been tested and validated (spherical world to flat local mapping, realistic views, etc.).
Now, there are quite a number of things remaining before I can call it done. For starters, all previous work only concerns the Windows 10 platform. The Linux port hasn’t been touched yet. My guess is I will first release on Windows and then see what comes out before porting to Linux.
And then there is all the “rest”..:
- Local Maps
- Brush work
- Hand drawn rivers /lakes
- Symbols, grids (incl. hexgriding), labels, paths, etc.
- Map styles.
- And… extracting local maps from a local map ! (nested maps are not an easy task to code, this is an optional feature).
- World Maps
- Map styles.
- Grid numbering.
- 3D view of the globe as a true planet (yes!).
- Custom globe size (easy to implement, but needs testing).
- Bug Hunt…
- Saving/loading projects with local maps (possibly nested).
- Completion of the Project screen, with the map gallery.
- Map export at arbitrary resolution – PNG, JPEG and possibly PDF, PSD, heightmap (for game devs and DEM lovers).
- Final program options screen.
- Final art assets (to be commissioned).
- Credits screen.
- Beta testing, on a variety of platforms…
- Final binary packaging.
- User guide and documentation (to be published on this website).
Now, we’re getting there.
Only, there is one caveat, money… I can only provide 1 month of fulltime dev with my own funds as of august 2021. I will need to find a way to fund the completion of the project. For now, I’m thinking of a Kickstarter crowdfunding campaign to help along… Probably due October 2021, but I’m pretty short on time. I haven’t made any public advertisement for Orb Crafter until now with this devlog and website.
TL;DR … Fingers crossed!