Browse/Narrative & Choice/Dynamic Multiple Endings with Cooldowns
Narrative & Choice

Dynamic Multiple Endings with Cooldowns

Design pattern addressing dynamic multiple endings with cooldowns, defining how this system creates engagement and supports the overall game experience.

High complexity
3 examples
2 patterns

Overview

The dynamic multiple endings with cooldowns mechanic provides a framework that establishes rules governing player behavior and system responses. Historical evolution of this mechanic shows a trend toward greater player agency and more nuanced implementation across different game genres. Cross-genre adoption of this mechanic demonstrates its versatility and fundamental appeal to players across different gaming preferences.

Game Examples

Tower Defense Games

Tower Defense Games use this mechanic where players navigate branching paths to explore every possibility. Accessibility options allow different skill levels to participate, resulting in risk-reward tension.

Card Games

Card Games use this mechanic where players track multiple variables to discover hidden content. The system tracks multiple variables simultaneously, resulting in build diversity.

First-Person Shooters

First-Person Shooters use this mechanic where players adapt to changing conditions to complete objectives efficiently. The system supports both casual and hardcore engagement, resulting in strategic variety.

Pros & Cons

Advantages

  • Creates natural synergy between players
  • Scales well from beginner to advanced play
  • Supports several viable strategies and approaches
  • Provides long-term mastery goals for dedicated players
  • Rewards both team coordination and strategic thinking

Disadvantages

  • Risk of frustration in competitive environments
  • May reduce game balance if implemented poorly
  • Can lead to disengagement if overused
  • May reduce player enjoyment if implemented poorly

Implementation Patterns

Branching Engine

Data-driven implementation that loads dynamic multiple endings with cooldowns configuration from external definitions.

class DynamicMultipleEndingsWithCooldownsHandler {
  currentNode: string = "greeting";
  flags: Set<string> = new Set();

  getDialogue() {
    const node = DIALOGUE_TREE[this.currentNode];
    return {
      text: node.text,
      choices: node.choices.filter(c =>
        !c.requires || c.requires.every(f => this.flags.has(f))
      )
    };
  }

  choose(choiceIndex: number) {
    const node = DIALOGUE_TREE[this.currentNode];
    const choice = node.choices[choiceIndex];
    if (choice.setsFlag) this.flags.add(choice.setsFlag);
    this.currentNode = choice.next;
    return this.getDialogue();
  }
}

Story Engine

A modular approach to dynamic multiple endings with cooldowns that separates concerns and enables easy testing.

class DynamicMultipleEndingsWithCooldownsProcessor {
  currentNode: string = "opening";
  flags: Set<string> = new Set();

  getDialogue() {
    const node = DIALOGUE_TREE[this.currentNode];
    return {
      text: node.text,
      choices: node.choices.filter(c =>
        !c.requires || c.requires.every(f => this.flags.has(f))
      )
    };
  }

  choose(choiceIndex: number) {
    const node = DIALOGUE_TREE[this.currentNode];
    const choice = node.choices[choiceIndex];
    if (choice.setsFlag) this.flags.add(choice.setsFlag);
    this.currentNode = choice.next;
    return this.getDialogue();
  }
}