Atmocity devlog – 19

Atmocity devlog – 19

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.

W2_c.png W2_d.png
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

Atmocity progress update number 18

Atmocity progress update number 18

It’s been quite a productive week. I’m about to push version 0.44. This is the full extent of these two updates:

New features:
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.

Changed UI/UX:
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.

Other changes:
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.
Demolition indicator.

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

Atmocity devlog #17

Atmocity devlog #17


Given christmas was this week, I’ve only had a few days to work on the game. But the game did you out to a handful of testers on tuesday, and so with the response given, I’ve been able to make some improvements to the game and fix a handful of bugs. So moving forward, each update will include a changelog. This week’s changelog:

New features:
Autosaving implemented. Can be toggled in options.
Resolution scaling implemented into options menu.
Cars optimized to not run when off screen.
Early implementation of offers/demands/bribes from conglomerates. Currently conglomerates will only issue offers. Unlike demands and bribes, these can be declined without any negative effects. Accepting an offer improves the happiness of the conglomerate. Offers will be made if there are more than 3 active conglomerates in the city, if you are short on a specific resource, or if you have an abundance of a specific resource.
Added unemployment insurance and health insurance welfare systems to policy panel.
Added tax for pollution, which affects industrial output for goods, labour requirements and pollution levels.
Note: Save files drastically altered. This means old files are no longer viable. Start a new city!

Changed UI/UX:
Pressing escape closes open windows (as does right clicking). If no window is opened, opens options menu.
Rightclicking when building concrete foundation or roads cancels current build process. If no build process is running, deselects concrete foundation or roads.
Removed the constraint for max amount of concrete foundations that can be built in one go.
Building cost info locked to upper left position. This will be redesigned in the near future.
Conglomerate mappings added to owner display.

Glitches/Bugs fixed:
Cars looping around themselves and going into roads fixed.
Sound for construction is no longer overlapped when building concrete foundation or roads.
Correct text for concrete foundation now set in the cost display window.
Issue where concrete foundations wouldn’t be built if assigning to a large area fixed.
Wood processing plant now has to correct size (was scaled 1.5x for some reason).
Issue where image in the options menu would go full white fixed.
Construction guide for buildings, concrete blocks and roads now closes properly.
Commision rates when buying/selling resources were incorrectly calculated.
Save/Load menu would display all but one cityfile, fixed.

Other Changes:
Wood processing plant moved from category ”other pollutant” to ”other neutral” and can now be placed next to farms, absorbents and forestrys (etc.).
More tree variants added.
Linux version added, possibly unstable/broken.
Daytime post exposure scaled back.
New issues/Known issues (an outtake):
Sun is vaguely visible through concrete foundations.
Possible math bug when calculating happiness level, if you receive massive values all over the place – save the city into a new file and send this over for debug.
Offers are currently not saved.
Density shader still glitched.

Pushed to next update (an outtake):
Additional concrete foundations, fancier concrete foundations.
Demands and bribes (awaiting confirmed function of offers).
Property tax policy implementation.
Demolition indicator.
Fix for density shader glitch.
Fix for sun (currently breaks on build…).

One move toward making conglomerates more visible in the city, is adding their names to the owner display mode:

Of course, once the local economy panel is ready, they will be much more visible, since you’ll be able to check out stats like company value, number of buildings owned along with their moods etc.

Another change this week has been the addition of a message system:

From time to time, conglomerates will make offers, demands or attempt to bribe you. Currently only offers have been implemented. Offers are only made by conglomerates that like you and aim to help you, either by selling you resources you’re lacking to a slight discount, or by offering to buy large amounts of resources from you at a favorable bulk price. Declining an offer comes with no downsides, but accepting them further boosts the conglomerates happiness.
Next up, the demand system will be fully implemented. Demands will generally be made by conglomerates that are unhappy. Demands generally concern unfavorable policies like minimum wages and property taxes. Accepting demands will boost their happiness (and lower the risk of future demands), while declining a demand can come with a limited time stunted production rate or slower growth rate.
Last part of the message system is for bribes. Conglomerates will offer to pay you hefty sums of credits to change a policy. Declining a bribe doesn’t come with any negative setbacks, while accepting one runs you a small risk of capture which will lower citizen happiness for a period of time.

The bug where cars would loop around themselves, get stuck or run into streets has been fixed. Along with this fix I’ve also coded cars to not run when not visible. If they remain outside of the camera frustum för an extended period of time, they will instead respawn at their “home position”. That way the traffic system will be less performance heavy, while still adding some visual flare.


I’ve also done some tweaking to the day night cycle. I’ve lowered the post exposure setting during day time, to make it less bright:

Another issue has been that nights and shaded areas have been too dark, which has made construction and navigation during night time more difficult. This has also been tweaked, and is hopefully more managable now:

Moving forward I will put more effort into finishing the remaining buildings. Upper class residential and commercial tiers are my main focus. On the systems end of things, demands and bribes will be implemented in the upcoming week along with the local economy panel, including an early iteration of the budget panel.

/ Dispersing Minds 

Atmocity weekly update #16

Atmocity weekly update #16

A somewhat shorter week of dev, given christmas is just around the corner (merry christmas to all!), but there has been some progress with the game.

First off, the bond and trade system has been fully implemented and now works with saving and loading. The bond system allows players to lend money, that after 100 time units, needs to be repaid with interest. The interest rate is calculated from the global economy and the economic status of the city.


The options menu has been expanded to feature more settings. Aside from splitting things up into different categories, depth of field now has a focus distance setting. The camera rigidity settings has been implemented into the options. This setting allows players to set whether the camera is rigid or floaty.


I’ve added a demolish building Icon, to move demolition from the right mouse button. This makes much more sense given the controls in general. There needs to be a marker added to show what is going to get demolished though. But that will be done next week.


I’ve started refactoring and optimizing some code, namely the UI related code and the car code. The car code is almost refactored, but in doing so I reintroduced a bug where the cars loop around, so this will need to be adressed soon.


Overall, the game runs fairly well on my main rig now. It will be interesting to see how it runs on other rigs, and how other people experience the game, now that the early beta test is just around the corner!


/ Dispersing Minds

Atmocity devlog weekly update number 15

Atmocity devlog weekly update number 15


Another week of mostly systems work, but there should be some eye candy too. :)

I’ve focused quite a bit on performance this week. One of the main issues I’ve had has been global fog and sunshafts being fairly bad in terms of performance. So I decided to phase these out in favor of newer assets that hopefully are more performant. To replace the old global fog I decided to shift from version one of the post processing stack to the new version which includes global fog. This meant redoing some of the post processing effects. I consider this work worth the time though.


I also implemented Aura for better looking lighting. I think it gives the game a softer look, which works fairly well. Replacing the post processing also meant I gave the effects another look and did some tweaking to get performance where I want it.


I’ve also started working on separate profiles for the normal view and the efficiency/owner/density views. I want the latter ones to be rather clean and simple looking and give the city a sort of “model of a city”-type look.

Since I’ve updated to Unity 2018.3, I’ve also started looking into the jobs system to add more improvements in terms of performance. I spent a great deal of time trying to implement traffic onto its own thread but had no luck with this sadly. I will probably revisit this idea after the initial EA release since traffic performance is fairly ok as is anyway. I did, however, move traffic raycasting over to the raycastcommand feature, and this seems to have improve things a fair deal. :)


I’ve continued to work on the local economy system. There’s now a system in place to allow conglomerates to buy/sell property from eachother. This means the conglomerates that establish themselves in your city early on, won’t be clustered there over time. I’ve also started working on the conglomerate demand/offer/bribe system. Conglomerates will demand you change policy from time to time if they are unhappy. If you decline their demands they will half production, slow growth in buildings or not construct new ones. Conglomerates will also make offers for you to buy resources that you might need off-market, or offer to buy resources you have a lot of. Lastly, they might attempt to bribe you into making a policy change and in return give you money or resources. There’s a chance you will be discovered doing this, in which case citizens will become unhappy and maybe move away.

The last bit of systems work I’ve done this week was to start implementation of the trade system. Aside from buying/Selling resources directly on the market you can place long term purchse/sale orders. This means you’ll have a slow but consistent import/export of resources, which doesn’t affect pricing as much. This will allow players to make steady sales when they have a lot of goods stored, or if they are running low, start a steady import stream without affecting the price too much.


A maximum of 5 sale orders and 5 purchase orders can be held at the same time. Each time unit buys/sells 100 units of a good, so at most, users can ensure imports or exports of 500 units per time tick. This will allow players to make up for big surpluses or when they are running dangerously low on something in high demand.

Next week, I will be finishing up the trades system and also add the bonds system (a loan system essentially). Aside from that, the local economy will get more work as well as starting work on the budget panel.

/ Dispersing minds  

Atmocity progress report #14

Atmocity progress report #14

It’s been a productive week. Mostly under the hood stuff and mostly optimizations and bug fixes.

I’ve redone the control scheme slightly, moving the demolish action from the right mouse button to a separate button in the UI. Right mouse click now anchors the camera to a structure so that players can more easily get the camera around corners or rotate around buildings. Rotating the camera has been moved from left click to scroll wheel click. I’ve also tweaked the “floatiness” factor a bit more and this will be implemented into the options menu in the upcoming week, allowing players to adjust how rigid or floaty they want the controls to be.


I’ve added better lighting to the “shady side of the world”. This has been an issue for a while, that certain areas will always be worse lit. I’ve tried to compensate this by adding a dimmed light that is always opposite the sun. It will need further tweaking, but should end up solving the issue. This also works as an additional “night light”, making building easier during night time, if players insist on keeping the day/night cycle on at all times.


I got the save/load menu fully implemented too. The UI still needs work, but in terms of function it’s all there, thumbnail of the city and all included. I also managed to clean up some lousy placeholder code because of this too as well as removing what used to be a “loaded city”-scene and a “new city”-scene. This is now just one gameplay-scene, if it’s loaded with no city loaded, all the new city stats and resources will be loaded as well as a solitary building block placed in the center.


As an additional visual feature, I will implement several different skyboxes and day/night gradients. Exactly what types there will be, I haven’t yet decided, but there should be quite a few to add more variation.


Having done quite a bit of code optimization (some scripts were lagging behind in terms of optimization), next week I will get into refactoring some of the newer code, like drag and drop for building blocks etc. This code is rather messy atm and requires a good cleaning. I’ve also done quite a bit of UI-optimization, splitting up large canvases and also getting rid of some graphic raycasters on canvases where there are no clickable objects.


Local economy should also be finished enough to get it into proper testing next weekend, after which I will be able to set up conglomerate and citizen demand systems. Overall, I am behind schedule, but should have time to catch up after christmas. The game is not quite as finished as I would like for late alpha/early beta, but it’s good enough I reckon.

/ Dispersing Minds

Atmocity weekly devlog entry 13

Atmocity weekly devlog entry 13


Dreamhack came and Dreamhack went. I’d like to start out thanking those that dropped by and checked out the game. It’s always nice hearing that the game looks good or looks cool, but a completely different thing seeing people actually try it out and responding to things. Many people seemed very intrigued with the main concept of the game, being able to build really inventive cities while also managing complex economic systems.


Of course, I also noticed some things that need fixing and also received some very good feedback. I will detail some of the fixes I’ve made, feedback received and some other fixes I’ve done since the event and also what will go into the game as I move forward to the early beta build.

Unlike most city builders, Atmocity requires a fairly complex camera system so that players can navigate around the city. Most builders fare well enough with just a top down camera, that can move east/west/north/south. In Atmocity, players need to navigate within a volume in full 3D. With this comes a bunch of difficulties that need to be overcome. Most of the people who tried the game out did ok with the camera, but I did get some good pointers on how to improve it further. So in the upcoming few days, the options menu will be fleshed out with a Controls-panel. Here, there will be a sensitivity slider, since some players wanted the controls to be more rigid, while others felt they could be softer and floatier.

Aside from that, there will also be a type of sideways rotation or “lean” feature implemented, so that players will be able to easily setup the camera on level with the overall area they’re viewing. Currently this requires a bit of a specific click and drag movement to do. Zooming will be implemented on the scroll wheel, and clicking the scroll wheel will initiate the camera drag movement. Currently the drag movement is assigned to left click, but this will be used solely for building selection.

At the moment, demolishing buildings is weirly assigned to the right mouse button click. This will, as has been planned for a while, be moved to a hot key and button in the building panel. Instead, the right mouse button click will be used to “attach” the camera to buildings, so that it can rotate around them easier.

These changes should be implemented in the upcoming few days. Navigating mazes like this should become easier:


I discovered a handful of minor bugs, among them a null ref due to cars not despawning correctly when buildings were demolished. This has been fixed, as has the efficiency display shader not displaying correctly on skyscrapers.

I’ve also continued optimizing the game during the week. The reflection probe now uses time slicing so that it isn’t quite as performance heavy as before. I’ve managed to cut some shadow casters, removed hidden faces and made some other minor (per object) optimizations that make a rather sizeable difference in bigger cities. I’ve also managed to cut down on the tri count from shadows by cutting shadow casting distance a bit. This scene maxed out at 1.5 million tris and 1000 shadow casters before, I’ve now gotten it down to 900k tris and 300-400 shadow casters (depending on the number of cars in the scene):


Further improvements will be made making far LODs even more low poly, since they are hidden in fog and blur anyway.

An idea that came up at Dreamhack, to make building weird cities more of a functional choice as well as visual, was to make pollution not spread through blocks. This will be implemented in an early version too. This means that unlike now, when building factories within a specific radius from Residences will cause a penalty, you will be able to plan cities so that factories can be built on one side of a block and residences on the opposite side. There will probably be some sort of balancing issue with this, and I will need to implement it well for it to work well and not make city planning too easy.


My initial plan for the upcoming beta was to have everything more or less implemented. Sadly, some systems are still a bit too underdeveloped to be used properly, so some will be left out during the early stages of the beta. But I am hoping to get them done early to mid january so that they can be properly tested in good time before EA release too. Local economy system is still proving quite difficult, but should get there fairly soon.

The remainder of the week will be spent optimizing traffic further and adding the connection testing that buildings will do to ensure connectivity with key buildings like power plants and water absorbents. On top of that, the save and load manager will be started so that more than one city can be saved and loaded.


There will be Another update on Sunday. For those interested in trying out the beta, beta signup information is available on the Steam page for the game (

If you want to more closely follow the development of the game, you can also join Discord,

(Also vote for the game on IndieDB:
/ Dispersing Minds
Atmocity progress update entry 12

Atmocity progress update entry 12


This week I’ve been putting in a lot of polish to make the game more presentable for Dreamhack next week.

First notably, the traffic system is now in. It’s still fairly basic with cars just moving and not really abiding to any rules. It’s also not as performant as it will need to be further down the line. I’m going for some sort of ECS solution later on, but there hasn’t been time to fix that now. It works for now at least. 🙂


A gif of the cars in action, prior to some further polish, can be seen here:

Currently, all buildings spawn two vehicles, but later on I will probably make this one per non growable buidling, and then make it 1-5 for residential and commercial buildings so that traffic levels sort of follow the density and size of the city more.


I’ve had to put in quite a bit of effort optimizing the game further. I’ve moved shadow casting over to the lowest poly LOD for each building, which lowers poly count for shadow casting. I also decided to cut having four shadow cascades and instead go for just the two. This cuts the poly count down further, without too much of a cost visually.

Earlier, I’ve run the game at an FOV at 60, which has now been increased to 80. There will be an FOV-slider in the future, of course. But keeping things consistent allows me to find some sort of base-performance level.

Since finishing up the current version of the traffic system I’ve also added in cars as props for each building. This of course adds more shadows and polys to the scene, but I’ve managed to offset this with the above improvements. Also, as all props, cars are grouped together when a building is constructed.


The day night cycle system has also been optimized, removing some lousy code and also fixing some minor bugs (sun sometimes displaying at night for instance). I’ve also given it a few tweaks to improve visual fidelity. The “Always night” and “Always day” options are not fully implemented as well proper menus for fast forwarding.


Since adding the click and drag function for building blocks and roads, I’ve also decided to add a new Visual queue to guide players to what’s going on and allowing them to follow what “rotation index” they’re current only.


All in all, the game runs fairly well on my rig at a consistent 60 FPS. Currently textures are pushing memory a bit (4GB only for textures). But they’re mainly 4k textures, so I will be adding a downscaling feature to allow lesser rigs to run the game with lower texture quality.

The buildings are all event driven so they are very performative. All calulations run on a separate thread to allow for complex calculations to run without hickups. Cars are currently the main source of performance drop along with post processing effects (On CPU and GPU respectively).

All in all, I’ve managed to get into a faster pace of development recently, which is good since after Dreamhack I will focus on getting a first early beta version out to testers (signup info on Steam!). This is scheduled for December 16th!

/ Dispersing minds