A bit of a later than usual devlog. The game had a small update the other day to fix some bugs, among them a rare crash bug that occured when threads would deadlock when exiting to the menu. This is now resolved! The update also tidied up some of the building placement code and fixed some issues with the UI not updating resource costs etc.
The upcoming version is in the works, and I will detail some of the things I aim to have added into the game for 0.34.
Indoor stadiums! This one is finished already and a given addition in the upcoming update.
I’ve managed to get a system working for turning animated stuff on during the night and off again during the day. I will be using this system for billboards, which I aim to start adding into the game in the upcoming version.
Some new decorations will be added as well. This will autoadapt to surrounding decorations of the same type, similarly to the rounded blocks. I’m also adding a flat block that can be used transition between different heights and add even more variation into city design.
The second density for hotels will be added in, and I should also have a functioning fire disaster in as well as mechanics for putting fires out etc.
Since public transport will be put aside for a while, next up in terms of systems is to expand on ideology. So that will be getting a bit more work moving forward.
0.33 is almost ready. On the surface it’s a fairly small update, but it features the complete new traffic system as well as trams, which has taken quite a bit of work and time to implement.
Trams will get some polish over time, but are more or less finished which also means all public transport systems have now been implemented.
I’ve started adding in additional early game entertainment buildings – baseball fields and tennis courts.
There’s also been a lot of work done on fires – the first disaster added into the game, but these will not be triggered in this version as some features are still being tweaked.
Overall, the addition of monorails and trams, as well as changing the traffic system, has added a lot more life and movement into cities, as well as some much needed city detail. As development moves on, I’m hoping to add more and more props and buildings that are more on a detail level.
Just a brief update this week, as I’m currently in the process of reworking the traffic system so not much new stuff to show yet. This is in preparation for better traffic simulation, but also to make trams easier to implement.
The fundamental changes are more or less finished. Traffic simulation was pretty messy before, with cars only javing access to the position of the target road tile. This meant things like driving on the right side could only be handled by offsetting the tile position. Same with leaping over edges, which included a lot of vector math to find whether the next road tile was on an inner corner or outer corner. All of this had to be done on a per car basis, which ended up being a bit heavier than I like. The results were also that traffic was rather floaty, due mostly to the lack of information to guide cars to the next destination.
The way roads work in the game is that only ends, turns, T and X intersections as well as straight tiles where there’s an “edge leap” are registered. So cars assume that between the current position and the next is a straight path. This would sometimes get messed up making cars travel diagonally when they failed to find the next tile. All this has now been tightened upp, and baked into each registered tile is a node system that forces the car to travel from and to each individual node in the correct order. This makes traffic simulation much tighter and cleaner looking.
With these changes I’ve also been able to add more information into road tiles, so that cars know whether they are nearing an intersection or if they are in the inner or outer lane of a curve (unlike before, when this was handled with clunky offsets). All in all, about 70 lines of code have been cut from cars, mostly vector math. I’ve also been able to add in a simple system of traffic rules, so that cars take turns at intersections.
This is not all that’s in the works though, as seen above I’m also expanding on the information presented in the city statistics window. Among them a slider for the availability of education seats and hospital beds per student and ill person respectively.
How much is stored in cisterns and batteries has also been added into the city statistics panel. I’ve also expanded the budget window to add a breakdown of hotel taxes as well as other taxes and costs. This is for 0.33, but beyond that I’m going for a more expansive budget window.
I’ve currently no release date for 0.33, but july 6th is the goal!
One of the goals was to add trams into the game. I’ve noticed while working on them, that it would be much easier to add them in if I started reworking the road connection system first. So the actual tram vehicles will not be added. But the station will be there:
I’m hoping to have the improved road connection system in the next version already, so trams should hopefully not be too far off. This way, the traffic system gets an overhaul too!
I’ve added another set of decoration blocks:
A lot of work has been put into refining some of the systems already in place – the way goods tickets are generated as well as the demanded resources has been reworked and what foods are demanded by different classes of citizens has been changed.
The city stats window has gotten some additional info – The amount of resources produced in the city can now be seen there, as well as the amount of education and health produced compared to how much is required.
Demand for resources and their pricing has also been altered. Instead of the price and demand of a good diminishing very quickly when selling them, now the amount you can sell before price is drastically dropped depends on the city’s population (a proxy for the world population basically). Once a resource has been sold, the time it takes for price to return to normal, will depend on how much has been sold.
0.31 will be live tomorrow. This version will add in the monorail trains, a bunch of new monorail track pieces and fix a bunch of performance issues and slow loading times.
In adding the monotrails, I’ve had to rework how vactracks work – since they share systems. Part of this work has been to fix slow connection calculations, trains sometimes occupying the same track and imprecise movement. Part of this work can now be ported over to roads and cars to start making traffic movement nicer looking. This will be done after trams have been added in (version 0.32).
Monorails being more or less finished (obviously tweaks will be done), trams are the next step. Whereas monorails share systems with vactracks, trams will share the road system. This system has been incredibly slow to calculate what roads are connected and what road system belongs to which road network. In the test city (a huge city with lots of roads), the process of checking road connections when loading the city took 68s. I’ve now managed to cut this down to about 3s. This is a huge performance improvement noticable both when loading cities and when playing the game, as things will connect together much faster now. Some of the techniques I used to improve performance have also been moved over to vactracks, making them faster to calculate too.
Since I’ve been working on a lot of performance related fixes, I’ve also looked into cleaning up the project to remove files not used and also improve import settings. This should hopefully push in game performance a bit. I’ve also looked into the post processing effects.
I’m hoping to get an additional free roam template added as well as some minor decorations. Aside from that, this update will mostly be performance focused. 0.32 on the other hand will add more features, this one is set to release a week after 0.31, on monday the 22nd.
– 3×3 concrete, steel and glass production facilities added.
– Flower farm added. Flowers can now be produced.
– Dyes factory added. Dyes can now be produced.
– Textiles factory added. Textiles can now be produced.
– Monorails added! They currently don’t spawn trains though. This is an early iteration, so many changes still to come.
– Local area effects now non-linear. Before the effects of for example crime, poor health and poor education would be added up. Now a neighborhood might have poor health levels, without taking quite the same efficiency hit. However, when more than one aspect is poor, then it takes a bigger hit instead.
– Vactrains updated. Some more tweaks coming as tram/monorail/vactrain systems receive more love.
– Vactubes made smaller (-25%)
– Changed modifier crate drop frequency and they now only appear near buildings. They also give off a light when they appear.
– Camera controls and gameplay tutorials french localization added.
– Moved farms to its own category (food prod.)
– Trash notice was displayed on load, fixed.
– Better and more consistent collision detection when placing/demolishing buildings.
– Improved loading performance. Improved on placement times (the first part of the loading bar). Also improved road connection calculations. This is the last bit of the loading bar. More work on loading performance remains, but this should take a fair chunk out of loading times.
– Fixed buildings sometimes not registering a nearby good (collision layer mishap).
– Fixed bug where nested vacstations weren’t working.
– Fixed buildings not displaying production despite being in a network connected to a vacstation.
– Fixed vactrack train not spawning on load.
– Fixed bug where click and drag placing blocks in the center would not work.
– Fixed modifiers being mapped oddly (cereal modifier added fruit for example).
– Fixed descriptions of crates in the modifers and crates window.
– Fixed glossmap for 1×1 tier one residence
– Fixed traffic timestep being a bit slower than it should be when city has been loaded.
Aside from the newly added resource tree with flowers farms, dyes factories and textiles factory displayed in previous devlogs, public transport has been a big project this time around. There’s a lot of work involved in getting this working properly, so it’s not all there yet. But you can now construct monorails!
I had initially meant to add trams in first, but this requires a bit of additional work on how roads and road bound vehicles work, which I will be finishing up for next update. There’s been some work done already, but this part of the code is currently a bit slow so it needs to be optimized before I can move further with it.
Monorail stations and connections can be built though, but won’t spawn trains currently. Monorail trains will be a bit funky so they require a bit of additional work on top of the vactrain code that’s already in the game.
On the subject of vacuum trains, they now have wagons! I’ve also made the movement a bit stricted so they stay in the vactube! More work is still needed to tidy up everything and make it look nicer, but it’s getting there! Here the train and wagons can be seen in a user made city (and an amazing build it is!!).
In this city there was an issue with nested vac train stations not tying together different road networks. This has now been fixed so that vac train stations work properly. Cities can now be spaced out on different islands and share resources as long as there is a station and proper connection. There still needs to be an atmoport near one of these stations.
In the next update, there will be more public transport, some new decos, a first implementation of disasters (fire) and a bunch of other things. I’m hoping to have this version out monday the 15th!
Here’s another user build that I find really nice:
I’ll keep it short this week as most of the work put into the game this week has been on preparing existing systems for new additions.
One such new addition is the tram and monorail systems mentioned in previous logs.
What will differentiate the monorail from the existing vacuum train system, is that it will need to be built nearby blocks, only allowing shorter bridges across gaps etc. In terms of code, they otherwise share many things but monorails will need to add some additional complexity. So I’ve spent time this week cleaning up the vacuum train code to allow for better pathing and a faster calculation of routes.
Once I’m not updating the vacuum train/monorail code, I will get back to work on regular traffic to try to improve paths there as well. This will be a bit more difficult, as there are way more cars at any given moment, so care needs to be taken to keep it all efficient.
Since trams, monorails and vacuum trains will (hopefully) all be in and functional in the next update (due the 7th or 8th of june), I’ve also added a local area effect for public transporation. Since there are now very many local area effects (including crime, health, education etc.), I’ve also redone how they stack. Previously they all carried the same weight, given that now there are so many, it was possible to get good building efficiency even if one was completely lacking. So now they are now partially multiplicative, if one is missing it doesn’t make much difference, but if two are missing it will have a large effect, and so on. This will make it more important to build well rounded neighborhoods.
Once I’ve gotten the next version up, I will most likely do another version focused primarily on bug fixes and performance, as there has been a lot stuff added recently and a lot of systems that have been cleaned up (possibly introducing new bugs).
Flower farms, dyes and textile factories as well as public transportation.
This week a lot of work has been put into the new resource tree of flowers -> dyes -> textiles. Currently, flowers are used to produce dyes and dyes and wood go into producing textiles which are used in hotels. Additional uses may be added in later on.
The flower farm has a 6×6 foot print and is fairly pricey – overall resource production for hotels and hotels themselves are rather pricey, but tourism can also add a lot of revenue to a city.
Once flowers are produced, dyes can be produced:
I’ve started working on expanding public transportation as well. Currently there’s only vacuum trains. I’m working on expanding with trams, which will be an early game public transportation system. Trams are built on roads existing roads (not avenues) and stations are 1×2 sized and also placed on roads.
I’m also adding in a monorail system. The monorail system will be larger capacity than trams, but also require more space (stations etc.).
Vacuumtrains will be made a bit more costly, and will be the highest capacity system and will also allow resoures to be shared across different city “islands” unlike trams and monorail.
The tram system can be seen below as well as a WIP of the textile factory.
When working on the trams I also decided to overhaul the look of roads. So gone are the square roads, and in are roads with some curves.
– Two new decorations
– Hotels and tourism are in! To begin with only one density for each tier. Additional densities will be added in the upcoming versions.
– Tourism policies added.
– Differentiated road upkeep costs. Plain roads are cheaper than the fancy avenue.
– New resources – flowers, dyes and textiles.
– Click and drag placement added for all buildingtypes, not just 1×1 buildings.
– Optimized building placement code.
– Reimported textures to decrease texture size in game.
– Fixed clinic collider
– Fixed tree shader so that shadows work properly.
– Fixed bug where blocks could sometimes be placed in the same location.
– Fixed bug where pub couldn’t be destroyed!
– Fixed issue where sometimes building info would show production occuring, when there was none.
– Removed water foam effect on Metal (Mac) pending a proper fix. This avoids water looking glitchy.
On the surface a fairly small update, but introduces tourism (which will get many tweaks over the upcoming few updates). There’s also some under the hood stuff fixed with how things are calculated. Currently only one density of each tier hotel can be grown. You can currently also only import the necessary resources (next version will add the production of flowers, dyes and textiles).
Two new decorations have been added:
There were some issues with unconnected buildings sometimes showing production output. This should now be fixed and unconnected buildings should have an efficiency of 0.
I’ve started going through some of the existing code and cleaning some stuff up to make things more performant. When adding click and drag placement for buildings regardless of size I have also been able to remove a fairly sizable chunk of code. I’ve also cleaned up some of the shaders and changed import settings for textures to improve fidelity while also lowering size.
Hotels, click and drag construction and texture optimization
This week I’ve started working on hotel buildings. In terms of code, tourism is more or less already functional, although it needs some tweaks here and there, but hasn’t been set live since there haven’t been any hotel buildings.
I’ll be added the 1×1, 2×2 and 4×4 versions lower, middle to upperclass at the same time, one density at a time.
Here’s the lower class first densities:
The middle class, first density hotel buildings are also “done” (some tweaking remains):
I’ve also incorporated click and drag construction for all building types now. Previously, this was available only for 1×1.
Some new resources will make their way into the game in the next version: Flowers, dyes and textiles. Textiles will be a consumed resource in hotels. Dyes are made from flowers, and textiles are made from wood and dyes.
I’ve started changing import settings for textures (primarily normal maps and gloss maps), to make room for additional textures. I’ve also tweaked existing shaders to remove some stuff that is no longer in use and to make materials less heavy. The tree shader has also been changed so that trees now receive shadows properly!