News:

Simutrans Sites
Know our official sites. Find tools and resources for Simutrans.

Different types of cities / How to improve city growth

Started by Bear789, March 26, 2013, 08:39:16 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Bear789

Given my experience with the game, if you play a map long enough, all the towns become virtually the same: same size, same attractions, etc. It becomes boring and there is little challange as every place requires the same strategy to develop.

Following an old discussion in the Pak 128.Britain board, I had this idea: what if towns are of different types? There may be indipendent villages that will never become huge metropolises no matter what, cities that can grow like the current towns do and (if it's doable) maybe suburbs, that are smaller villages spawned by well developed cities.
City buildings, attractions and consumer industries/shops should have a new parameter in their dat files to let pak maintainers choose in which town types they can spawn.
City halls too should have this option, so that pak mainteiners, if the so desire, can give each city type a distinct type of hall so that players can understand which kind of town they are looking at.
The new game dialogue window can have separated options to let players choose how many towns will be villages and how many cities.

Fabio

Interesting idea.
I like especially the suburbs part: suburb Towns could spawn during the game, much like industry chains.

Bear789

Exactly! It will make the maps more dynamic and add more passengers destinations as time passes.

Sarlock

Rather than pre-define specific city types, it would probably work best to improve city growth to include more factors.  We are discussing this idea in another thread City Planner.  If residential growth is predicated on proximity of jobs and transportation, then each city will evolve in a different pattern... and this evolution will influence its next phase of growth which will continue to make each city more unique.  Position of initial factories would provide the seed to influence future city growth.  Creation of transportation hubs would guide city expansion to concentrate in certain areas.  Suburbs would develop in areas where transportation options are lower and jobs are further away; higher density buildings would cluster where good transportation options exist and jobs are available.

To make this happen, each building would probably have to be individually calculated according to its specific requirements and a weight calculated to determine the chance that it would grow to the next phase.
Current projects: Pak128 Trees, blender graphics

IgorEliezer

Interesting idea.

Simutrans could have three types of cities: Capital, Town and Village. This feature could influence how they grow and how citybuildings are placed in the map, for example:

- Monuments and public buildings: big monuments and park, government buildings, cathedrals and universities would appear only in the capitals.
- Zoning: a village would have res and com, while towns and capitals could have any zone.
- Growth: different growth factor for each type of city.
- Public player can "upgrade" the status of a city. Village -> Town -> Capital. The "Allow city growth" button should be removed or make it public player only.

Ters

There is nothing about a settlement in itself that prohibits it from becoming a big city. Some places around here weren't even villages until a railway station was built. Many of them have now surpassed and succeeded the original administrative centre of the municipality. The old centre degrades to little more than the church, while the new centre has a station, shops, some industry, lots of houses, but no church.

So having settlements predestined to stay small is just wrong. If you build a transportation hub there, it will grow. The problem is that in real life, it will grow because people come from the surrounding area to travel by train somewhere even further away, feeding an industry based on serving these travellers. Simutrans neither has people living scattered in the countryside, nor do they seek out transportation beyond the catchment area, which is very small.

Building a station in the middle of nowhere, perhaps strategically placed on an existing crossing trade route, will in itself spawn a village and maybe even a city eventually.

Other things than transportation will also cause a settlement to grow, like industry that is tied to the location such as mines. Of course, without adequate transportation, the mine won't be thriving enough to induce a boom.

ӔO

if cities grow with traffic, they ought to shrink if they get less.

not unusual for mining cities or manufacturing cities to dwindle in population when those mass employment businesses close shop.
My Sketchup open project sources
various projects rolled up: http://dl.dropbox.com/u/17111233/Roll_up.rar

Colour safe chart:

Fabio

New villages could spawn as the world population grows, and they could spawn near hubs or highways.

Also new factories should spawn near hubs.

gauthier

What about making rural industries like farms spawn away from "developing" cities, and allowing those cities to destroy farmlands (and even farms if necessary) as they grow ?

Bear789

@ Sarlock and Ters: I thought about something like that, but I feared that it would be too complex for Standard, so I thought about something that looked easier to add. I'm ok with a more complex and realistic approach to city growth.

@ ӔO: you are right, bit there are problems: if a city shrinks without transport, it means that most of the villages at the beginning of a game will die because you can't serve all of them right from the start.

ӔO

hmm, well, towns rarely up and vanish entirely. They could just dwindle until the city hall is left.
My Sketchup open project sources
various projects rolled up: http://dl.dropbox.com/u/17111233/Roll_up.rar

Colour safe chart:

Sarlock

#11
I have been thinking about this quite a bit.

As it currently exists, each village/town/city is individually created with an administrative centre (town hall) which becomes the center point from which city growth occurs.  The game computes service given to the buildings within its area of control and determines whether growth should occur or not.

I think the logic that determines whether a city growth step should occur or not and whether the growth is Res, Com or Ind is fairly sound.  cityrules.tab has a complex set of rules that governs city growth when a new building is required.  For the most part, this also works quite well and creates a fairly decent looking city as it expands outward.  New construction at level 1 is less influenced by available transportation options.  Building a new residential house near a bus stop is desirable but not that necessary and wouldn't influence the choice of putting down a new house much.  It would probably be safe to exclude this calculation from a revised city growth system and still have very improved results.

This leaves us with incremental growth of existing buildings.  I believe this is where some refinement could go a long way to creating much more realistic cities from both a gameplay and appearance standpoint.  Each time the game engine decides to increment an existing building by +1 level, it determines a potential location:

>Location of growth: Well served transportation hubs should heavily influence future growth.  A station with good traffic flow-through will invite future population growth.  When searching for a site for +1 growth level, heavily bias towards a tile within the catchment area of a well served station.  Further, nearby buildings of higher level would influence that tile to grow also.  This encourages downtown residential/commercial areas to cluster.  The town hall should also invite growth near it, to encourage the creation of a more dense downtown zone.

Once the growth engine picks out a candidate for +1 growth, it then performs an age check:

>Age of building: New buildings shouldn't be upgraded a month later.  A setting for the minimum age a building should be before it is knocked down and improved would be useful.  This would preserve older sections of a city and then begin a revitalization after they reached a certain age.  An age minimum can either be global, set each for res/com/ind or added directly as a .DAT pak, allowing each building to be individually customized for a minimum renovation date.  This would allow pakset developers the freedom to create certain buildings that are intended as historic elements of a city and will be kept for a long time (or even forever, if desired).  A building without this parameter set would default to the global setting.

If the building we wish to upgrade by +1 is not available to upgrade because it is not old enough yet, store our +1 growth and keep it for next growth phase.  The next growth will be +2 instead of +1 and it will perform the same checks as above.  Because we don't want to increment just +1 every time a building is old (we'd never get to skyscrapers except after 500 years) growth should jump by a random factor (set in pakset config) based on level range of the pakset.  Doing a big level jump should limit future growth until we've "caught up" to the new building's size.

>Building new instead of upgrade: At a certain point, queued growth levels should push a new larger building to be built instead of upgraded.  As the growth increments higher (to +10 or so) the percentage chance increases that a new building will be built to use up this pent-up demand.  This percentage could be influenced by city size: a larger city is more willing to queue up more growth (+20 or more) than a small town (+5).  If a new building is created, it is subject to the above bias: near well-served station and near other buildings of similar/higher level and zoning.  The growth increment resets to 0 and we start from the beginning again.
(if no suitable spot is found, we just keep incrementing until an old enough building is due for an upgrade)

With minor tweaks to the logic, I think this would result in the following dynamics:

* Clustering of higher-density buildings near well served stations
* Clustering of higher-density buildings near each other (downtown areas)
* Old and new sections of cities - old sections of town will age together and retain a memory of what the town was like before it grew, until it reaches a certain age and undergoes a revitalization and significant density improvement

Cities that are well covered with stations would see a lot of density growth, especially clustered around the main transportation hubs.
Cities that have one main hub but very little coverage would grow more like a suburb.  A denser cluster would occur around the hub and town hall but the rest of the town/city would remain sprawled out and fairly low level.

Thoughts?
Current projects: Pak128 Trees, blender graphics

jamespetts

This is an interesting set of ideas. I have also been considering city growth in connexion with the plans to reform passenger generation and urban development in Experimental. One thing that I had not considered is building age; I do wonder, however, whether building age per se is ever actually taken into account when deciding whether to upgrade: developers will generally only consider whether they can make money out of demolishing the old and building the new, which means that the market demand for the new building must be sufficient compared to the old to outweigh the cost of construction. If a building is new, it is likely that whoever built it made it the right size (more or less) to fulfil the market demand (subject to any local regulations) at the relevant location. The absence of frequent churn should therefore be an emergent property of a system rather than something directly programmed.

As to the effect of transport on building growth, using stop catchment areas is too blunt, I think, at least for Experimental: we have private cars and walking effects in Experimental, the latter of which means that a much larger catchment area is a good idea. What is better to do instead is to base the growth of city buildings on the transport success rates of nearby buildings; for residential buildings, the passenger trips to work ought to be considered; for commercial buildings (including end consumer industries built in towns), the long-distance passenger trips, the commuting passenger trips and the goods delivered to nearby industries ought to be considered; for industrial buildings (and for non-end consumer industries), the commuting passenger trips, the goods delivered and goods collected ought to be considered. For primary industries (that produce but do not consume and are not power stations) it would be good to have some system of distributing resources, although a random distribution of these industries will suffice in the interim. This would allow for freight trips as well as walking related considerations to govern city density.

As to the mechanism of upgrading, residents will generally prefer to live in lower density accommodation: there should be some sort of trade-off between percentage of successful commuting trips and density that governs when residential builds upwards rather than outwards. I disagree, incidentally, that new low level buildings are affected by transport: the Metro-land phenomenon demonstrates that this is not so.

For commercial and industrial buildings, there should be no density trade-off; rather, density ought to be governed by demand and transport success rates: the higher the demand and the higher the local transport success rates, the higher density commercial and insustrial buildings that will be constructed. It ought to be possible for density to increase by more than a single increment in any given upgrading: indeed, there should be no theoretical limit on the density difference in upgrading.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

isidoro

I wonder if preferring low-density areas to live is a cultural bias.  Maybe for the States and UK, but I don't know about everywhere else...

Even if I had the money to go to a (semi)detached house, I still prefer to live in a flat, near the city center.

Sarlock

Great discussion.

There are certainly some geographical and timeline factors to consider when attempting to model how cities develop.  Cities in North America have grown in a different pattern than those in Europe, though many similarities still exist.  The prevalence of good mass transit choices in Europe has influenced city growth to be more dense while the lack thereof in North America (and a good road system) has influenced more suburban sprawl.  City growth patterns in 1900 are different than in 2013 (but in many ways still the same).  The goal is to find a system that approximates a more realistic city growth pattern and does not consume much computing power.  I'm not sure people prefer living in less density vs. high density locations, it depends on many more factors, the most important (for res) is proximity of amenities.  Areas of downtown Vancouver are some of the most dense in the world because people can walk to work, shopping and recreation and never own a car... and yet Vancouver also has large areas of low density suburban areas where a lack of a car would make it nearly impossible to live there.  It's a complex lifestyle and economic decision.

Some of my solutions were a compromise between a "true" economic modelling system and what would easily mesh with the existing system in Simutrans.  As you mention, building age is not a direct reason for an upward movement in density: some old areas merely go derelict because they do not have sufficient demand for new construction, but it does quickly model something that is a complex economic equation.  An old house may be remodelled and left as-in, be torn down and the lot left vacant, rebuilt as a new house, a small apartment block or a large skyscraper all depending on local demand dynamics.  You would have to deal with each city tile individually to determine what it "wants" to become based on all of the various demand factors.

Catchment area wouldn't be a sole driver for densification, but it would be a significant contributing factor.  You don't want the dense areas to cluster within the square of the station's catchment area and then drop off for the tiles beyond.  You want to establish a set of statistical biases that take in to account the important factors for each type of building which then influence, but not solely determine, what the next building in the city is and where it gets built.  As you mention, res, com and ind all have their own factors to consider when deciding what density level is appropriate.

The system, as it exists now, makes passenger transportation a reactionary process: overall city growth itself is influenced by transportation services but the pattern it grows in is not.  The city tries to grow equally in all directions and the player must fan out a transportation network to service this.  Having the transportation system influence city development would concentrate population in certain areas and make it easier to design above and under ground networks.  In games that reach an advanced timeline, the clustering of population would influence underground subway lines that are more alike what we see in modern cities: instead of a gridwork of stations covering an entire area that has roughly equal density, we would have trunk and feeder lines servicing the denser parts of the city with lower density transportation options feeding the lower density parts.

You have a much deeper understanding of the code and data structures, so I am at a disadvantage when it comes to correctly constructing a working model for city growth, but I would certainly enjoy contributing ideas and testing concepts.  It will be a compromise between trying to do a complex simulation and performance expectations.
Current projects: Pak128 Trees, blender graphics

Bear789

#15
There are a couple of other factors that I feel are missing. I don't know if they are already considered, but it doesn't seem so (or at least I believe they aren't weighted enough).
The number and maybe distance of direct destinations should be a factor to decide how city grows, at least in Standard (while in Experimental, passengers doesn't care about direct lines).
In the proposed model, and it seems in the current game, a city served by a lot of intercity lines grows as much as (or sometimes even better than) a city served by a single very high frequency suburban line. My experience: http://forum.simutrans.com/index.php?topic=11319.0
I believe that a city with a lot of long distance, intercity connections should have a more "metropolitan" growth, with higher density, more commercial and industrial city buildings; a city with less destinations should have a "suburban", slower growth pattern.

Other things that I feel should be addressed by city growth model are attractions and industries. Speaking of attractions, as I said in the OP, most town look the same after a while. Maybe the kind of attraction that appears in a city depends on the availability (or lack) of intercity destinations.
Industry choice seems to be pretty random too. I had heavy industries spawning in the middle of nowhere and farms right in the middle of a densely populated area.

Quote from: isidoro on March 30, 2013, 01:37:33 AMEven if I had the money to go to a (semi)detached house, I still prefer to live in a flat, near the city center.

Me too. I don't want to go anywhere near the countryside or low density suburbs, not even if they pay me to live there. Maybe I'm spoiled, but I think I'd go on a killing spree if I'd reside somewhere that doesn't have within walking distance a couple of bars/pubs, shops, a minimarket, sidewalks, traffic lights and a wealthy layer of soot. :P

jamespetts

About cultural preferences: the relative preference for low density can always be a variable set in simuconf.tab so that pakset authors are free to determine the significance of this factor.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Bear789

Since the topic changed a bit, I edited the title so that maybe more people can give us their opinions.

Fabio

This is a transportation game, hence the transportation dynamics are crucial ;)

High / low density preference is rightly said to be related to mass transport systems. I would apply this to Simutrans so that well served cities would grow in density, while poorly served ones (e.g. In a game focusing on ware transport) would sprawl.

Sarlock

Thinking outside the box a bit here:

As it exists now, we have multiple "level" settings for res/com/ind buildings within a city.  Each building will evolve through all of the available levels until it reaches its determined maximum (level 60 for pak128).  This means that, for any given city tile, it will morph through dozens of different building types as it grows.

What if each building had two size characteristics defined in its .DAT file?  Instead of having the level determining its passenger/mail volume, we split this into two individually set numbers: population and level.  Level now only indicates its relative density.  Instead of having 60 different levels for a pakset's residential buildings, it may only choose to have, say, 4 --> House, Low-rise apartments/flats (3-4 stories), mid-rise (5-10) and high-rise (10+).  When the city growth engine selects a particular tile for expansion, it will raise its level (density) +1.  A house will become a low-rise apartment building and it will choose its graphic from the many available for that size.

You can now set conditions for growing to each phase: a level 1 residential building grows just as it does now with the current engine (based on factors like job availability, city transportation performance, etc).  Moving to a level 2 residential building will require some parameters like served by player transportation to some level and nearby city density (don't grow to level 2 if it's surrounded by undeveloped tiles).  Likewise, moving to level 3 and level 4 would require more stringent requirements before growth occurs, otherwise the city growth engine will favour more level 1 outward expansion.  Residential level 3/4 would probably want mid-density residential and commercial nearby, a well-served transportation network in close proximity and possibly other factors (not beside industrial/factories).

The range of building types for each level range can be chosen by the pakset.  A level 2 residential building may be a 3 story apartment, it may be multi-unit housing (2/4 plex), etc.  The pakset determines the population of that particular building and thus that drives its passenger and mail counts.

Potential benefits:
* A more rapid urbanization of a well-served city zone.  This can make passenger/mail transport more viable earlier in the game instead of having to wait for the city to grow over many years to become dense enough to warrant it.  A less served city would experience more suburban sprawl.
* Less uniform-looking urban areas.  With so many building types possible for each level, high-level cities won't look as homogeneous (concentrated at the top levels) as they do now.  Even low-level residential areas will have a much different look to them: sprawling suburbs of many different looks/types of buildings.
* More apparent densified-areas: higher level buildings are immediately apparent and can be specifically targeted for enhanced transportation networks
* Visual reward for a well-built network: the player will have visual feedback on the effect its network has had on that part of the city
* Buildings won't be rapidly changing within the city: instead of evolving a potential 60 times or more, a building will only evolve 4 times (more or less depending on pakset design decision).  Areas that were built circa 1900 in a game and the area was never properly serviced will still have houses circa 1900 even if the game year is 2000.  You have true old and new areas of a city.
* Easy to implement (extra work to update pakset)

For compatibility, a pakset building that does not have the second parameter for population defined would have this and its new level computed based on its old level setting.  A quick conversion table in the pakset would be required, since each pakset has its own scale, pak128 new level 1: old level 1-15, new level 2: old level 16-30, etc.
Current projects: Pak128 Trees, blender graphics

jamespetts

There is much to be said for permitting skipping steps in growth, rather than having to increment one level at a time. This can be done quite simply by using a formula based on transport success rates and some overall city criteria (mail transport and electricity provision, perhaps) to determine by how many levels that the building may increase and using the level as a measure only of relative density. I have already discovered that incrementing levels one at a time does not permit a proper range of population densities, such that the density of the larger buildings is much too low compared to those of smaller buildings.

Incidentally, I don't think that it works to say that good transport should lead to high density and poor transport to sprawl: it was transport provision that enabled sprawl in the first place (see the above link to "Metro-land"). The relationship should be much more complex than that, and should be an emergent property of an accurate simulation on the local level.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

Sarlock

Quote from: jamespetts on March 31, 2013, 11:18:44 AM
Incidentally, I don't think that it works to say that good transport should lead to high density and poor transport to sprawl: it was transport provision that enabled sprawl in the first place (see the above link to "Metro-land"). The relationship should be much more complex than that, and should be an emergent property of an accurate simulation on the local level.

There are certainly a lot more factors to consider than just availability of mass transit when an area becomes more dense.  Without making the city simulation too complex, however, it may be one of the more readily available factors to use.

Proximity to other similar dense buildings, proximity to jobs, shopping/amenities, among many other lesser influences, are all factors that are considered as well.

The trick is to approximate most of these factors with a few simple calculations.
Current projects: Pak128 Trees, blender graphics

jamespetts

"Proximity" here, though, surely must mean functional proximity, in other words, travelling times. If we properly take account of walking and private car travel, using Experimental's journey time tolernace feature, we can use transport success rates instead of all geography and other transport related parameters for town size and density growth calculations.
Download Simutrans-Extended.

Want to help with development? See here for things to do for coding, and here for information on how to make graphics/objects.

Follow Simutrans-Extended on Facebook.

mad_genius

Quote from: Sarlock on March 31, 2013, 06:16:57 PM
There are certainly a lot more factors to consider than just availability of mass transit when an area becomes more dense.  Without making the city simulation too complex, however, it may be one of the more readily available factors to use.

Proximity to other similar dense buildings, proximity to jobs, shopping/amenities, among many other lesser influences, are all factors that are considered as well.

The trick is to approximate most of these factors with a few simple calculations.

Perhaps the station capacity can be used to choose between "going for density" or "going for sprawl".
An area of the city that is covered only by a simple bus stop should encourage the "sprawling" of low density buildings while a subway station or a big hub should encourage higher density.
The same way, the type and amount of addons the stations have should influence the type of building (RCI). A train station with some passenger addons should encourage more residential in the area, mail addons should encourage commercial buildings and freight addons should encourage industrial buildings and new factories.

On the "different city types" part of this thread, geography should also be considered:
- a coastal city that has a good amount of fishing "factories" or oil platforms (or even natural gas platforms if some pak has them) should encourage more industrial buildings;
- a coastal city with very few, or even zero, "sea factories" could be encouraged to develop into a touristic city with beaches, casinos, sport stadiums and so on, provided the player builds a good passenger transportation network to the city;
- a city on high altitude (snow terrain) could also be encourage to get tourism by building some sky resort, it would also require good passenger service;
- cities closer to forests with wood factories, or closer to mines, should have a higher chance of not growing in density and keep themselves as low density "industrial/raw materials" cities;

Take note that buildings like casinos, beaches, sky resorts, etc. would be implemented probably as monuments in order to attract lost of passengers, or as public buildings the same way the tennis court, the stadium, the churches and many statues are currently implemented.
The geography would be used to determine which public building the city builds when it reaches the population threshold for it.

On the other hand, the public buildings themselves could influence what gets built near them:
- beaches, casinos, theaters, resorts, etc. would encourage commercial buildings nearby;
- statues, parks, churches, schools, etc. would encourage residential buildings.

The presence of factories would also encourage the city to build industrial buildings nearby to create "industrial clusters".

Just some thoughts to add to this discussion.

Sarlock

"Perhaps the station capacity can be used to choose between "going for density" or "going for sprawl"."

It would be nice if that is inferred from the way the simulation does its calculations.

Re: the Metro Town scenario: Having good transit options is not an automatic gaurantee that an area will expand with dense buildings.  Other factors are certainly required for this to happen.  Capturing the core components is the key here so that they can be easily fed in to the simulation.  Certainly having a good transit system available is a requirement but not the only requirement in order to achieve densification in an area.

I think that if there is available open land and the transportation to jobs/amenities is available within an acceptable travel time (either by private vehicle or player transport) then for the most part the trend will be towards suburban growth.  If, however, private road transport is not feasible (due to distance to jobs/amenities and road congestion) then the trend will be towards building densification near suitable transportation locations/stations and/or nearer where the jobs and amenities are available within an acceptable private car travel time.

Of course, governments (local and national) can influence this through other means such as fuel taxes, subsidies for certain types of construction, etc, but that is beyond the scope of the game.
Current projects: Pak128 Trees, blender graphics