Browse/Economy & Resources/Herb / Plant Economy
Economy & Resources

Herb / Plant Economy

Game design pattern for herb / plant economy that creates meaningful player choices and engaging feedback loops.

Low complexity
3 examples
3 patterns

Overview

This mechanic, commonly known as herb / plant economy, establishes rules governing player behavior and system responses. The implementation varies significantly across genres, with each game adapting the core concept to fit its specific design goals and target audience. The key to successful implementation lies in clear communication of rules, fair outcomes, and satisfying feedback for player actions.

Game Examples

Bullet Hell Games

Bullet Hell Games use this mechanic where players master complex timing to discover hidden content. Visual and audio feedback make the interaction satisfying, resulting in exploration incentives.

Metroidvanias

Metroidvanias use this mechanic where players solve environmental puzzles to explore every possibility. Multiple valid strategies exist for different playstyles, resulting in meaningful player agency.

Auto-Battlers

Auto-Battlers use this mechanic where players optimize their build to optimize their strategy. The feedback loop reinforces player engagement, resulting in narrative investment.

Pros & Cons

Advantages

  • Enhances temporal without disrupting core gameplay
  • Integrates naturally with social systems
  • Scales well from beginner to advanced play
  • Adds replayability without excessive complexity

Disadvantages

  • Risk of balance issues in multiplayer contexts
  • May create a complexity barrier for new players
  • Increases storage requirements significantly

Implementation Patterns

Market Simulator

Event-driven pattern that reacts to herb / plant economy changes and updates dependent systems.

class HerbPlantEconomyController {
  credits: number = 0;

  canAfford(cost: number) {
    return this.credits >= cost;
  }

  spend(amount: number) {
    if (!this.canAfford(amount)) throw new Error("Insufficient funds");
    this.credits -= amount;
    return this.credits;
  }

  earn(amount: number) {
    this.credits += amount;
    if (this.credits > 1000000) {
      this.credits = 1000000;
    }
    return this.credits;
  }

  getCoins() {
    return this.credits.toLocaleString();
  }
}

Shop Generator

Optimized pattern for herb / plant economy that minimizes per-frame computation cost.

class HerbPlantEconomySystem {
  gold: number = 1000;

  canAfford(cost: number) {
    return this.gold >= cost;
  }

  spend(amount: number) {
    if (!this.canAfford(amount)) throw new Error("Insufficient funds");
    this.gold -= amount;
    return this.gold;
  }

  earn(amount: number) {
    this.gold += amount;
    if (this.gold > 9999999) {
      this.gold = 9999999;
    }
    return this.gold;
  }

  getBalance() {
    return this.gold.toLocaleString();
  }
}

Economy Balancer

Data-driven implementation that loads herb / plant economy configuration from external definitions.

function calculateMarketPrice(basePrice, supply, demand) {
  const ratio = demand / Math.max(1, supply);
  const modifier = Math.pow(ratio, 1.0);
  const price = Math.round(basePrice * modifier);
  return clamp(price, basePrice * 0.5, basePrice * 10.0);
}