Hero Collection
Game design pattern for hero collection that creates meaningful player choices and engaging feedback loops.
Overview
Hero Collection represents a design pattern that establishes rules governing player behavior and system responses. 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. Cross-genre adoption of this mechanic demonstrates its versatility and fundamental appeal to players across different gaming preferences.
Game Examples
Social Deduction Games
Social Deduction Games use this mechanic where players time their actions precisely to maximize their effectiveness. The system tracks multiple variables simultaneously, resulting in creative expression.
Party Games
Party Games use this mechanic where players invest in long-term growth to discover hidden content. Player choice meaningfully affects outcomes, resulting in build diversity.
Tower Defense Games
Tower Defense Games use this mechanic where players track multiple variables to complete objectives efficiently. The mechanic integrates seamlessly with other systems, resulting in satisfying progression.
Pros & Cons
Advantages
- Balances narrative against tactical effectively
- Integrates naturally with progression systems
- Provides clear immediate feedback on player actions
Disadvantages
- Creates potential for exploits by experienced players
- Difficult to balance across a wide range of skill levels
- Increases storage requirements significantly
- Risk of exploitation in competitive environments
- Can become trivial in the late game
Implementation Patterns
XP Calculator
A modular approach to hero collection that separates concerns and enables easy testing.
class HeroCollectionHandler {
rank = 1;
xp = 0;
addXP(amount: number) {
this.xp += amount;
while (this.xp >= this.xpToNext()) {
this.xp -= this.xpToNext();
this.rank++;
this.onLevelUp();
}
}
xpToNext() {
return Math.floor(100 * Math.pow(1.15, this.rank - 1));
}
onLevelUp() {
// Grant rewards for level rank
this.skill += 3;
}
}Unlock Validator
Data-driven implementation that loads hero collection configuration from external definitions.
class HeroCollectionHandler {
level = 1;
xp = 0;
addXP(amount: number) {
this.xp += amount;
while (this.xp >= this.xpToNext()) {
this.xp -= this.xpToNext();
this.level++;
this.onLevelUp();
}
}
xpToNext() {
return Math.floor(50 * Math.pow(1.15, this.level - 1));
}
onLevelUp() {
// Grant rewards for level level
this.mastery += 2;
}
}