We hope you’re all staying safe during these challenging times! It has been a while since we’ve posted a proper dev blog for The Universim, so it’s about time we caught you up on some cool behind-the-scenes stuff we've been cooking up. We used to post devlogs more frequently back in the day, but our team has been so busy working towards release that we kind of forgot about it. Let’s try to fix that!
Today’s blog post is going to be about the surprisingly most-requested feature by the community -- roads.
When you think about it, basically every city builder has them, so why don’t we? Surely it’s easy to just throw them in? Unfortunately, it’s a bit different with The Universim. Due to the direction we chose with spherical, procedurally-generated worlds (yup, we’ve mentioned this a few times) and dynamic city growth, adding roads is extremely difficult.
In contrast, most city building games have roads that are created in simple rectangular blocks on flat terrain on a plane. The environment is not as organic and chaotic as it is in The Universim.
It took us several months of intensive R&D just to determine the best approach for the system and how it interoperates with other systems. The road system has been in active development for a further several months now, which we’re happy to let you play with soon. If everything goes according to plan, we will release a content update on August 3rd that will include the first iteration of the road system!
As mentioned, this will be the first iteration of the roads system. This will be an opportunity to get your feedback, while we continue to improve the system and add new features for future releases.
We decided to go with a precomputed city blueprint approach. An invisible network of potential roads and residential blocks are calculated when you first place your Evolution Tower. As your city expands, roads are automatically built from new residential buildings and certain manually placed buildings, back to your city center.
These roads follow the hidden blueprint, which allows us to automatically adhere to a set of complicated rules that ensures a clean, valid road system.
These rules include forming only valid junctions in a known set (T-junctions variations, crossings, etc.), avoiding very sharp turns, keeping roads on flat ground and away from lakes and mountains, ensuring that roads leave enough space between them for the automatic placement of residential buildings and other automatic buildings placed by ministers, and so on.
But why the pre-computed blueprint? Why not simply let players “draw” roads anywhere? Well, this would be tricky to do in terms of conveying real-time information to the player about what is valid and what is not. It might feel very restrictive and annoying. You might not easily understand why the road segment you wish to place is not valid:
- Are you too close to water?
- Is the ground too uneven?
- Is the road you are trying to place connecting to a junction that has too many roads already that that junction?
- Is the road you are trying to place forming a junction for which no valid display mesh exists?
- Is the road too close to another road, not leaving enough room for residential block placement?
- Is the road touching nearby existing buildings?
The whole thing gets complicated very quickly, and at least for this iteration, free-form manual road building was not a realistic target for us.
Automatic road building
In this iteration, roads are built from automatically placed buildings (residentials, ministers), as well as selected manually placed buildings, to the city center. In the future, depending on feedback and further experimentation, we might enable manual road-building by “painting” on the blueprint.
You are still in control
You will not be prevented from placing buildings onto areas where roads have been built. If you do, the road segment(s) in that position will be deleted. Any future attempts to build roads in that area, will work around your “obstruction”, or at least it will try to.
You can also place manual buildings anywhere that future roads may otherwise have been built. You are essentially obstructing the blueprint. The more chaotically you place buildings and the more obstructions you cause, the less structured and city-like your final world will be.
To guide you along and to help you to optionally keep your city structured around the road network, a semi transparent “guide” of blueprint roads will appear as you are placing buildings. This allows you to easily place a building right next to a future road, rather than in the middle of it :)
The visuals (displaying roads)
As you progress through the various ages, the way in which roads are displayed will change. At the start of the game, simple dust roads are drawn. By the time you reach the modern era, concrete and tarmac roads will make things look a lot more like a modern city.
Currently, the most interesting and good-looking era by far is the modern road system. It includes interesting props at junctions and alongside roads. The mesh-based, textured, displays also make it look more “solid” and structured.
Roads and pathfinding
It would be a missed opportunity if the roads were purely visual, with no real purpose. The good news is, the roads actually do serve a purpose! The road data is fed into our pathfinding system. They provide high-priority paths that Nuggets will follow. This is especially important in the modern age, where Nuggets convert to vehicles that will travel at higher speeds on roads, just as you would expect to see in a real city.
Current limitations and known issues
- Sometimes the terrain will go over small sections of road.
- A small number of junctions or road sections might look a little weird and deformed.
- No manual road-building.
- Road surfaces are cleared by Nuggets after the roads are built. So, for a short while, you might see trees and rocks sticking out of roads.
Want to find out more? Join the discord: Discord.gg