Welcome everyone, Captain Marek reporting for the 42nd edition of the Captain's Diary! I have lots of exciting information for you today, so let’s get started.
Update 2 release date
Many of you are eagerly awaiting the release date for Update 2, so let’s cut straight to the chase. It’s April 5th, 2024! We were initially aiming for an earlier date, but we wanted to make sure that the game is in a solid state for the release.
We plan to run a closed testing version of the game around a week before the release so if you want to be part of it, keep checking our Discord. And if you’d like to be notified about the release, subscribe to our mailing list!
The other project
The work on Update 2 took us longer than anticipated and one of the reasons was that we spent a lot of time working on this other game. And as you can imagine, developing another game takes a lot of time!
The other game is called Captain Cartographer, and you play as a… Just kidding, it’s the map editor for COI. You can lower your pitchforks for now; there are no other projects that we are working on except COI. I just wanted to emphasize that the map editor is comparable to a smaller game in terms of complexity.
Map editor
As mentioned in the previous paragraph, the editor is a large project, and there are a few reasons for it. First, we developed a new and future-proof map representation that is extensible and moddable. This ensures maps created by our community will remain functional for a long time, and future game updates won’t break them.
Second, COI maps are more complex than those in other games, as the terrain materials underground matter. Simple sculpting tools and texture brushes won’t work in our case; we had to develop new tools and techniques to provide an easy way of creating terrain features that are above and below ground.
Third, we wanted to make the map creation experience easy and intuitive, even for beginners and non-artists. Creating a nice-looking mountain range should not take hours, but rather just a few minutes.
Map representation in COI
Maps in simulation games typically fall into two categories: Procedurally generated or manually created. Each approach has its own pros and cons. In general, procedurally generated maps can be configurable and large, offering greater replayability, with minimal manual effort.
On the other hand, procedural generation can struggle with creating something concrete or unique, which is where manually created maps shine. They offer more creative freedom, allowing for the creation of specific features that would be difficult to make procedurally.
Captain of Industry adopts a hybrid approach, which is quite unique. Our maps are manually assembled from procedurally created elements. How does this work? Here is an example: Imagine you’d like to create an island with a mountain range on one side and a forest on the other. Instead of sculpting the terrain and manually placing trees, you generate three procedural nodes: island, mountain, and forest. Then, you can configure each node to your liking and you are done!
There are several more advantages to this hybrid approach. First, all operations are non-destructive and reversible. You can always move or modify a procedural node without losing previous work. Is the mountain too close to the forest? Move it! Too small? Make it bigger! Want another one? Copy-paste it! Plus, we implemented a familiar undo-redo feature for all operations!
The second advantage is that creating visually impressive features, such as mountains or plateaus, is just a few clicks away. We provide numerous presets with the procedural parts already configured; all that’s left is to place them on the map to your liking. These procedural features can be further customized, which is considered more advanced.
Another benefit is the efficiency of map data storage. The map is just a compact list of procedural nodes and their configurations, requiring significantly less data than the final generated map. To be more concrete, a final generated map can range from 20 MB to 500 MB in size, but the hybrid format typically remains under 1 MB. This allows us to embed the entire map in each save file without inflating its size. As a result, both we and map creators can update and refine existing maps without breaking saves that utilize them.
However, there are some disadvantages. Performing small manual edits, like raising or lowering terrain with a brush, is relatively tricky. This requires defining small features and adjusting their parameters to achieve what you need, which can be a bit tedious. This should improve over time as we learn what operations are missing and implement them (or mods!).
Procedural nodes configurability
Now that you understand maps are composed of manually placed procedural nodes, it's important to note just how extremely configurable each node is. I don’t use the term “extremely” lightly. There are three levels of configurability.
First level of configurability: This involves changing the shape, position, and basic parameters of map features. Many features, such as mountains, are defined by a polygon and its position, shape, and number of vertices can be easily changed via intuitive UI. For example, creating a mountain shaped like the letter 'U' is as simple as manipulating the polygon. You can also modify basic properties such as the terrain material for mountains and the type of trees for forests. Most of the parameters are documented in tooltips.
Second level of configurability: At this stage, you delve into the parameters of the procedural model itself. This advanced technique allows you to modify properties like the slope of a mountain, scale of generated details, surface material, etc. This is meant for more experienced users who want precise control over the procedurally generated pieces. However, mastering this level requires spending some time to understand how the procedural model works and what each parameter does.
Third level of configurability: Now we reach the pinnacle of customization - the extreme part. Some nodes, like the ones that generate mountains, have a fully configurable procedural model. This means that the procedural functions and the way how they are connected to each other can be configured via our simplified pipeline language. It’s even possible to add new functions and transformations via mods! This is intended for expert users who are familiar with 2D noise functions and their composition.
Map post-processing
A map includes not only a list of features, such as plateaus, mountains, and forests, but also elements known as post-processors. A post-processor transforms the generated map features in various ways. Good examples of post-processors include one that generates grass on rock surfaces that aren’t too steep, another that mixes two types of grass for better visuals, and a post-processor that automatically generates rocks and flowers on grass. These post-processors are as configurable as the map features themselves. For instance, the flower-seeding post-processor uses a configurable noise function to determine the appearance and distribution of flower patches – it’s all fully configurable!
Additionally, we have post-processors for localized terrain shaping operations, such as smoothing, ramp creation, and flattening. These operate within a configurable polygon area and perform exactly as their names suggest.
Erosion simulation
Another post-processor worth highlighting is the Erosion simulator. This is an entirely new post-processing step that simulates hydraulic erosion by modelling millions of virtual rain particles falling on the terrain, eroding it in a realistic way. I could write (and maybe I should, at some point) an entire blog post about this process, but for now, the short story is that it makes any map and, especially mountains and cliffs, look so much more natural and realistic. Check out the before/after animated gif below to see the difference. Notably, this entire process is also fully configurable for those willing to delve into the 20+ parameters. We also put a lot of effort into making this process parallelizable, utilizing all available CPU cores; otherwise, just the erosion simulation alone would take 30+ seconds to finish.
Map sizes
In the map editor, you can select a map size from a recommended list or enter a completely custom size! The only limitation is that the maximum map area cannot exceed 17M tiles, and no single map dimension can be larger than 16k tiles. This allows for unique map shapes, such as 512x16k. It's worth noting that, up to now, the largest map size was around 4M tiles.
Other editor features
There are several other neat features in the map editor:
The ability to add one or more starting locations.
An x-ray tool that reveals material layers beneath the terrain surface.
The option to plant individual trees and place other props.
Configuration option for virtual resources, such as crude oil deposits.
Map generation that is fully parallelized, using all the cores your CPU can spare!
Map editor demonstration live-stream
As you can see, the map editor is a beast. To showcase all its capabilities, we’re planning a live-stream demonstration covering everything described in this article and more! This event will scheduled closer to the release, and we’ll make a separate announcement.
COI hub in March
To enable our community to share and download all the maps they create, we are launching the CoI Hub website in March this year. We originally announced it in Captain’s Diary #39.
And that’s everything for today, mark your calendars for the 5th of April and see you soon! Captain Marek out.
Comments