Following last weeks update, I’ve had to spend time fixing some unfortunate glitches that followed. Not unexpected since the update was rather substantive, but it did mess with my planning a bit. Oh well!
I have started finishing up the remaining buildings. One of the buildings finished this week was the Fusion power plant seen here:
The fusion power plant needs to be researched before you can build it. While expensive, it does produce heaps of power in a clean way.
I’ve also started reworking water production in the game. Currently you build absorbents that absorb moisture from the atmosphere to gather water for your city. This system will now be part of a future climate system. Pollution and moisture will now play a role in the city living conditions. If pollution rises too much (like a lot) you’ll achieve a green house effect and people will dislike living there. There will also be a limit to how much water you can absorb from the atmosphere in a given time unit. So in order to produce more water, you will be able to build water treatment plants. Also, you will be able to build cisterns to store water, unlike now, when water is never stored. A water district can be seen here:
The food production Buildings are all finished. The last one that has now been added is the Food processing plant, which takes cereal, fruit and legume and outputs processed food. Processed foods are required to keep your upper class citizens happy.
I’ve found a number of bugs in vicinity testing when placing buildings. For example, residences would sometimes register industry, although these were placed on the other side of a block. This should be functional now.
Lastly, I’ve started working on improving performance when building large scale cities, since I won’t be breaking any saves from now on. What is on the list for next week is culling cars when they are outside of view
/ Dispersing Minds
This week I’m updating the Steam beta builds to version 0.46 which adds/changes/fixes the following:
This versions breaks old save files, the old files can still be accessed in game, but will load a corrupt city. Old save files can be removed.
– Connectivity between sections of the city now implemented. More work and tweaking will follow.
– Additional taxes. The code behind the system has been revamped as well, to allow for quicker implementation. This breaks old saves!
– Commercial tier fully implemented. Like the residential tier, demands are not final, as some buildings are still missing.
– Mid tier industry added. Demands are not finalized.
– High tech tier of idustry added. Demands are not finalized.
– Road size, road system and traffic system revamped. This breaks old saves!
– New traffic system. The old system used raycasting and was not scalable. This was mainly a for-show system. The new system uses threading and allows traffic to be scaled up. It also improves the connectivity system in that they can share information. Movement is a bit more floaty, which will adjusted in iterations.
– Decoration tiles – a first decoration tile has been added.
– Fixed text overflow/truncation in Spanish localization.
– Fixed a couple of incorrect references in the localization file.
– Added load function from main menu.
– Window backgrounds changed to make visibility better.
– Budget panel implemented. Also, values for cost and revenue for each policy slider added.
– Policy window layout changed. More polish will be added to this over the upcoming few updates.
– Fixed bug in building info display for commercial buildings.
– Escape opens main menu in game.
– Build hologram when placing roads now incorrectly becomes red when location has a building.
– Fixed display for road (and blocks) is not red
– ? button in main menu fixed.
– Change res when in windowed fixed.
– Double resolution sets in options drop down fixed.
Glitches/Bugs/Poor optimizations fixed:
– Calculation bug affecting middle class labour fixed.
– Calculation bug affecting happiness (and bugging out several other values) fixed.
– Demolition indicator. Will be tweaked further later on.
– Reintroduced constraint for size of foundation volumes that can be built in one process (much larger than before). This is to avoid accidentally placing large volumes when raycasting against nothing.
– Building vicinity check now disregards buildings on the opposite side of a block, allowing you to better plan cities.
– Added range display for building vicinity check.
– Issue with hologram shader on Linux. Shader has been replaced.
– Post processing stack has been updated, which might fix a performance issue on Linux.
– Certain aspects of the Spanish localization missing (because of new text items).
– Worldsize of templates not variable. As such, it is not possible to build to the full size of the current templates. This will be fixed in the next update.
– Performance issue when starting threads for calculations and connectivity.
Pushed to later update (an outtake):
– Additional concrete foundations, fancier concrete foundations.
– Fix for sun (currently breaks on build…).
– Updated spanish localization.
– Russian localization.
– German localization.
– French localization.
The new traffic system is performing as well as expected! It does need the addition of culling cars that are far away and don’t need to have their positions updated, but all in all it’s working quite well. Aside from a few visual tweaks, it is more or less finalized. There will be a handful of more vehicles though, later on.
Following the traffic system overhaul, I have now also changed the road tile size and changed the overall grid in the game. Buildings now make up 4×4 of the grid, and roads are 1×1. Essentially roads are now 1/4 the size they used to be. This makes cities look denser and also allows for more interesting city layouts.
With the smaller grid size, I’ve also started implementing decoration tiles. These have no function for the city, but is also a way for plaers to customize their cities.
The policy window has been getting some work. Although a lot of work remains both in terms of layout and adding more policy to adjust, it is getting closer to its final layout. Implementing policy moving forward, should be much faster given that I’ve overhauled the code behind the policy system. I’m hoping to get quite a lot of policy and funding options added in before the next update.
Here’s the budget panel:
And funding options:
The vicinity system that checks whether a building is within range from a good or bad building has been changed to allow, for example factories, to be built on the back of blocks without negatively affecting buildings. This way, players will be able to build denser cities nd also plan their districts in a different way.
A first iteration of the econopedia has also been implemented!
Unfortunatly I’ve missed the target of improving on sounds and implementing the localizations, but I am otherwise ahead of Schedule. Localizations are quite simple to implement, so once I get the French, German and Russian ones they will be added fairly quickly. I had also planned on adding music for this build, but music is a bit behind schedule but has been coming along really greatly recently and there should be some tracks added for the next build.
/ Dispersing Minds
Like last week, some time this week was sadly lost to being ill. Luckily, the second half of the week has been really productive and I’ve managed to finish up some of the lagging systems.
The main focus the past few weeks has been to overhaul the traffic system. This is now fully complete. The old system relied on raycasting between each road tile to determine viable routes. This was obviously bad design, but done to have “something” for Dreamhack. Now, the system instead registers nodes from road crossings, turns and road tiles where traffic will leap over an edge. Using this information, each node can be given viable exit directions that is fed to vehicles.
Where the old system could handle something like 50 vehicles in view at the same time, the new system has been stress tested to run 1000 vehicles visible in scene at 60 fps. Given culling etc, this is a number unlikely to ever occur in any given view, but it’s good to see how well it can perform.
Here’s the system being tested:
Having finished the mid tier industry buildings last week, I’ve moved on to finishing the high tech industry this week. With that, only 10 buildings remain for the EA release of the game. That means I’m actually a bit ahead of schedule and should be able to start making a few decoration tiles for city customization. Here’s the high tech industry and an early decoration tile:
It’s been a rough week battling with both day job, game and also a massive cold (which seems to be winning…), but there’s been some Atmocity progress nonetheless.
Like the past few weeks, a lot of focus is currently on systems work and finishing up features. A lot of work this week went into finishing up the connectivity system in its current state. This will need some further tweaking further down the line when I’m done redoing the roads and the road system (more on that further down). The connectivity system now finds the divided sectors of the city, tests connections between them and then groups connected sectors into units. These units can then be used to calculate production and consumption.
Here’s the system working out what is connected and how:
Something that has been on my mind a lot recently has been to lower the grid size yet again. Those who have followed the game for a longer period of time, know that this has been done once before. Then it was done to get rid of the blocky look of the game as well as to get roads in. Had the grid remained the same size, roads would have become gravely oversized. Over time, I’ve started feeling roads are STILL oversized. This coupled with me now thinking about what will go into the game once all the main buildings are finished, has prompted me to cut the grid size down even more. This will allow roads to be smaller, buildings to be placed with greater detail and with smaller offsets, and the introduction of a lot of small decoration tiles etc. once all the main structures are finished. This will increase what players can do in terms of city customization and decoration.
Here’s the smaller grid size in action (roads not adapted yet).
And here’s the proposed new road system (a quick mock-up):
Following last week’s policy system overhaul, I’ve now started adding in new policy options faster. For the upcoming week I’m hoping to have a whole set of funding options added, so that players can control the funding for different types of educational facilities and healthcare for example. I expect most of the early-access version’s policy will be done for the 0.46 version (which has been moved from the 6th of February to the 17th due to revamped systems not being quite ready, but more features will be included).
I’ve received more feedback from testers, a set of bugs have been found as well as some QoL features have been suggested. These include tweaks to controls and placement of panels etc. Aside from this I’ve also started working on some QoL features that I’ve been thinking about myself. Among them is a range display when placing buildings. All buildings perform a vicinity test when built to check if there are any good or bad buildings nearby. The range display will show the spherical range of buildings as well as light up what good and bad buildings will be within range when placed.
Lastly, I’ve gotten the mid tier industry finished. The mid tier industry is less pollutant (only has marginal pollution). When finishing these buildings, I decided to split industry into three different types so they can be managed differently in the vicinity check. Dirty industry is disliked by all residential and commercial zones. This mid tier industry (called neutral in code, even though it isn’t quite) can be accepted by lower class and lower middle class residences and commercial zones. The high tech industry can be accepted nearby by middle class and upper middle class residential and commercial zones. The upper class residential and commercial zones are very picky, so they don’t like any nearby industry at all.
/ Dispersing Minds
Skipped last week’s update, because there was mostly system work done and not a whole lot to write about at that stage.
This week however, there’s a bunch of new things going on!
Firstly, I’ve started working on the connectivity system, which will check connectivity between buildings and sections of the city and calculate production and consumption based on what is available in connected parts of the city. Currently, the system divides the city into small “cubes”, and connectivity is then checked between cubes. Next week, I will start dividing these into groups, so that calculations for produces and consumed goods can be done on a group by group basis. For most players, I reckon the entire city will be interconnected, so there will only be one group, but should a player want to do so, cities will be able to be divided into separated sections. This system will also check travel distances for labour, so that all labour needs to be able to reach a workplace within a specific distance. This means that unemployment and labour shortages can arise, if there’s a difficulty in reaching work places. This is to simulate having to have reasonable travel times to get to work. The vactrain system will extend the travelling distance and allow labour to travel further to get to work.
Here’s an image of the system, when mapping the city:
I’ve also overhauled parts of the policy system. This is mostly to allow faster implementation of new policy. These were hard coded before, but now there’s proper code to handle a handful of different types, that can just be added to an array. This also makes saving them into the data file easier later on.
I’ve finished up the remaining commercial buildings as well! With that, I only have another 18 buildings left (out of 111) to make for the early access release. Next up will be the industrial zones, after which I only have another 11 left to make! I’ve already started expanding the list of buildings that will be implemented post EA-release though, including a sixth density for each residential and commercial zone and a set of smaller zones and parks.
For the upcoming beta-release (scheduled for the 4th-6th of february), the budget panel will also have been implemented. Currently I’m working on the data struct that will collect all the data necessary during the calculations cycle. This includes fetching costs for sets of buildings such as healthcare buildings or education buildings.
I’ve also started receiving some early version of Music from the composer. It’s all sounding very promising and fitting! It’s going to be very exciting to start getting some music implemented into the game.
/ Dispersing Minds
It’s been a long and productive week for sure! Testing is in full swing and I’ve made plenty of changes according to the feedback I’ve received. One of the bigger changes is that I’ve started redoing the UI to make it easier to more directly find the items you are after and to lower the amount of scrolling required when building things.
Another change (that I’m still working on) is moving more values over to text and icon displays. For instance, instead of displaying city happiness as a value from 0 to 100, the value has been divided into five smiley levels. To avoid the confusion behind “negative unemployment” (labour shortage), this will be changed into categories of severe and mild shortage/unemployment and a neutral state.
The thinking behind this is to get players more focused on the bigger picture. The actual values can still be found in more precise panels, like city statistics and budget.
I’ve started working on buildings again as well. The entire roster of standard residential buildings available at early-access release are finished. I plan to also finish the small footprint residential buildings as well (about 6 or so, and more added after release).
The upper-class tier of residences can be seen here, along with a very WIP version of the new UI.
The entirety of the residences can be seen here:
Another change this week has been the addition of adaptive depth of field. Unlike before, when depth of field was always set at a specific focus distance (modifiable via options though), distance is now set depending on the distance to a building being in view of the camera. If no building is found, focus is always set to the sky. This way, there will never really be blurriness where a player is facing the camera.
I’ve also managed to fix a couple of bugs and glitches, from both feedback and own discoveries. Moving toward the mid January update (scheduled for Wednesday or Thursday) these are the current changes:
– First iteration of new UI. More adjustments to come.
– Upper class residences implemented. Their full requirements are not finished for the time being as some more resources need to be implemented.
– Fixed null in conglomerate window panel.
– Fixed null when a new conglomerate establishes itself via trade of property.
– Fixed null causing file entries to not load in the save manager.
– Reverted to old way of calculating efficiency to avoid ”ping pong” values – efficiency swaying from 100% to 0%. Might revisit this later on.
– Added adaption rate to building effiency changes. This makes building slowly transition from one effiency state to another instead of instantly switching from one to the other.
– Camera shake when constructing buildings now works properly in paused mode and 2-8x speeds.
– Education values now scale properly with city size.
– Crime levels now depend on unemployment, education levels and size of population classes.
– Crime level added to happiness calculation.
There will also be the addition of Spanish localization, a selection screen that allows players to select start layouts for foundations and a toggle for depth of field. The missing icons in the UI image above will also be implemented.
/ Dispersing minds
It’s been quite a productive week. I’m about to push version 0.44. This is the full extent of these two updates:
Services implemented. Commercial zones provide services demanded by residential zones and some public amenities. Naturally, these cannot be traded like normal goods and cannot be stored.
Conglomerates make demands if policy targeted at them is too strict (high taxes for instance). Only unhappy conglomerates will make demands, so ensuring you don’t demolish their buildings and keeping taxes fair will make them less inclined to make demands. If you decline a demand, you may run the risk of a short period of lower production of goods or services. The rate of lower production and the duration depends on how unhappy the conglomerate making the demand is.
Bribes have been implemented. Conglomerates will try to give you things in return for changes to policy they dislike.
Property tax has been implemented. This puts a percentage tax on the value of conglomerate buildings. As your city grows, taxing property can amount to a fairly substantial source of income. But it’s also a source of discontent among your conglomerates.
Conglomerate happiness now affected by policy and dependant on conglomerate memory.
Conglerate information panel (local economy) available.Services icon added to resource panel.
Corrections center building added.
Safety indicator added to city stats panel.
First iteration of crime added. Crime currently doesn’t affect any values around the city, but has been made visible to the player via the city stats panel. Crime is (currently) managed with police departments and corrections centers and calculated on a citywide basis.
Conglomerate happiness now indirectly affected by business cycle, wage levels and unemployment. This will be developed more later on.
UI adapted to allow 16:10 aspect ratio. A minor issue with positioning of hide/reveal side panel arrows remains, as does a positioning issue with the message panel at the bottom of the screen.
Corrected a discrepancy between actual values and displayed values in UI.
Added tool tips to building info panel.
Moved scrool wheel from zoom to translate (scrolling moves camera forward/backward). Zoom function on keys Z and X moves camera anchor and changes the rotation center.
Glitches/Bugs/Poor optimizations fixed:
Further vehicle code optimizations and refactored code.
Fixed bug in text display for health and environment indicators in city stat panel. Text display would sometimes be incorrect.
Fixed a bug where sky rotation change when switching to day/night only mode.
The sound trigger code was incredibly inefficienct, especially when the camera was close to many buildings. This was the source of significant slowdowns. Now, only one building will be fetched at any time using a different (and faster) method.
Sped up performance of calculation thread.
(the two above mentioned fixes lower the fps-drop when running the game in 4x or 8x speeds)
Fixed faulty calculation of unemployment insurance cost.
Health values were persisting over calculations meaning ever improving health. Corrected by value not persisting over calculations.
UI for trades, bonds and offers update when panels are opened. Before they updated regardsless of whether the windows were open.
Fixed glitch in concrete foundation manager causing a null.
Changed calculation of efficiency when missing resources. Before, missing one out of three resources (for example) would cut 1/3 of efficiency. Now completely missing a resource will set effieincy to 0.
Fixed overlapping buttons in options panel.
Fix for density shader glitch.
New issues/Known issues (an outtake):
Minor issues with menu in 16:10 aspect ratio as mentioned above.
Pushed to later update (an outtake):
How control schemes are affected during construction will be tweaked.
Additional concrete foundations, fancier concrete foundations.
Fix for sun (currently breaks on build…).
Remainder of 16:10 aspect ratio fixes.
Some of the bigger changes this time around is the addition of services as a resource. Commercial buildings not only provide work places for your citizens, they are also more valuable for conglomerates than residential and industrial property types. As such, they also add more income if you tax property. Aside from that, they produce services which are consumed around your city. Currently, only residences consume services, but in the next update, some other buildings will be added as consumers of services as well. In the next update the rate of service production will be affected by commercial taxes as well.
A first iteration of crime has been implemented as well. Crime currently doesn’t affect anything in the city, but in future releases crime will affect property values, production and the rate of construction for conglomerates. It will also affect health levels marginally. Along with the addition of crime, comes the corrections center building:
This, together with the police department, combats crime in the city. Crime levels grow linearly with the population, but also exponentially from unemployment. Other factors will also be added in future updates.
Conglomerates can now be viewed in the first iteration of the local economy panel. Here you’ll be able to view the currently building count and value of each conglomerate, as well as variables such as happiness, patience and memory. Patience and memory are tied together with the ceo of the conglomerate, and since this position changes over time, so do these variables. The conglomerate happiness on the other hand, depends on how well they feel things are working. High tax rates will drop their happiness, while good cooperation and fortunate global economy will raise their happiness.
The last offertype has also been added – the bribe. Conglomerates will from time to time attempt to bribe you into changing policy they dislike. Unlike demands, bribes can occur even when conglomerates are happy with the current levels of taxes, but want you to lower them further. Currently, accepting bribes do no harm, but the idea is that this will lower happiness for a brief moment and increase the base line crime rate (setting a bad precedent for corruption).
I’ve also managed to fix a handful of bugs relating to production not being calculated correctly and in particular ui bugs relating to efficiency and production rates not being displayed properly. There’s still some work remaining, but overall, most of these issues seem to be fixed now.
Next week I will push to finish up the residential and commercial tiers completely and continue work on the budget panel. I’m also finishing up text documentation so that I can start sending out all text elements to translators.
That’s it for this time!
/ Dispersing minds