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
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 (https://store.steampowered.com/app/779380/Atmocity/).
If you want to more closely follow the development of the game, you can also join Discord, https://discord.gg/CeUuyS9
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:
Traffic system done for now. No traffic rules yet, but good enough for visual bling.#screenshots #screenshotsunday #gameart #gamers #gamersunite #gamedevelopment #gamedev #unitydev #indiedev #steamgames #games #indiegames #dreamhack pic.twitter.com/RSmy6KNGeU
— Correcture Games (Will be at Dreamhack Winter!) (@CorrectureGames) November 25, 2018
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
Lots of stuff going on and lots to finish up before Dreamhack Winter next weekend.
Most of my recent work has been put into improving functionality and to a degree also visuals.
One of my main improvements has been to implement a sort of drag and drop typ system for roads and blocks so that players won’t have to place one after the other and can instead select areas to build on. In a “normal” city builder where building occurs on a 2D plane, this kind of functionality wouldn’t be much of a hassle to implement, but given Atmocity allows players to build in 6 directions things become a bit more complex.
For roads I’ve opted for a start and end position with a midpoint in between. For flexibility, using the scroll wheel players can swap the midpoint to change where the road goes.
The way this works is that when starting a build process, the world direction is checked and locked in. Players will then be able to plop down their road on that specific plane. When they need to switch planes they need to initiate another process (mouse click). I have found when testing, that this works fairly well since most of the time you need to navigate the camera to a new location when building on different planes anyway.
For blocks, the plane is checked and then using the scroll wheel players can switch build direction between xy, xz and yz.
This system will allow players to fairly quickly build areas ready for development. It also removes some of the camera micro management that was required before, when you’d have to move the camera around to place blocks in specific locations.
As for visual improvements, I’ve mostly focused on improving roads from their previous flat planes into being actual 3D. Not a huge difference, but it does look better in my opinion to have the sidewalks slightly raised.
I’ve started working on some decoration pieces as well. Once the game releases on early access, a fair bit of time will be spent adding objects that players can use to improve their cities visually. These will mostly just be for decorative purposes. Here’s a sort of “balcony” piece I’ve prototyped:
Cars are still being worked on, I’m almost done with the texture after having done the mesh (a fairly simple one). I’m also still working on movement, so I didn’t get around to fixing up traffic rules yet. Hopefully I can get this done in time for Dreamhack.
Surprisingly, this past week I also came across a fair number of bugs that have now been neatly squished!
/ Dispersing Minds
First off, Correcture Games will attend the Indie Playground at Dreamhack Winter in Sweden at the end of the month. Atmocity will be showcased and you can have a go at some gravity defying city building!
I’ve spent most of the week working on systems in the game. The traffic system is now functional, but needs quite a bit of work so that it looks good, spawns and despawns vehicles and just overall adds to the atmosphere of the game.
There’s quite a long ways to go, but at least cars don’t freak out when going around corners (that was a headache to fix).
I’ve started reworking some of the building placement stuff. Before, all buildings would be assigned a random rotation when built. Now I’ve changed it so that building rotation is controlled by the player using the scroll wheel. Buildings can still be rotated when they’ve been placed too. Here are some farms freely placed.
Next up, I’ll be changing block and road placement to allow players to assign areas with blocks and roads instead of having to place one after the other. This should allow for quicker construction of the foundation on which you build the city. Being able to click and drag where to place roads is also standard in most games of this type so it’s a given to add.
I’ve added a building register that assigns a unique ID to each building in the city. This will be used along with the traffic system to assign a vehicle to each building. Goods are produced and consumed globally, but each building will need access to other key buildings and this will be “tested” using the vehicles. The building register also allows for quicker processing when using the different view modes (like building efficiency view or building owner view) among other things.
Policy is on ongoing project. I’ve changed how tax rates affect citizen happiness from a somewhat consistent curve to one that allows you to set fairly high tax rates before truly affecting happiness. This should allow for some more player freedom, but also allows players to set fairly high tax rates if they have other things that offset the unhappiness from higher taxes.
The tax rates are still divided into three, targeting low/mid/high skilled labour respectively. The effect of taxes on happiness will also depend on how large the proportion of the targeted class is compared to the overall population. If you have a small low skilled labour population you will be able to tax them higher without losing out too much on the overall happiness.
I’ve also finally managed to get the graphs looking more up to my own expectations.
Lastly, I’ve implemented toggles for day/night, always day and always night into the UI. When moving the mouse to the top center of the screen, a small options panels slides down. From there (and the keyboard of course) players will be able to set the game speed (paused, normal, 2, 4 and 8x).
Next week I’ll continue work on cars, doing some modelling/texturing and trying to finetune movements and then adding some basic path finding and traffic rules. I’ll be working on drag and drop for blocks and roads and also some initial work on decoration tiles that can be used to improve your city visually. More policy is also on the schedule!
/ Dispersing Minds
This week I’ve been revisiting making buildings for the game.
I’ve focused on commercial buildings this week having finished 5 new buildings.
That means I’ve finished another full set of commercial buildings.
When finishing up this set and placing all commercial building sets next to eachother I decided to switch them around a bit. The above one was initially intended as the upper middle class set, but after reconsideration I’ve decided to make it the lower middle class set.
The set that was formerly the lower middle class will become the new middle class, and the former middle class will become the new upper middle class. I’ve also decided that post release, once there is time, I will expand each residential and commercial set with one more (a sixth) density. I’m also considering three classes (low, mid, upper) of single or possibly dual density commercial and residential buildings with smaller “foot print”. This would allow players to zone left over space. These sets should be available for the initial early access release of the game.
I’ve not only worked on buildings, but also continued work on the traffic system. Unfortunatly, this is proving slightly more difficult than expected. Hopefully by the next devlog I will have more info and maybe a gif to showcase the progress.
Next week I will also continue work on the middle tier of industrial buildings, and hopefully I can finished it too, as these tend to be fairly simple to make.
That’s it for this time!
/ Dispersing Minds
This week I’ve mainly worked on systems and bug fixes.
Most of the squashed bugs have been buidlings not setup correctly (box colliders, layers etc), so nothing huge has been found.
On the systems side of things, I’ve started implemented policies. First off simpler stuff like tax rates. Currently I’ve got tax rates for low, mid and high skilled labour implemented as well as commercial and industrial tax rates.
Along with the tax policies I’ve also added a new city stat – happiness. This depends on overall health, education and wealth levels as well as on current levels of pollution and tax rates. In the future I will add unemployment and safety into the mix as well. The level of happiness determines how fast your city grows, when happiness is too low, citizens will start to move out of the city.
A system for traffic is also in the works. Currently this is rather simplistic – cars are spawned and then drive around with no goal or purpose. The concept I’m working on should end up working though, but will require a few more weeks before it is fully functional and looks good.
Only one new building has been made this week – The centrifugal particle extractor. This building serves the same function as the atmospheric particle filtration plant, namely to filter out carbon, metal dust, sand etc. from the atmosphere for use in other production facilities. The centrifuge is more expensive and requires more electricity and water to function properly, but on the other hand pollutes much less. The idea is that this building will become viable only after having built a sizeable city.
I’ve tweaked the screen space reflections a bit and found a good balance between visuals and performance. It looks good especially during nights I find.
That’s all for this week. More stuff next week!
/ Dispersing Minds
The game will be updated on Steam fairly soon, this makes the third alpha version. After the next update, the game will move onto beta-testing for which I will involve more testers. The hope is to have most of the buildings and underlying systems ready for the beta, although some of the ui etc. will be underdeveloped.
This week I’ve finished the upper middle class tier of residences. This means that cities will now spawn the highly skilled labour required for the third tier industry (medicine and jewelry among others) and buildings like clinics and hospitals.
Prior to changing the buildingblock size, buildings grew out of the blocks. To prevent buildings from popping in, they were contrained to the same size as each block. Since there’s now a completely new sequence for when buildings are constructed (still WIP but detailed in earlier post), this limitation no longer serves a function. As such, the top densities for the upper middle class residential and commercial zones will be taller. This can be seen here:
This should make for more interesting city silhouettes once players start building for highly skilled labour.
The upper middle class and upper class tiers have high demands, Requiring buildings such as the library to be built nearby as well as consumption goods such as jewelry and processed food.
Since I recently added medicines as a resource, clinics and hospitals have been updated to require medicines as an input to function properly.
I’ve updated the UI to work with a new class – Window. Some ui-functions will be window based, like the options menu and global economy view. This class is used to manage windows better and make sure that if one is open, it’s closed before a new one is opened to avoid cluttering up the screen.
Options have been implemented in a fairly limited, but functional form. It allows toggling some of the more demanding visual features.
Moving into next week I will get back to work on traffic, which sadly didn’t make it into this update due to time constraints. The upcoming week will be heavy on systems work, like road connectivity and resource distribution systems. I should be able to finish a few of the remaining 30 buildings left for the EA-release of the game.
/ Dispersing minds
I missed last week because of a heavy workload! Sorry!
This week I’ve mostly worked on expanding the resource trees.
There’s now an additional food type – funghi. Like cereal, legume and fruit, it will be an input of the processed food building. But funghi will also be used to produce medicines in the medicine plant (to the left):
Another resource that has been added is diamonds. These are produced in the carbon pressurizer. Diamonds can then be used as an input to make jewelry (in the middle building):
Diamonds will also be used for the advanced circuitry resource, which will be required for high tech industry and the laboratory.
The electronics plant (seen to the left in the previous image), jeweler and medicine plant are all high tech production facilities which means they pollute much less, or not at all, and require highly educated labour to produce at maximum efficiency.
They also have a much cleaner look, as seen here:
Since there are now quite a few buildings that require highly educated labour, I’ve started working on the upper middle class residential buildings. Like lower middle class that houses both low skilled labout and mid skilled, the upper middle class tier houses mid skilled and highly skilled Labour. The first density is more or less done:
Overall, it’s been a productive week. Next weekend the game will be getting another update going out to testers. What I’m hoping to have implemented by then is the options menu, some more sounds, the full upper middle class tier and an early iteration of traffic (visually only).
/ Dispersing Minds