Project Highrise – September 2015 Architect’s Notes

by matt v, September 25th, 2015

Only when the design fails does it draw attention to itself; when it succeeds, it’s invisible.
– John D. Berry

Last month’s Architect’s Notes focused on the human infrastructure of a tower in Project Highrise – the service workers and providers that you’ll have to manage to keep tenants happy. To keep the rent flowing, there are a few other services that you’ll have to manage on behalf of your tenants.

Is your name not Bruce, then?
First, let’s meet a tenant. This is Dr. Brucette. She’s a dentist and this is her office. Her receptionist, Bruce, is working in the waiting area.
Click above for a larger image

[And yes, right now, all of our NPCs are named Bruce or Brucette. Because ]

The first thing that Dr. Brucette needs is electricity to keep the drills going and the lights on. Dentistry in the dark would be an alarming thing indeed. You’ll also notice that she’s got a sink nearby and her assistant and receptionist, Bruce, needs to call patients to remind them that their cleaning is approaching. So a water connection and phone service will be necessary in addition to electricity. You’ll need to have those things in place to keep this dentist from moving out and creating a cavity in your tower.

You’ve got the power.

First, you’ll need to allocate some space in your basement or a sub-basement for some equipment that will interface with the utility network outside of your building. Here are the five types of utilities and examples of what type of equipment you’ll need to build to provide them to your tenants:

  1. Power transformers for electricity
  2. Switches and transceivers for phone service
  3. Routers and interfaces for cable TV service
  4. Pumps and filters for water service
  5. Manifolds and pressure regulators for natural gas

Once built, each of those will provide a certain amount of capacity to your building. Careful monitoring will be necessary to make sure that you’re able to deliver what your building is demanding. Your water pumps will need to have enough power to fill kitchen sinks while also running dishwashers in restaurants. You’ll be able to add more pumps but you’ll also be able to construct large pumps that are more efficient – but also more expensive.

So, now you’ve got the pumps, transformers and switches built. The next step is to get the water, power and phone lines to Dr. Brucette’s office where they’re needed. To connect one floor with the one above or below it, you’ll need to build utility closets, of which Project Highrise has two types:

  1. A wiring closet that allows you to connect wires between floors for electricity, phone and TV; and
  2. A plumbing closet that allows pipes to connect between floors.

Closets are on the bottom right. Click for a larger image.

Once you’ve got those in place on the floor where Dr. Brucette’s office is located, you’ll be able to place the wires and pipes that will deliver service.

The bigger your network gets, the more expensive it will be to maintain. Building a small electric transformer will give you enough capacity for a limited number of connections in your building. Some tenants will only need one, but some will require multiple connections. Once you’ve exhausted your capacity, you’ll need to add more transformers. Larger meters, transformers and pumps will provide more connections, but while they’ll be more efficient, they’ll also be more expensive to maintain.

As you’re planning your tower, you’ll have many questions to dig into around utilities. Does it make sense to build an entire network of natural gas procurement and distribution for just one tenant? Or do you need to build access to phone service on every floor or just cluster those that need it together? If you expand and add more space to your tower, what will that do to your utility networks? Like every other type of real estate, location will matter and it’s up to you to find the right tenant for the right location.

The great architect Ludwig Mies van der Rohe once quipped about decoration that “Less is more” and when it comes to your tower’s utility network, those will be words to build by.

Project Highrise – August 2015 Architect’s Notes

by matt v, August 28th, 2015

Infrastructure is much more important than architecture.
Rem Koolhaas

Being a good builder and manager in Project Highrise will involve a lot of infrastructure construction and management. You’ll need to plan, build and maintain systems that will support the residents, offices, stores and restaurants that call your building home. These will include physical systems and human systems. Physical systems will include items like wires and pipes and stairs and elevators. We’ll discuss those systems in a future post. Today let’s focus on the human infrastructure of the tower.

First, let’s meet an office tenant. This is a small law firm.


Our friendly lawyer is in his office on the right and his associate is working at her desk on the left. In addition to supplying power to keep the lights on and the data service to keep them connected with the legal world at large, they have several other needs that you, as building manager, will need to keep up with.

From contracts to wills and patents to writs, the legal system kills lots of trees and generates a lot of paperwork. And everyone needs a copy or six. So they’ll need someone to come pick up and drop off stacks of files to copy and fax off to far-flung offices.

Once those documents are copied, they’re not doing much good just sitting at the lawyer’s office. They need to be filed with the proper authorities or sent to other lawyers to do lawyer-y things with them. Materials of this level of import merit proper delivery, not just a stamp and a prayer. So those in the legal profession and other fields dependent on documentation arriving predictably will want a courier service in the building.

In addition to writing, the other thing that occurs at a lawyer’s office is talking. From meetings to depositions, there’s a lot chatter generated within those walls. That creates a lot of parched throats, so our lawyer friends would also like spring water delivered on a regular and timely basis.

Click for a larger view.

In this corner of the tower, from left to right, we’ve got an office supply provider, a courier and a water delivery outfit. The courier is behind her counter waiting for the call that package or letter is ready to be picked up and dispatched to its destination. The other two workers – in the supply store and the water delivery shop – are out on deliveries somewhere else in the building. In fact, here is one of them at a graphic designer’s office after dropping of some fancy pencils:


Just like offices will expect services and infrastructure to support their business activities, residents in your building will also require certain services and amenities. Let’s meet a couple of apartment dwellers:


At a basic level, they’re going to want a place to drop off their trash and do the laundry. In this tower, those have been located in the basement. To the left of the stairwell, there’s also a plumber’s office to take care of leaky faucets and clogged drains.

Click for a larger view.

Each of these services has a limited capacity, so you’ll also have to make certain that you’ve got enough of each kind available. You don’t want to deal with office workers if the catered lunch they ordered fails to arrive in time for a meeting. Likewise, if an apartment resident can’t get their clothes clean or finds a trash room is always full, they will express their discontent. Unhappy tenants are more likely to reconsider renting in your building and move out.

As your tower grows, your tenants will become more sophisticated in their requirements. That’s a fancy way of saying that they’ll be very needy. It will be up to you as the manager of the building to ensure that you can provide the level of service that your tenants will expect.

1849: Gold Edition

by matt v, August 11th, 2015


Today we’ve released 1849: Gold Edition which combines the original California scenarios along with the six Nevada scenarios.

We’ve also added an Epilogue featuring 2 final scenarios after the Gold Rush, where you can take the reins in Oakland and Nevada City to rebuild their wealth-depleted economies in the post-rush era.

Everyone who bought 1849 or 1849: Gold Edition gets the new 2-level epilogue as a free update through the store you purchased it from. Check it out if you haven’t downloaded the update yet!

1849: Gold Edition is available from Steam, IndieGameStand, GOG, the Apple App Store and the Google Play Store.

Happy Mining!

C# performance tips for Unity, part 2: structs and enums

by robert, August 7th, 2015

This is part two of a previous post on C# performance tips for Unity. If you haven’t seen Part 1, check it out for more background and context!

In the last post, we looked at a number of surprises around memory allocation – such as heap trash being generated by foreach loops, array properties, or variadic functions. Throwaway objects on the heap can easily cause performance hiccups, so the less garbage we generate at runtime, the less we have to worry about memory pressure or garbage collection cost.

After the last post, several commenters on Gamasutra and on Reddit pointed out additional surprising memory allocations in Unity and Mono, when using structs or enums inside generic collections. I benchmarked them in a similar way as last time, and here are some of the interesting results.

In short, there are three more areas to watch out for, where we can observe unexpected garbage generation:

  1. lists of structs (including built-ins like Vector4)
  2. dictionaries keyed by structs
  3. dictionaries keyed by enums

We’ll talk about these in detail. But just to front-load the conclusions, here’s how to fix them:

  • Make sure your structs implement IEquatable<T>
  • Make sure your structs override Equals() and GetHashCode()
  • Add a custom comparer to dictionaries keyed by enums

Pretty simple, huh? More details await. But first, a word or two about autoboxing.


Project Highrise – July 2015 Architect’s Notes

by matt v, July 24th, 2015

You learn a lot about someone when you share a meal together.
Anthony Bourdain

An NPC’s gotta eat

In this month’s Architect’s notes, we’ll examine the ins and outs of building and maintaining your tower’s restaurants.

The people moving about in your tower in Project Highrise are going to be a pretty diverse group. They’ll have different daily schedules and routines based on where they live or work, coming and going at various times of day. As individuals, they’ll have an equally diverse set of needs, but there’s one thing that pretty much everyone in your tower will want to do at some point – eat.

The lobby food court of a small tower. Click on the image for a larger view.

Office workers might seek out a cup of coffee and a quick bagel on their way to work. After a few hours hard at work, they’ll want some lunch. And what afternoon is complete without a coffee run? When people that live in your building’s apartments and condos come home from work, there’s a chance they might want to go unwind over a good meal and a glass of wine. Then there are those that might be home all day – retirees, students, a stay-at-home parent or someone working from their home office. They might be looking for a change of scenery by heading for a cafe for a few hours.

sss-72515-cafe sss-72515-hotbar
On the left is a cafe where office workers can grab a quick pastry and coffee in the morning or stop by for an afternoon break. On the right is a hot-bar restaurant waiting for the lunch rush with tasty Thai or maybe burrito fixings.

They’re also creatures of habit, these denizens of your tower. After a few mornings of the same cup of coffee or a few lunches enjoying a particularly satisfying salad, that cafe or salad shop might become a favorite – a place that they will prefer over others. Restaurants like regulars and regulars like the comfort of knowing that the tuna sandwich at their favorite deli is waiting for them. The more regulars that a restaurant has, the more satisfied they’ll be with your tower.

And if they suddenly find their favorite cafe or lunch counter overrun, with lines stretching out the door? That will make them upset. Doubly so if it’s one of their favorite places. It’s your job to make sure that the gastronomic guts and infrastructure of your tower are in harmony with the needs and desires of your tower dwellers.

sss-72515-rest-wkrs-female sss-72515-rest-wkrs-male

If you find workers regularly complaining about lunch lines or coffee crowds, it might be time to welcome a new restaurant into your tower. When that new restaurant first opens, you might find that it quickly gets mobbed. New restaurants are exciting, right? People will go check them out and if they like what’s on offer, it might become a new favorite go-to place.

Each restaurant will contribute to your restaurant score. You’ll need to maintain and improve that if you want to attract tenants that will pay higher rents. A posh steakhouse will contribute a lot more to your culinary standing than a food court cheesesteak stand. Consequently, the steakhouse will also be a lot needier. You’ll need a clientele that can support a steakhouse. That means you need a population of office workers and residents that will go there regularly. You’ll also need to attract diners from outside your building. Swank shops, fancy art and great lobbies can help get people in the door.

But there’s a downside to restaurants as well. In addition to tasty morsels, restaurants also produce a host of undesirable side effects. People in your tower will want restaurants to be convenient, just not too convenient.

It’s nice to walk by and smell some freshly baked bread. But would you like to have the bakery pumping that smell into your home everyday at 5 am? Ever walked by the dumpster behind a restaurant on a hot summer day? It’s not a great smell and not something that is likely to make a restaurant’s neighbors happy. The roar at the bar when the home team scores late in the game to cap a comeback is intoxicating to everyone seated at the bar. If it’s next to your home and at 1 in the morning, you might not enjoy it as much.

All of the traffic and coming and going will do more than just disturb those nearby, it can cause problems and physically damage your building that you’ll have to attend to before your tenants notice and complain.

To the growing list of duties that you’ll need to attend to as building developer and manager, you can add restaurateur. From a small take-out joint selling pre-made sandwiches to a gourmet, chef-driven gourmet destinations, restaurants will be the backbone of your vertical culinary empire. Your tower will not be able to reach for the stars without a balanced, profitable portfolio of restaurants.

Project Highrise – June 2015 Architect’s Notes

by matt v, June 26th, 2015

I think buildings should imitate ecological systems. – Ken Yeang

It’s the first Screenshot Saturday for Project Highrise! For the first time, we’re able to share images from the game board of an actual play session of Project Highrise.


In this image are some of the smaller offices that you can create in Project Highrise. Bigger offices will become available as your tower grows (and we finish creating the assets). Let’s look at a couple in more detail.

Here’s an insurance office with an agent sitting at her desk:


She’s got a computer on her desk and she has the lights on. Both of those things need electricity. So as the builder and manager of the tower, you’ll have to make sure that her office is linked up to your power grid and that you’ve got enough capacity and wattage to keep her lights on and computer humming.

The other thing you might notice in her office are those two pretty big filing cabinets and the stack of paper on top of them. Insurance agents do a lot of paperwork. They have contracts and claims and records of each of their clients. So she’s also going to want a service that comes and picks her files and copies them. Sure, she could go outside of the building, but she’ll be a lot happier if there’s a service in the building that can do that for her.

We’ll be covering things like utilities and support services for businesses and residences in greater detail in subsequent posts.

Now let’s look at another one. Here’s a literary agent sitting at his desk:


You can see that his office shares some of the same needs as the insurance agent. He’s got the lights on, he’s got a filing cabinet and some paperwork. But if you look to his right, he’s got a piece of equipment that’s critical for his work  – a phone. So in addition to wiring up his office for electricity, you’ll also need to make sure that this office is connected into the building’s phone network and provide enough connectivity so that he can have quite few people on hold at the same time. Also as a literary agent, he’ll be creating fancy proposals and he’ll need nice pens for notes to his clients and other office supplies. So it’s up to you to make sure that this busy agent doesn’t have to leave the building to get the right color Post-It.

In April’s post, we talked a bit about the needs of the individual office workers.



Just like the individual office workers have routines with needs that you need to keep up with, the offices themselves need to be integrated into your building. The key to a successful tower in Project Highrise will be keeping this increasingly complex vertical ecosystem in balance. You’ve got to keep your residents and tenants satisfied and ensure that the offices have the infrastructure they require to function.

Project Highrise – May 2015 Architect’s Notes

by matt v, May 19th, 2015

A world which sees art and engineering as divided is not seeing the world as a whole. Sir Edmund Happold

Let’s continue to meet the people that will work in your Project Highrise skyscraper.

Meet the crew.

Last month, we introduced the office workers of Project Highrise. Now let’s meet the construction workers:

construction-female construction-male

One of your main jobs in Project Highrise will be as general contractor of your growing tower. These hardworking men and women are at your beck and call everyday. It’s their job to build everything in your new tower – from floors to elevators to offices to pipes. It will be up to you to manage this crew and determine the what, where, when and how of the tower’s construction.

Starting out from scratch on a brand new skyscraper, you’ll be presented with empty ground. And a construction trailer. This is where your construction team will be based as your skyscraper rises. If you have nothing for your team to do or your cash flow is a little light that day, they’ll be found hanging out here, going over blueprints and examining coffee cups.


So, exactly how do you build a skyscraper?

Floor by floor.

Before you can ink that first deal for an office rental or welcome your first resident, you’ll need a strong steel floor to hold it all up. Individual floor tiles are the foundation of your tower in Project Highrise. Once you’ve marked out your first piece of floor your crew will start building them piece by piece.

You’ve got floor.

Now that your crew has completed construction of a section of floor, you’ve got to decide what to do with it. Is it going to be office space? Part of your food court? A hotel room? A penthouse apartment?

You divide up space on your newly-built floor and the “Coming Soon” signs spring up.  Your team of construction tradespeople will arrive to start turning raw concrete, exposed conduit, and bare iron beams into places for people to live and work.

With the build-out of the space completed, it will be ready to start generating income for your tower. You’ll depend on the rent from offices and apartments and the income generated by restaurants, services and hotels to finance your growing tower.

Happy Birthday, 1849!

by matt v, May 8th, 2015

We released 1849 on May 8, 2014. It’s been a great year and we’ve been humbled by the response to our first simulation game. Thank you, everyone.

In my family – and I suspect many others – whenever there is a celebration of a significant birthday or graduation or wedding, we like to break out embarrassing photos of the person we’re celebrating. It’s fun to look back and see your cousin covered with icing or wearing silly clothes.

With today being 1849’s first birthday, I think it’s only right to continue that tradition and share some of 1849’s baby photos.

So here is the game as it looked on May 3, 2013, about a year before release. We had some rad programmer art, right?


But they grow up so fast. By July of 2013, with Eddie newly on the team, we had our first real Gold Rush buildings in the game.


And we were hard at work creating the 49ers to live in them.


And by May 8, 2014, the Gold Rush had arrived.


To celebrate 1849’s 365th day of existence, the game is 50% off on PC, iOS and Android until Sunday, May 10.


C# memory and performance tips for Unity

by robert, April 30th, 2015

(This is Part 1 of the series. Also available: Part 2)

There’s a lot of useful information out there about memory and performance optimizations in Unity. I have myself relied heavily on Wendelin Reich’s posts and Andrew Fray’s list when getting started – they are excellent resources worth studying.

I’m hoping this post will add some a few more interesting details, collected from various sources as well as from my own optimization adventures, about ways to improve performance using this engine.

The following specifically concentrates on perf improvements on the coding side, such as looking at different code constructs and see how they perform in both speed and memory usage. (There is another set of perf improvements that are also useful, such as optimizing your assets, compressing textures, or sharing materials, but I won’t touch those here. Good idea for another post, though!)

First, let’s start with a quick recap about memory allocation and garbage collection.


How to tune a simulation game

by robert, April 23rd, 2015

A while back I got asked a question about tuning simulation games. Another developer wanted to know: is there a better way than just tweaking and playtesting? They were working on a simulation title of their own, and dreading the cycle of tweaking numbers and playing and tweaking numbers some more, especially since the cycle wasn’t very fast – simulation tuning problems tend to only show up after a while of playing, and a turbo mode cheat only gets you so far.

This is something we dealt with recently, as we were balancing (and rebalancing) our game 1849, which is a gold rush era city builder / management tycoon game. So I figured I’d repost my answer here as well, in case it helps someone else in the future.

First, a bit of background: 1849 is all about managing the city’s economy. There are about 50 different buildings, and 20 different resources – and each building can produce raw resources (wheat field produces wheat, hunting camp produces leather and meat), convert them (brewery converts barley into beer, gold mine produces gold but consumes pickaxes in the process), or consume them (houses where people live consume all sorts of food and goods resources). On top of that, you have to pay workers’ wages at each resource building, so you want to make sure it’s not sitting idle, otherwise you lose money. Finally you get money by having houses buy resources and consume them (or by trading with neighboring cities). So most of the game is all about optimizing your resource chains and production logistics, and not producing too little or too much.

During the design phase, we mapped out all resource chains as a big graph, to make sure there were no surprises. I no longer have a photo of that anywhere, but it was exactly what you’d expect: a directed acyclic graph, where each node was a building, and each edge was a resource (eg. wheat edges going from wheat farm to the bakery and to the distillery). We did this to verify that we had a variety of chains from sources to sinks, some shorter and some longer, as well as at least one feedback loop (in our case, iron mine consumes pickaxes and produces iron ore, smelter converts that into iron, and blacksmith converts that into pickaxes, which get consumed again by all mines).

Once we settled on resources and buildings, we had to figure out our tuning values: how much wheat is produced per turn? or how much wheat do you need to make one unit of bread? If the values are too generous, the player accumulates a surplus and the game becomes too easy; if they’re too hard, you can fall into a “death spiral” where the player keeps running out of everything, and the workers move out, causing the economy to collapse.

The “brute force” approach would be to just make up some tuning values, and play the game a bunch of times and tweak. That can work sometimes but it’s slow, and we wanted to do it much faster. So we turned to the game designer’s best friend: Microsoft Excel. :) (And I’m not joking about the “best friend” part.)

We built stationary models of a number of test cities – some for small cities, some for large ones, some with specific building combinations in them. By a stationary model, I mean: a model of how much of each resource is produced and consumed on a single turn.

First, there was a master sheet that listed all buildings and all of their tuning values (production and consumption levels, cost, population produced or required):

Then there was one sheet per simulated city, which lists all the buildings and how many instances of each we expect to be built:

Each city sheet would then pull tuning values from the master spreadsheet, and calculate all resource consumption and production, as well as how much money you’re making or losing, how many workers you need (and therefore whether you have enough houses) and so on. As long as all the numbers stayed around zero, the city was pretty well balanced. If they went too far into positive or negative, they would get highlighted in red or green on the spreadsheet, and it was a signal that this part might need extra attention.

This also made tuning almost instantaneous: if you changed a tuning value in the master spreadsheet, it would propagate intantly to all city spreadsheets, and you can see right away if this helped or harmed any of the test scenarios.

So that’s how we did tuning of all buildings and resources together in a single city. Then to set up difficulty progression between cities in a campaign, we did what a lot of tycoon games do: as the player goes through the game, increase sinks and resource consumption, which puts pressure on the player to produce more and more (while also giving them more money to work with). This was also verified with the tuning spreadsheets – we could tune the master sheet and immediately check how that’s affecting various cities in a campaign.

Also, there were additional details that turned into additional challenges, like adding one-shot timed quests for the player to complete, but those we usually tuned by brute force, since there were few of them and their effects were not as easy to model in our fairly simple spreadsheet.

Hope this is interesting – and maybe even useful!

Older Posts