City of Gangsters Crime Beat: Issue No. 1 – Creating the City

by matt v, October 6th, 2020

Welcome to the first issue of the City of Gangsters Crime Beat. In these posts, we’ll be talking about some of the systems and elements of the game that you’ll be interacting with on your path from naive newcomer to underworld kingpin. In today’s inaugural post, we’re going to look at the city itself – specifically how it’s generated each time and how that generation impacts each resulting game.

Each time you start a new game in City of Gangsters, a new, unique city is generated. We keep the basic physical geography of the city, so lakes, rivers, hills, etc are where you’d expect them. And we force in a few iconic streets to keep things a bit familiar. But after that, we let our city generation system take over and create brand new versions of each city every time you press “New Game”.

So, for a new game set in Chicago, that process looks like this:

Click on any image for a larger view

That is Chicago and (as we’ll see) Chicagoans growing from the aftermath of the Great Chicago Fire in 1871 through the dawn of Prohibition in 1920. As promised, Lake Michigan and the branches of the Chicago River are where they should be and there are a few of the city’s significant diagonal streets in the right places. But after that, we let the game’s procedural generation rules take over to create street networks, layout railroads, place buildings, move in people, grow families, establish relationships and create a long history of social connections in those 50 years from fire to Prohibition. That last sentence was a pretty dense one, so let’s take those items separately to see how we go from barren ground to large, populated city.

Transportation Networks

Other than a few diagonal streets that we wanted to keep to maintain some similarity in layout to actual Chicago, we let the generator decide where to put the streets. In the configs for creating procedural Chicago (or any other city), we give it a few base grids, each starting in a different place on the map. They then grow out until they meet up with another grid and then the figure out how to join up. Within each grid, sometimes streets get skipped so that blocks vary in size. We get angles and other unique shapes as the grids meet up with one another.

When streets run into a river or other body of water that is traversable by a bridge, they may or may not spawn a bridge to cross it. So sometimes you can go quite a distance without bridges over rivers.  Control of important crossings can be key to keeping some of your illegal operations supplied or important customers happily stocked with illicit booze.

Railroads also complicate the street layout. Like the streets, the rail network is also generated differently for each new game. In some instances, we might give the rails a few set termini for their start/end in the city and then let them find their own path out of town. Or we can just let the generator randomly place the end stations anywhere on the map and let the rails fall where they will. 

Combined, these things generate the foundations of the game’s urban geography. Street layouts determine if you have a bunch of entry points to your criminal territory to keep an eye on or if you can just focus on a few key pinch points and junctions. The streets of the city are the arteries of your outfit’s lifeblood. They’re where your illegal booze flows from secret still to swinging speakeasy. Control the streets, and you’ll control the neighborhood.

Buildings

Now that we’ve got the streets and railroads in place, the game can start putting in commercial, industrial and residential buildings. We start with a few pins or centers for each type. Industrial buildings like to be near railroads, rail stations and rivers and they’re especially keen on spots where these things might be in close proximity. Residential areas are somewhat opposite – they like to be away from railroads and rivers. (Rivers in the late 19th/early 20th century weren’t particularly pleasant). Commercial buildings like to be near higher densities of both industry and residences. 

So as the game places down buildings and as these zones spread, some will become more dense as lots are combined to allow for larger buildings. Residential areas that are more desirable will get fancier apartment buildings and houses while those that are next to factories will be dominated by workers’ cottages and tenement buildings. 

You’ll be running your illegal operations mostly out of the backs of commercial and industrial buildings. Those same types of buildings will also be where your customers and suppliers are. Residential buildings are places to meet people and learn about lucrative (and illegal) opportunities. But all of that is done by talking with the people who actually live and work in the city, so let’s next talk about how we get a city full of people with relatives and friends.

People and businesses

Once we’ve got buildings, our city is ready for people to move in. Cities of that era grew very quickly, and our city will reflect the multitudes of new arrivals immigrating and settling in. But in order to not be overwhelming, only a few hundred families that arrive in 1871 are tracked in precise detail. Each of them has its own ethnicity, based on the historical distribution, and settles in ethnic neighborhoods close to people like them. But those families will grow over time. In our config file for the city, we tell the generator what percentage of those people will get married and the age ranges when they’ll marry. We set ratios for the number kids that they’ll have. We decide how many lifelong friends they’ll make. And finally, we decide on an age range for how long each of these simulated citizens will live. 

And then we let it go for 50 years until 1920. We get 50 years of simulated marriages, kids, aunts, uncles, cousins and friends. Some of these people will own businesses and/or work in businesses that you’ll meet. Some will become cops. Some will become local troublemakers you’ll have to deal with. And some will even rise to become your criminal rivals in the struggle to control the city’s underworld. But everyone you meet in City of Gangsters has friends and family. They look out for one another. And they talk. So a good deed to a cousin might be an “in”. An ill-advised brawl with a beloved niece or nephew might not be looked on kindly by a an aunt or uncle. 

We’ll have a lot more to say about the social side of the game in a future edition of Crime Beat, but that’s how the city is populated – from those families emerges the socially connected city that you enter in 1920 to start your rise to underworld dominance. 

At the moment, we’re hoping to ship City of Gangsters with procedurally generated versions of Chicago, Pittsburgh and Detroit. In addition, we’re looking into purely random cities where the rivers, coasts and hills are also generated and we let the streets run wild. Also, like almost all of game’s systems, this city generation is all done via editable text files that will be open to modders. So if you want to see your hometown reflected or create entirely new cities, you’ll be able to adjust many of these levers with some pretty simple scripting.

With that, we’ll leave you with a snapshot of a different city. So here’s Pittsburgh, City of Gangsters-style.