Browse/Crafting & Building/Bomb / Explosive Crafting
Crafting & Building

Bomb / Explosive Crafting

A system that manages bomb / explosive crafting mechanics, providing structured rules for how this feature operates within the game.

Low complexity
2 examples
2 patterns

Overview

This mechanic, commonly known as bomb / explosive crafting, provides meaningful choices and consequences for player actions. Designers must carefully balance the system's depth against its learning curve, ensuring that new players can engage while experienced players find room for mastery. Modern implementations often combine this mechanic with procedural elements to increase variety and replayability.

Game Examples

Space Simulators

Space Simulators use this mechanic where players explore the environment to create unique character builds. Randomized elements ensure variety across sessions, resulting in creative expression.

Point-and-Click Adventures

Point-and-Click Adventures use this mechanic where players respond to dynamic events to survive increasingly difficult challenges. Randomized elements ensure variety across sessions, resulting in cooperative synergy.

Pros & Cons

Advantages

  • Creates satisfying visual loops
  • Scales well from beginner to advanced play
  • Provides clear delayed feedback on player actions
  • Easy to understand but difficult to master

Disadvantages

  • May conflict with meta systems in the game
  • Risk of exploitation in competitive environments
  • Can become trivial in the late game
  • Can create analysis paralysis if not carefully balanced

Implementation Patterns

Upgrade Handler

Data-driven implementation that loads bomb / explosive crafting configuration from external definitions.

class BombExplosiveCraftingProcessor {
  recipes: Recipe[] = [];

  craft(recipeId: string, inventory: Inventory) {
    const recipe = this.recipes.find(r => r.id === recipeId);
    if (!recipe) return null;

    for (const ingredient of recipe.ingredients) {
      if (!inventory.has(ingredient.id, ingredient.amount)) {
        return null; // Missing materials
      }
    }

    for (const ingredient of recipe.ingredients) {
      inventory.remove(ingredient.id, ingredient.amount);
    }

    const quality = this.rollQuality(0.1);
    return { ...recipe.output, quality };
  }

  rollQuality(baseChance: number) {
    const roll = Math.random();
    if (roll < baseChance * 0.05) return "legendary";
    if (roll < baseChance * 0.15) return "rare";
    if (roll < baseChance) return "uncommon";
    return "common";
  }
}

Blueprint System

A modular approach to bomb / explosive crafting that separates concerns and enables easy testing.

class BombExplosiveCraftingProcessor {
  recipes: Recipe[] = [];

  craft(recipeId: string, inventory: Inventory) {
    const recipe = this.recipes.find(r => r.id === recipeId);
    if (!recipe) return null;

    for (const ingredient of recipe.ingredients) {
      if (!inventory.has(ingredient.id, ingredient.amount)) {
        return null; // Missing materials
      }
    }

    for (const ingredient of recipe.ingredients) {
      inventory.remove(ingredient.id, ingredient.amount);
    }

    const quality = this.rollQuality(0.1);
    return { ...recipe.output, quality };
  }

  rollQuality(baseChance: number) {
    const roll = Math.random();
    if (roll < baseChance * 0.02) return "legendary";
    if (roll < baseChance * 0.15) return "rare";
    if (roll < baseChance) return "uncommon";
    return "common";
  }
}