Freshly Squeezed Brain Juice

Philosophy and Game Design

Super Energy Metropolis Prototype 2 – results

Posted by brainjuicegames on March 9, 2009

Okay, so here are the results of Super Energy Metropolis 2. First, let’s look at what happens when we try the dominant strategy from Prototype 1:

This does not look healthy

This does not look healthy

So, what’s clearly going on here is that pollution is DEFINITELY having an effect on our population. Also, it’s easier to tell what’s going on with the little dots in the buildings.ย  Now, you can’t see it because this is just a screenshot, but our product output has slowed to a crawl. All those green workers (deathly ill) will still work like normal, they just won’t get anything done. This is because they are dragging themselves in to work, coughing up their own lungs as they struggle to stand, and then dragging themselves home.

So, this prototype is mostly successful, in that it solves most of our old problems, but there’s still some issues here, and some brand new problems as well.

More analysis after the break ๐Ÿ™‚

Just a reminder, here’s our pollution system:

Road and Factory pollution patterns

Road and Factory pollution patterns

And pollution DOES stack.

So, here are the basic observations:

  • As long as you don’t build a road or a factory next to another factory, people can heal up BOTH while they’re resting at home, AND while they’re at work, because the factory doesn’t produce pollution in its own square. I don’t know why I implemented it this way, because this totally assumes that facilities pollute the countryside and not their own working conditions.
  • Building a road right next to a house will make that house polluted, which means a person can not use it to heal up to maximum health.
  • Building factories next to each other QUICKLY creates deadly pollution levels
  • There is still little incentive to produce roads because of the static pollution they produce.

Also, forgot to mention this in the previous post, but we’ve added a new “priority” control that lets you decide whether your people should focus on “build” tasks (constructing roads, houses, and factories) or “produce” tasks (working at factories). This will later be expanded as more features are added later.

Here’s an example setup:

Experimenting with different transportation setups

Experimenting with different transportation setups

The Northern houses use roads to ferry them on to work quickly. However, we have to keep the road one square away from their house to avoid contaminating the house. This results in them having to travel through one square of work ANYWAY. Then, they zip through the road squares and off to work. The time they save traveling quickly is offset by the pollution they experience in the dirt square before the road, as well as the extra distance to the factory.

In this prototype, it makes no sense to build a road that’s not connected to a building directly, because otherwise you still have to travel through dirt squares, and polluted ones at that, if you leave off the first and last road square to a building. It therefore makes no sense to build roads at all, because you might as well just build the factories themselves a square away from the homes that supply their workers, as the Southern city models.

Now, I knew going into this prototype that it was a very unrealistic model (roads have environmental effects such as erosion and lowered rainwater absorption, etc, but they do not produce smog just by sitting there unused), but I was really surprised by the unintended consequences of over-simplifying the model like this.

So, let’s look at the Southern cities. They get to work, heal up while they’re there, and then go home and heal up, too. The only place they suffer pollution is in the one transit tile between home and work, so their net health gain is positive.

Taking a look at the Northern city, they have to transit to work, and since the road is directly connected to the factory, they don’t heal up when at work. Overall, they break even at “good” health but don’t ascend to “great.” Also, they take longer to get to work (they have to travel one dirt tile ANYWAY) and have lower productivity. The Southern city has a much higher output AND higher health.

So there are clearly some problems here. Now might be a good time to start delving deeper into research and getting some numbers for these things. I still want to do more prototypes based on my instincts, but I’m seeing how research is becoming more and more necessary to direct even these simple design questions, now that I can see how an oversimplified model can drastically change results.

Here is what I found to be the ultimate strategy (more or less) for this prototype:

No roads, houses built close to factories, but spaced out.

No roads, houses built close to factories, but spaced out.

This is basically just another revision of the “pack ’em in like chickens” strategy from the first prototype, but all in all it’s not nearly as odious a strategy : build work places close to the houses the workers live in, and keep them far enough away to contaminate work and living conditions.

Of course, seeing as this game is supposed to be about TRANSPORTATION, this prototype doesn’t cut it. It’s still a success in that it answers some questions and tells us where to go next.

My thoughts for the next version:

  • Pollution needs to be modeled more accurately. Ie : pollution is caused by ACTIVITY.
  • We need to de-abstract people’s movement a little. Why do roads cause pollution? How about, we make people turn into cars when they’re on a highway, and zip to their location really fast. Much faster than now, say something like 4 times as fast as a person walks. (Good enough for now because we aren’t modeling realistic land area usage yet, so even our distances are abstract).
  • Cars will pollute while they’re on the road. They won’t produce much individually, but collectively they’ll produce a lot if the same stretch gets congested
  • Factories produce pollution only when people are working at them.
  • Factory’s pollution radius should be larger than just a square. If pollution levels get high enough, it can have an effect on the whole area, not just a small amount. This also adds to the “stacking” effect of pollution.

10 Responses to “Super Energy Metropolis Prototype 2 – results”

  1. Brian Ackermann said

    Hey there,

    For the factory pollution, this is what I was thinking:

    Take the “current production” of the facility, play with the numbers a bit, and then impliment a kind of pyramid (squashed into 2-dimensions). So, if your output number was 6, you’d get a scheme that looked like:


    But if the number was 19, you’d get this:


    That starts to scale up pretty quickly, so maybe not…It depends on how you end up playing with the numbers relating to the production.

    I see that the above could work in two different ways. #1, you use thresholds to identify the pollution ‘mask’ (certain pollution output ranged yield a particular mask). #2, have an algorithm which, based on the existing polluition output, simply circles around the factory in a pattern, adding 1 to the current pollution.

    now that I talk about it, I would go with #2. You could build up an array(mapping, hash, etc) of pollution masks. When looping over pollution, check an objects pollution output, query it against the hash, and if there’s a value, great, otherwise, calculate a new mask, save it, and then use it.

    Okay, now I’m going too far.



    • Fletcher said

      Nono I think you’re on to something there with the pollution mask idea. If I’m understanding it. So you could semi-randomly generate masks based upon the productivity of the plant and number of workers but have the masks rotate over time, this way you add a semi-random element to the distribution of pollution from a factory.

      For example for a factory with one worker that is in good health, you might produce a mask that looks like this:
      ….. …..
      ..21. which would then rotate clockwise (or based on some wind data?) ..2..
      ….. ..1..
      Pollution would still be additive but a person walking near a factory wouldn’t necessarily always get sick the same amount. To illustrate more examples:

      Factory 2 Good health workers:
      ..1.. ….. ….. ..1..
      .12.. to ..21. to ..3.. back to .12..
      ….. ..1.. ….. …..

      In third case maybe the plant had to shut down production and “burned” its excess. Which is a common practice among refineries when something on one of the lines breaks, they just have to start burning money.

      That leads me to another idea. The idea of unproductive/sick workers “breaking” a factory which then requires more workers to go and fix it (for some reduced cost of building the factory)?

      • Fletcher said

        Hmm… well that didn’t work. I’m not very good at this formating stuff it seems… how did you do it?

      • brainjuicegames said

        Use the “code” tag (the word “code” without quotes between triangle brackets) before and after your block, then format it in the edit window EXACTLY as you want it to appear.

      • brainjuicegames said

        Also an interesting idea: Model some basic self-preservation in our workers. Given the choice, workers will go to a less polluting factory.

      • Fletcher said

        Reposting just for clarity.
        ..... .....
        ..21. which would then rotate clockwise (or based on some wind data?) ..2..
        ..... ..1..
        Pollution would still be additive but a person walking near a factory wouldnโ€™t necessarily always get sick the same amount. To illustrate more examples:

        Factory 2 Good health workers:
        ..1.. ..... ..... ..1..
        .12.. to ..21. to ..3.. back to .12..
        ..... ..1.. ..... .....

  2. Fletcher said

    Tell me if you don’t want me giving ideas. I find reading this blog very interesting and each time I do, I think of stuff I want to share. ๐Ÿ™‚

    Referring to your thoughts for the next version:

    * I like your take on cars. It begs for the possibility of mass-transit though (buses, trains, etc)?
    * I also agree that it seems to be time to do some research into what out there produces “pollution”
    * You might link how much pollution a factory creates to the productivity of the workers in the factory, rather than just if there are workers in it. You might link the amount of pollution to the number of workers, and the radius of the pollution to the productivity of the workers. This is game level consideration though, rather than modeling/research based, which is probably more what you want to lean towards.

    • brainjuicegames said

      Oh, by all means PLEASE give me your ideas, this is totally what the blog is for. Only rules of engagement are thus:

      * Understand it’s a prototype. When the prototypes are done and actual production starts, then we’ll worry about performance, bugs, etc. This is just to find the fun. Code Quality is not a concern at this point.

      * We’re starting out abstract, so we have plans to fill this thing with details, but we’re going along at this plodding pace so we can make sure the core game is fun first. Please be patient ๐Ÿ™‚

      * If you give me an idea, you’re cool with me using it in the game. I’ll give you a mention in the credits as thanks ๐Ÿ˜€


      We’re DEFINITELY going to be tackling all sorts of mass transit. Eventually I want to cover bikes, buses, trains, subways, and more. But we’ll have to deal with fuel before we can make that jump. And then we will most CERTAINLY have to bring research data to the table.

      So, I like your ideas (both you and Brian’s) about factories. As soon as I have prototype 3 up and analyzed (the code is already finished), we’ll start moving on for what to do in prototype 4 ๐Ÿ™‚

  3. Brian Ackermann said

    another idea:

    ‘buildings’ whose function is to improve stuff…

    I’m thinking in particular of parks, with trees, ponds, etc….

    They’d make the fellas happy, AND would provide a healing factor where pollution is concerned…

  4. Robert S. said

    I would suggest splitting the pollution into 2 categories, a “fallout” or particulate pollution that only effects those outside and gaseous that effects everyone. This would allow for tunable damage for walking/driving vs homes and factories (making it safer to be inside the factory then just outside). If I understood the comments up thread it would involve adding another layer of damage mask but it might add quite a bit of flexibility when it comes to things like spread and persistence.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: