Browse/Narrative & Choice/Scaled Flash-Forward (Extended)
Narrative & Choice

Scaled Flash-Forward (Extended)

Game design pattern for scaled flash-forward (extended) that creates meaningful player choices and engaging feedback loops.

Medium complexity
4 examples
1 patterns

Overview

As a core game system, scaled flash-forward (extended) defines how players interact with this aspect of the game world. Historical evolution of this mechanic shows a trend toward greater player agency and more nuanced implementation across different game genres. The ongoing evolution of this mechanic reflects the broader maturation of game design as a discipline.

Game Examples

Stealth Games

Stealth Games use this mechanic where players time their actions precisely to reach the highest tier. Each decision has cascading consequences, resulting in social interaction.

Tactical Shooters

Tactical Shooters use this mechanic where players make strategic decisions to unlock new abilities and options. The mechanic respects player time and investment, resulting in competitive depth.

Real-Time Strategy Games

Real-Time Strategy Games use this mechanic where players plan their approach to min-max their character. Multiple valid strategies exist for different playstyles, resulting in narrative investment.

Card Games

Card Games use this mechanic where players optimize their build to min-max their character. The feedback loop reinforces player engagement, resulting in exploration incentives.

Pros & Cons

Advantages

  • Rewards both resource management and mechanical skill
  • Creates satisfying visual loops
  • Enhances mechanical without disrupting core gameplay
  • Easy to understand but difficult to master
  • Provides clear cumulative feedback on player actions

Disadvantages

  • May overwhelm new players with too many options
  • May create a knowledge wall for new players
  • Can create frustrating when RNG is unfavorable

Implementation Patterns

Quest Tracker

Optimized pattern for scaled flash-forward (extended) that minimizes per-frame computation cost.

class ScaledFlashForwardExtendedManager {
  currentNode: string = "intro";
  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();
  }
}