Guide

Game crafting systems explained

A player spends twenty minutes gathering ore, opens the crafting menu, and taps Craft sword. Nothing happens — the UI forgot to check for a nearby forge. They force-quit, relaunch, and now have two swords and zero ore. Crafting is one of the most player-visible systems in RPGs, survival games, and live-service MMOs, yet it is often bolted onto inventory as an afterthought. A solid crafting pipeline defines recipes as data, validates ingredients atomically, routes output through the same grant path as loot drops, and ties consumption into your economy sinks. This guide covers recipe schemas, station and skill gates, instant vs timed production, quality tiers, unlock progression, UI patterns, multiplayer authority, and a checklist for shipping crafting that players trust.

What crafting does in your game loop

Crafting converts inputs the player already earned — gathered materials, dismantled gear, currency — into new items with higher utility or narrative meaning. It serves three design roles at once:

  • Progression gate — better gear requires better recipes, stations, or skills.
  • Economy sink — materials leave circulation, slowing inflation in persistent worlds.
  • Player expression — build choices, loadouts, and cosmetic variants feel personal.

When crafting fails, players blame the whole game. Duplicate items from race conditions, silent ingredient loss, or recipes that craft into full inventories destroy trust faster than a buggy combat hitbox. Treat crafting as a transactional system with the same rigor you apply to shop purchases or loot grants.

Recipe data model

Store recipes as structured data, not hard-coded switch statements. A minimal schema looks like this:

  • Recipe ID — stable string key referenced by quests and analytics.
  • Inputs — list of {itemId, quantity, consume: bool} tuples; optional currency cost.
  • Outputs — list of {itemId, quantity, minQuality, maxQuality} or a weighted table.
  • Requirements — station type, player level, profession rank, quest flag, or season.
  • Timing — instant, channeled (player must stand still), or queued (completes while offline).
  • Metadata — display name, category, sort order, discovery state (hidden until found).

Separate item definitions (static stats, icon, stack limit) from item instances (durability, enchantments, bound state). Recipes reference definitions; the grant pipeline creates instances. If your game supports modding or live content updates, version recipes independently of client builds so you can rebalance material costs without a full patch.

Ingredient matching rules

Decide early how flexible inputs are:

  • Exact match — only iron_ingot counts; simplest to validate.
  • Tag match — any item tagged metal.tier1 satisfies the slot; powerful for survival games with material tiers.
  • Wildcard slots — "any gem" plus fixed metal; requires UI that previews valid substitutions.

Tag-based matching reduces recipe count but complicates UI and server validation. Document tag inheritance (does steel_ingot satisfy metal.tier1?) in one authoritative table both client preview and server enforcement read from.

Crafting stations and context gates

Stations restrict where crafting happens: forge, alchemy table, workbench, cooking fire. Context gates answer who and when: profession level, faction reputation, time-limited event recipes.

Implementation patterns:

  • Proximity check — player within radius of station entity; common in 3D worlds.
  • Inventory-held station — portable crafting kit consumed or cooldown-gated; common on mobile.
  • Menu-only station — abstract "base building" level unlocks tier-2 recipes without a physical object.

The client may grey out unavailable recipes for UX, but the server must re-validate station presence on the craft request. Never trust client reports that the player is "at a forge" — spoofed packets are trivial.

The craft transaction pipeline

A single craft should be one atomic operation (or one saga with compensating rollback):

  1. Validate recipe exists and player has unlocked it.
  2. Validate all requirements: station, skills, quest flags, cooldowns.
  3. Lock or reserve input items (prevent double-spend across parallel requests).
  4. Verify output capacity — bag space, stack limits, unique-item caps.
  5. Consume inputs and grant outputs in the same database transaction.
  6. Emit events for quests, achievements, analytics, and UI refresh.

If step 5 fails after step 4 reserved inputs, roll back the reservation. Idempotency keys on craft requests prevent duplicate swords when the client retries after a timeout. Log every craft with recipe ID, input snapshot hash, and output instance IDs for exploit investigations.

Instant vs timed crafting

Instant craft completes in one request — best for action RPGs and session-based games where pacing matters. Timed craft introduces real-time or accelerated clocks: a sword takes five minutes at the forge, or four hours wall-clock in mobile builders.

Timed crafting adds retention hooks (return later to collect) and monetization pressure (speed-ups) but frustrates players if queues are opaque or lose progress on crash. Persist queue state server-side; show clear timers; allow collection into overflow mail if inventory is full. Offline completion is fine for mobile; competitive multiplayer usually keeps crafts instant to avoid pay-to-skip imbalance.

Quality tiers, RNG, and failure outcomes

Many games roll output quality based on input grade, player skill, or random chance — a masterwork potion vs a weak one. Define whether RNG applies per craft or per batch, and whether players can see odds.

Common patterns:

  • Fixed output — deterministic; easiest to balance and support.
  • Quality roll — output tier drawn from a table; use weighted random with documented pity if failure feels punishing.
  • Skill-scaled band — blacksmithing 50 shifts quality distribution upward; no hard failures.
  • Failure with partial refund — craft fails, some materials lost; high tension, easy to tune wrong.

Regulated loot-box jurisdictions may treat undisclosed random crafting outcomes as gambling-adjacent. Disclose rates or offer deterministic paths for paid currencies. In PvP games, avoid crafts that create strictly better random stats — players hate losing to someone else's RNG.

Recipe discovery and unlock progression

How players learn recipes shapes exploration and retention:

  • Known from start — full list visible; low friction, less discovery joy.
  • Pickup unlock — finding a schematic adds one recipe; classic in survival games.
  • Experimentation — combine items to discover recipes; memorable but hard to tune and accessibility-hostile without hints.
  • Profession progression — leveling crafting skill auto-unlocks tiers; ties into player progression.
  • Quest and reputation gates — narrative pacing for MMO endgame crafts.

Track unlock source per player for support and analytics. When you nerf a recipe cost in a balance patch, decide whether discovered state persists — usually yes, but revert inflated outputs carefully to avoid economy shocks.

Economy integration: sources, sinks, and inflation

Every craft is a sink: materials and currency leave the world. If gathering sources outpace craft sinks, commodity prices collapse and grinding feels pointless. Model your economy with spreadsheet simulations before launch:

  • Expected materials per player-hour from gathering and drops.
  • Consumption per hour from core progression recipes.
  • Trade and auction house bypass — can players buy inputs instead of farm?
  • Bot farming risk on high-value craft outputs.

Bulk crafting (craft 99 arrows) should use the same per-unit validation but one transaction where possible to reduce server load. Cap batch size to prevent macro abuse. Dismantle or salvage recipes (gear → materials) are reverse crafts — apply the same atomic rules to avoid duplication loops (craft sword, salvage, profit).

UI and UX patterns

Crafting menus fail when players cannot answer three questions instantly: Can I craft this? What am I missing? What will I get?

  • Highlight craftable recipes; sort by missing-ingredient count.
  • Show input list with owned/required counts and icons for missing items.
  • Preview output stats, especially when quality varies.
  • Confirm destructive crafts (consumes rare reagents) with a second step.
  • Support gamepad focus order and screen-reader labels on mobile.
  • Queue UI for timed crafts with push notification opt-in on mobile.

Keep menu depth shallow — three taps from inventory to completed craft on mobile is a reasonable target. Link unfinished crafts to active quests in the same panel so players see why they need that iron ingot.

Multiplayer authority and exploits

All craft validation runs server-side in multiplayer. Common exploits to block:

  • Duplicate spend — parallel requests craft twice from one ore stack; fix with row locks or optimistic versioning.
  • Recipe injection — client sends unknown recipe ID; server whitelist only.
  • Stat stacking — craft during buff then disconnect before consume; validate buff at commit time.
  • Trade window dupe — craft while trading; serialize inventory mutations globally per player.
  • Time skew — finish timed craft early via clock manipulation; trust server UTC only.

Rate-limit craft endpoints. Flag players who craft high-value items at inhuman frequency. Reconcile inventory hashes periodically against event-sourced craft logs.

Production checklist

  1. Define recipes as versioned data with inputs, outputs, requirements, and timing.
  2. Share one validation module between client preview and server enforcement.
  3. Make each craft atomic: reserve inputs, grant outputs, or roll back entirely.
  4. Use idempotency keys on craft requests to survive client retries.
  5. Validate station proximity and skill gates on the server, not the client.
  6. Check output inventory capacity before consuming inputs.
  7. Log crafts with recipe ID, inputs, outputs, and player ID for audit trails.
  8. Simulate economy throughput — gather rates vs sink rates per tier.
  9. Test salvage loops and batch crafts for duplication exploits.
  10. Design UI that surfaces missing ingredients and output previews clearly.

Key takeaways

  • Crafting is a transaction — same atomic discipline as payments and loot grants.
  • Recipes are data — tag matching and stations belong in schema, not scattered code.
  • Timed crafts need persistent queues — crashes must not erase progress or duplicate rewards.
  • RNG outputs need disclosed odds — or a deterministic alternative for paid paths.
  • Multiplayer crafts are server-authoritative — every exploit path starts with trusting the client.

Related reading