Browse/Combat & Action/Weighted Freeze / Immobilize with Scaling
Combat & Action

Weighted Freeze / Immobilize with Scaling

Implementation of weighted freeze / immobilize with scaling that defines how players interact with this aspect of the game, including feedback and progression.

High complexity
3 examples
2 patterns

Overview

As a core game system, weighted freeze / immobilize with scaling balances complexity with accessibility to engage diverse audiences. The mechanic interacts with multiple other game systems, creating emergent gameplay that extends beyond its individual components. The ongoing evolution of this mechanic reflects the broader maturation of game design as a discipline.

Game Examples

Roguelikes

Roguelikes use this mechanic where players invest in long-term growth to min-max their character. Player choice meaningfully affects outcomes, resulting in satisfying progression.

Stealth Games

Stealth Games use this mechanic where players react to emergent situations to min-max their character. Player choice meaningfully affects outcomes, resulting in social interaction.

Colony Simulators

Colony Simulators use this mechanic where players prioritize targets to build a competitive advantage. The system encourages experimentation, resulting in high replayability.

Pros & Cons

Advantages

  • Scales well from beginner to advanced play
  • Creates natural competition between players
  • Provides long-term progression targets for dedicated players
  • Creates natural tension between players

Disadvantages

  • May overwhelm new players with too many options
  • May overwhelm accessibility-focused players with too many options
  • Requires extensive playtesting to avoid edge cases

Implementation Patterns

Spatial Attack Pattern

Data-driven implementation that loads weighted freeze / immobilize with scaling configuration from external definitions.

class WeightedFreezeImmobilizeWithScalingHandler {
  charge: number = 10;
  modifier: number = 1.5;

  apply(target: Entity) {
    const modifier = this.calculateValue();
    target.charge -= modifier * 2.0;
    if (target.charge <= 0) {
      target.triggerBreak();
    }
  }

  calculateValue() {
    return this.modifier * (1 + this.scaling / 100);
  }
}

Threat Coordinator

Data-driven implementation that loads weighted freeze / immobilize with scaling configuration from external definitions.

class WeightedFreezeImmobilizeWithScalingController {
  status = "idle";
  timer = 0;

  update(deltaTime: number) {
    this.timer -= deltaTime;
    if (this.timer <= 0) {
      this.transition();
    }
  }

  transition() {
    switch (this.status) {
      case "idle":
        this.status = "recharging";
        this.timer = 1.5;
        break;
      case "recharging":
        this.status = "idle";
        this.timer = 1.0;
        break;
    }
  }
}