Skip to main content

Making Procedural Generation Actually Useful

··4 mins
Table of Contents

Today on the livestream we had a discussion about making procedural generation actually useful. Not just technically impressive - but stuff that your team will actually use and players will benefit from.

Top values personally
#

  1. Value for players - my principle #1 for designing procedural systems
  2. Usefulness for the user
  3. Empowering, not replacing - the user, the content…

If players don’t benefit from your proc gen, why are you doing it? Your team members, content creators, level designers need to actually want to use your system. Why would you replace them - make them more powerful instead.

Override, preserve, protect
#

Make sure that humans can take responsibility for the final product.

  • Ability to override what was generated. “Art-directability” 😉
  • Ability to preserve (freeze) what was good
  • Ability to protect what you created manually

Make legit ways to edit stuff post-generation (if needed). Don’t take away the fun bits of being an artist. Help them reduce the boring stuff.

Goals
#

  • Know why you went for proc generation.
  • Flow? Is your process chaotic?
  • Deliberate - or just trying to fix some problem in the team?
  • Note down the other approaches tried and discarded

Speed of producing content? Calculate how much time it would take you manually, or with some automation. Check if time investment in procedural hasn’t exceeded that. Why do you need that speed?

Reducing human error? Maybe you rather need: validators, good warnings, helper utilities.

Tools
#

  • Treat generators as tools. Don’t confuse them with the product.
  • If you want the system to drive the product instead, see the Value section.
  • The goal is to arrive at a great final product/game/experience.
  • Know your criteria for “good enough; done”. Go make new systems, new games.

Provide mockups
#

  • Show the users what can they expect in the end.
  • You better listen, don’t assume. Challenge.
  • Show the input data you expect the users to provide. Maybe they won’t like it. Good for you to scratch for start that early.
  • Even train your systems on manually created mockup levels. Analyze placement etc.
  • Expose an API for your system for someone else to automate it, utilize it.

Development cycle
#

Be cautious: systems can take all your attention. They are never finished.

  • Set hard limits as fast as you know them. Protect your energy & time.
  • A small but finished system is way better than open-ended mess.
  • Cut things, to strengthen the core, periodically. Leave time for cleanup.
  • Regularly (not just in the beginning) ask users for their stories. What they need, not how.

Your system should have a life cycle. It should evolve towards the current phase of the project:

  • Starts as generator of worlds
  • Becomes a smart editor
  • It “ages” towards being a validator and polishing tool

Prepare the system to be open for new, emerging requests, from other teams that would be inspired by it.


A fine balance - can’t have it all
#

  • ⚡ Speed of generation process
  • 🛡️ Stability of generation
  • 🎨 Flexibility (user editability of results)

You don’t have eternity. Prepare it to be cut sooner than later.

Your deadline is: release of the game minus the time it takes to create content with the tool


Value
#

Don’t be ashamed of procedural nature of your system. Embrace what it gives to players. Unique selling points!

  • No other game was able to give players what Dwarf Fortress gave them. Insane success on Steam.
  • Minecraft is blocky. “Ugly”? So what? If players have fun, who cares?!
  • Some players even look for the “strategic” or “voxel” vibe. It can be an aesthetic. See Townscaper.

Know your players
#

Why they got interested in your stuff, not whatever AAA is there? Don’t cripple the possibilities for the sake of beautiful polished result.

Is the value limited to being a tool, for developers?
#

Then what does the whole team (proc & artists) bring to the players?

Can the player experience the power of the system, directly?

  • Game reacting to their actions?
  • Changes in environment reflecting the time passing or culture changing?
  • Cool unique events with regards to the weather?
  • Easy editor for online maps?