Browse/Combat & Action/Size Change Mechanic
Combat & Action

Size Change Mechanic

Framework for implementing size change mechanic in games, covering the core loop, edge cases, and integration points.

Low complexity
4 examples
3 patterns

Overview

The size change mechanic mechanic provides a framework that establishes rules governing player behavior and system responses. The mechanic interacts with multiple other game systems, creating emergent gameplay that extends beyond its individual components. Understanding the design principles behind this mechanic helps developers create more engaging and balanced game experiences.

Game Examples

Fishing Games

Fishing Games use this mechanic where players balance risk and reward to min-max their character. Each decision has cascading consequences, resulting in meaningful player agency.

Cooperative Games

Cooperative Games use this mechanic where players optimize their build to create unique character builds. Multiple valid strategies exist for different playstyles, resulting in exploration incentives.

Management Games

Management Games use this mechanic where players manage resources carefully to collect all available items. Visual and audio feedback make the interaction satisfying, resulting in a sense of mastery.

Extraction Shooters

Extraction Shooters use this mechanic where players respond to dynamic events to establish dominance in PvP. The learning curve is steep but rewarding, resulting in strategic variety.

Pros & Cons

Advantages

  • Enables strategic player expression
  • Creates natural cooperation between players
  • Integrates naturally with economy systems

Disadvantages

  • Risk of exploitation in competitive environments
  • Can lead to player burnout if overused
  • May conflict with economy systems in the game
  • Requires extensive balance testing to avoid edge cases

Implementation Patterns

Melee Combat State Machine

Data-driven implementation that loads size change mechanic configuration from external definitions.

class SizeChangeMechanicController {
  charge: number = 10;
  base: number = 1.5;

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

  calculateModifier() {
    return this.base * (1 + this.bonus / 100);
  }
}

Deterministic Damage Calculator

Data-driven implementation that loads size change mechanic configuration from external definitions.

function resolveSizeChangeMechanicController(attacker, defender) {
  const rawOutput = attacker.attack * 1.5;
  const mitigation = defender.defense * 0.7;
  const result = Math.max(1, rawOutput - mitigation);

  if (Math.random() < attacker.luckFactor) {
    return result * 1.5;
  }
  return result;
}

Defense Calculator

Core implementation pattern for handling size change mechanic logic with clean state management.

function calculateSizeChangeMechanicProcessor(attacker, defender) {
  const rawDamage = attacker.attack * 1.2;
  const defense = defender.defense * 0.6;
  const result = Math.max(1, rawDamage - defense);

  if (Math.random() < attacker.critRate) {
    return result * 2.0;
  }
  return result;
}