Asset Properties¶
In Cities: Skylines, there's a class called ImmaterialResourceManager, which holds datatypes for resources as well as functions used for operations on these resources. Various types of buildings like commercial buildings are able to "implement" these resources given a function that takes the resource itself, rate (relative integer, no specific unit), position, and a radius. It is also possible for a resource to not have a position and a radius, which in this case can be a global resource. These resources are defined as an enum that goes as follows:
- HealthCare
- FireDepartment
- PoliceDepartment
- EducationElementary
- EducationHighSchool
- EducationUniversity
- DeathCare
- PublicTransport
- NoisePollution
- CrimeRate
- Health
- Wellbeing
- Density
- Entertainment
- LandValue
- Attractiveness
- Coverage
- FireHazard
- Abandonment
- CargoTransport
- RadioCoverage
- FirewatchCoverage
- EarthquakeCoverage
- DisasterCoverage
- TourCoverage
- PostService
- EducationLibrary
- ChildCare
- ElderCare
- None
There's also helper functions that given a certain position can return the values of resources at that given point. This is presumably called by human agents as well as building agents according to their type in order to fetch what kind of resources are available and what kind of ones have a shortage.
Certain resources such as attractiveness and entertainment in commercial buildings have some defining factors, such as:
- If the destrict they're in has a no loud noises policy:
entertainment = 25
attractiveness = 2
Otherwise:
entertainment = 50
attractiveness = 4
- If the district has no taxes on leisure:
entertainment is increased by 50
attractiveness is increased by 4
Otherwise, it's only increased by an equation that accounts for tax rate:
entertainment = entertainment + ( 50 / (taxRate + 1) )
attractiveness = attractiveness + ( 4 / ((taxRate / 2) + 1) )
Attractiveness and entertainment are also affected by production rate in an obfuscated equation.
Another type of buildings like university campuses, use a different way of defining attractiveness, campus buildings are defined as parks due to their large size and supposedly open aareas, and have a special attractiveness value that is affected by a "bonus" given by some bonus attributes:
- None
- LandValue
- Health
- Academics
- Tourism
- Graduation
Where Attractiveness is specifically added based on the Tourism bonus
Until now, no references that read from attractiveness resource other than an accumulated value for each district, but so far all of the transfer offers found didn't have anything to do with attractiveness, entertainment or any resource for that matter. The choice of citizens to go to a specific location is still very much randomized and isn't affected by that location's implemented resources.
Transfer Offers¶
As observed from the source code, there's no clear conditions on what sending incoming transfer offers is based on, it's only based on whether the buildings are activated and have a sufficient capacity. For instance, in schools, there's a "ProduceGoods" function which is meant for students, that as long as the school isn't full and is running will send a transfer offer for all education levels. Outgoing offers on the other hand are sent on many conditions like fire, building evacuation and building deactivation.
Common buildings (All buildings inherit from this)¶
Incoming offers¶
Transfer Reason Worker: Workers capacity - existing workers > 1 (for all workers' level of education)
Outgoing offers¶
Road Access failed, Garbage, Mail (?), Flood, Crime, Fire, ForestFire
Schools¶
Incoming offers¶
Transfer Reason Student: School capacity - existing students > 1 (for all student levels)
Outgoing offers¶
Doesn't override common buildings.
Campuses¶
Incoming offers¶
The same as school, except that it adds resources related to being treated as a park.
Outgoing offers¶
FloodWater (Because flooding in parks is handled differently)
Police Stations¶
Incoming offers¶
CriminalMove: if Jail capacity allows
Crime: if police cars are less than the "production rate" of the police station
The rest of the building types follow this same pattern, where in their ProduceGoods function they add incoming offers based on the service they're offering and workers level they're hiring.