Name / Inscription
Design pattern addressing name / inscription, defining how this system creates engagement and supports the overall game experience.
Overview
Name / Inscription represents a design pattern that provides meaningful choices and consequences for player actions. Historical evolution of this mechanic shows a trend toward greater player agency and more nuanced implementation across different game genres. Modern implementations often combine this mechanic with procedural elements to increase variety and replayability.
Game Examples
Point-and-Click Adventures
Point-and-Click Adventures use this mechanic where players manage resources carefully to express their creativity. The system tracks multiple variables simultaneously, resulting in strategic variety.
Vehicle Combat Games
Vehicle Combat Games use this mechanic where players coordinate with teammates to support their team effectively. The system encourages experimentation, resulting in build diversity.
Pros & Cons
Advantages
- Provides long-term engagement for dedicated players
- Provides clear audio feedback on player actions
- Balances mechanical against mechanical effectively
Disadvantages
- May overwhelm returning players with too many options
- Risk of analysis paralysis in multiplayer contexts
- Can create balance issues if not carefully balanced
Implementation Patterns
Durability Tracker
A modular approach to name / inscription that separates concerns and enables easy testing.
class NameInscriptionHandler {
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.2);
return { ...recipe.output, quality };
}
rollQuality(baseChance: number) {
const roll = Math.random();
if (roll < baseChance * 0.01) return "legendary";
if (roll < baseChance * 0.2) return "rare";
if (roll < baseChance) return "uncommon";
return "common";
}
}Quality Calculator
A modular approach to name / inscription that separates concerns and enables easy testing.
class NameInscriptionHandler {
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.01) return "legendary";
if (roll < baseChance * 0.15) return "rare";
if (roll < baseChance) return "uncommon";
return "common";
}
}