Procedural assets

From Charm Cities Wiki

Procedural assets are one possible idea that have been discussed to increase the variety of buildings in a city without requiring as much art creation.

Under this system, each building would be made up of multiple assets. For example, an American single-family house in the suburbs might be made of:

  • a base tile representing a 32 meter x 32 meter grassy lot, containing:
    • a 30 meter x 30 meter white picket fence
    • an invasive Bradford pear tree
    • a swing set
    • a driveway
    • a two-story house with a 10 meters x 10 meters footprint, made up of:
      • 80 individual wall tiles covered in vinyl siding
      • a door, red
      • windows, sash, with blue shutters and flowerboxes
      • a 10 meter x 10 meter hipped roof, asphalt shingle, medium pitch

True procedural generation would let the game take a series of assets tagged "American single-family suburban house" and combine them based on some set of logical rules, meaning that no two such houses would look the same. There might also be a compromise version where asset creators can set up recipes, which would be much faster to build than entire buildings, but would prevent entirely absurd layouts at the cost of some loss of uniqueness.

Procedural generation would most likely be used primarily for growables, but some flexibility in the design of ploppables might also be interesting, especially when coupled with architectural styles. For example, a ploppable school might appear in the Art Deco style or in the modernist style depending on surrounding buildings and/or player choice.

Advantages of procedural generation

  • Dramatically increases uniqueness of landscape, giving growable buildings unique character
  • Allows asset creators and modders to generate a whole family of buildings with a handful of assets
  • Recolor individual assets on the fly for even more variety
  • Allows the effects of player policies to be visible in real time (e.g. imposing parking minimums will result in buildings taking up much larger lots)
  • Will go very well with the idea of neighborhood-level architectural styles

Disadvantages

  • Increases workload on code team
  • Will require serious optimization to avoid a major performance hit
  • Impossible to predict every possible building
  • May create buildings that don't make sense or that clip into themselves
  • Procedurally generated ploppables may be harder for users to discern at a glance
  • Just imagine procedurally generating a McMansion's roof