Abstract
Problem: How do you design and balance a game economy for a massive open-world RPG where players have wildly different play styles — from casual story-runners to completionists who loot every container?
Approach: Matthew Steinke, gameplay designer at CD Projekt Red, walks through the economic systems underpinning The Witcher 3: Wild Hunt. He breaks the economy into two primitives (resources and entities) and four functions (sources, traders, drains, converters), then explains the custom tools built to balance them — including a runtime price modifier called "Reactor" and a data-driven design methodology he calls "Witchcraft." He also covers how post-launch feedback shaped the Hearts of Stone and Blood and Wine expansions.
Findings: Gut instinct alone isn't enough to balance an open-world economy — visualizing data trends through polynomial curves revealed pricing anomalies and enabled procedural content generation that eliminated hundreds of bugs. Economic drains are essential but invisible to players. The infamous cow-killing exploit was fixed with one of gaming's most beloved patches (the Bovine Defense Force Initiative). Post-launch features like the Runewright, mutations system, and armor dyes each solved multiple design problems simultaneously by combining economic drains with new progression mechanics.
Key insight: A well-designed game economy isn't just about numbers — it's about creating emotion. When players feel worried about whether they can afford the next upgrade, when they weigh disassembling versus repairing versus saving up, that's when the RPG fantasy becomes real.

1. The Speaker
Matthew Steinke is a gameplay designer at CD Projekt Red who worked on the economy, game balance, and RPG systems for The Witcher 3: Wild Hunt and its two expansions, Hearts of Stone and Blood and Wine. Notably, he mentions that everything related to the economy and game balance came "incredibly late in the production" — it was the last thing worked on before shipping.
2. The Player's Journey

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=480s
Steinke opens by framing the core tension of open-world design: exploration is the point, but pure roaming without interruption is boring. The biggest complaint about the genre is that running from point A to point B can become tedious. RPG mechanics solve this — a monster on the horizon, a merchant's crafting collection, a rare sword with magical abilities, a new armor set. These moments add depth that takes immersion to the next level.
RPGs aren't about reaching a destination — they're about the player's journey and what they experience along the way. The key to motivation is keeping the player rewarded for their actions, with rewards that match the challenge they've just overcome. To do that, you must understand each system in the game in order to eliminate exploits and establish a balanced experience the player can understand, anticipate, and eventually overcome.
3. Game Economy Fundamentals

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=540s
Steinke breaks the game economy into two fundamental concepts: resources and entities.
Resources are anything that can be measured numerically — money, stamina, ability points, items, upgrades, even enemies. Basically anything the player can produce, gather, collect, or destroy. Resources come in two types:
- Tangible resources have physical representation in the game world. They exist at a particular location and can be taken and moved. Examples: inventory items, alchemical herbs that can be harvested.
- Intangible resources have no physical properties. They don't occupy space or exist at a location. Experience, for instance, is just a number — the player doesn't physically manipulate it to achieve a new level.

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=600s
Entities store specific quantities of a resource. For programmers, an entity is essentially a variable. An entity named "level" stores the player's current experience level. The player's crown entity changes as Geralt buys, sells, and earns rewards.
4. The Four Economic Functions

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=720s
With resources and entities defined, Steinke introduces four functions that govern how resources move through the economy:
4.1. Sources
Sources create new resources essentially out of thin air. They may be triggered by events, switched on and off, or set to operate continuously at a specific production rate. In The Witcher, sources include lootable containers, health-regenerating food and potions (since Geralt doesn't recover health naturally), and harvestable herbs for alchemical ingredients.
4.2. Traders
Traders move resources between entities according to rules of exchange. Nothing is created or destroyed — the process simply exchanges resources. When a player buys a sword from a blacksmith for 10 crowns, the trader mechanic transfers crowns to the blacksmith and the sword to the player's inventory.
A key problem emerged: it didn't make sense for a poor herbalist in war-ravaged No Man's Land to be interested in purchasing a rusty sword from Geralt. The team needed rules controlling who could trade what, and rules affecting price — because sometimes an item's real value is quite different from what the item is worth.
4.3. The Reactor System

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=960s
Because economy and balance came very late in production — with hundreds of merchants already placed in the world — Steinke needed something that would make big changes quickly, save time, avoid creating bugs, and be easy to iterate on. He created a runtime tool called Reactor.

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=1080s
Reactor works by comparing a matrix of data points: the item's category, rarity, and origin against the merchant type, their location, and any quest-related discounts. Using a hash map for near-constant runtime access, every trade became unique. Instead of a single static value per item, prices were calculated at runtime, giving the feeling of trading with a real merchant in an active economy.
This opened a new gameplay dimension: ambitious players could trade items across regions at favorable rates. A blacksmith might give preferred rates for rare weapons but have no interest in books. In Skellige, where villages are well-fed, grain and meat are cheap — players could bring these foods back to No Man's Land (ravaged by war and famine) and sell them for a large profit.
4.4. Drains

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=1200s
Drains are the opposite of sources — they remove resources permanently from the game. Unlike traders, the resource doesn't go anywhere or turn into anything else. The crossbow bolt is an example: once fired, it's gone, and you must spend money to replace it.
The price modifier itself functions as a drain, unfairly burdening the player's budget to reduce purchasing power over time. Crafting service costs scale progressively as item quality increases. While players will never understand and secretly kind of hate you for taking all their money, drains are one of the key controller mechanisms designers can use to ensure players always buy for more and sell for less.
Steinke's rule of thumb: anytime he's thinking of a system, whether existing or new, he tries to figure out a way to put in an economic drain.
4.5. Converters
Converters transform resources from one kind into another — in The Witcher, this is crafting. The real problem is that as armor and swords become more complex, the number of ingredients mixed with selecting types of leather, ore, plates, chainmail, and wire makes even simple items incredibly complex to balance. Steinke describes the process as "almost pure speculation."
5. Witchcraft: A Data-Driven Design Methodology
To reduce the complexity of these decisions — and because he was out of time — Steinke redeveloped his entire approach into a system he calls Witchcraft: a set of tools, guidelines, and metrics that simplified the design process, helped eliminate exploits, and automated content generation. It was his attempt to take a scientific approach instead of basing decisions on gut instinct alone.
The core insight: in order to truly balance a numerically-based system, visualize data trends rather than working on a per-item basis. Plot the damage a sword deals versus its cost — what shapes do those graphs reveal? Is the amount of given resources increasing over time? Are they increasing consistently? Are resources distributed evenly, or are there progression stoppers?
5.1. Price Progression Curves

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=1560s
Steinke shows actual datasets from development. Plotting spending rates as item quality approaches category ceilings reveals emerging patterns that are invisible at the individual item level. The curve acted as a recommendation from which additional adjustments could be made.
Early experiments showed a curve that ramped up quickly and slowed over time — meaning even a small quality increase early in the game would result in a large price increase. But was that the right progression? Linear? Quadratic? Exponential?
The answer came from the Witcher's grounded fantasy. The economy couldn't just show up with a $10,000 sword in a place where people can't afford to eat. The economy needed to feel poor. But items should also increase in value so that by endgame, the player would feel they'd genuinely earned something.
By reducing the rate of growth until the end of the game, relic items continued to increase greatly in value while the player's spending power was stunted. This created a deliberate gray area: do I disassemble something? Repair something? Buy something new? Hold out for the next level?
This is where Steinke realized he hadn't just solved balance problems — he had created emotion. Players felt worried, even panicked, that they might not have enough. Maybe they'd have to grind, or complete more quests. And that, he says, is what role-playing games are all about — being inside the character's mind, figuring out the next best move.
5.2. Procedural Generation from Curves
By pre-calculating the polynomial coefficients and storing them in a table, Steinke could procedurally generate curves at runtime. Instead of visualizing how custom data points fit a curve, the system generated the infinite set of points that fit the curve exactly.
This change eliminated hundreds of existing bugs, prevented new ones from appearing, removed thousands of hardline-coded values from XML, reduced load times, and decreased the memory footprint of every item — saving countless hours of overtime during crunch.
6. Economic Exploits

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=1800s
After launch, the team scoured the internet for exploits. Every morning brought a new water-cooler conversation about some hilarious hack players had found. Unfortunately, most focused on economic exploits in Steinke's design.
6.1. The Cow Exploit and the Bovine Defense Force
The most famous exploit involved slaughtering cows in White Orchard for their valuable hides. The cows were set to infinitely respawn to ensure the village always looked alive — a source function with no limitations, creating a situation where it was only a matter of time before players destabilized the early economy.
The fix became legendary: after the patch, exploiting the cow hides would spawn a Chort (a high-level boss monster with a cow-like skin) that would chase down and kill the player no matter where they went. Lovingly named the Bovine Defense Force Initiative, it penalized cheaters in a fun way that felt like bonus content — and became "probably the most beloved bug I've ever fixed."
6.2. The Tax Collector
Similarly, in Hearts of Stone, players who'd used money-making exploits might receive a visit from Walthamore Middy, a tax collector who knows about your "undocumented income." In true Witcher fashion, you're given a choice: deny everything or admit to participating. The fix enriched the story with humor, a plot twist, and meaningful consequences — fundamentals of a great RPG.
7. Hearts of Stone: The Runewright

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=2040s
The Runewright feature originated from a concept that never made it into the base game: runes set into sword blades that surge with Witcher sign magic. Hearts of Stone was finally the chance to realize it.
But the feature also solved a critical economic problem. Feedback from QA and the online community showed players completing the game with 20,000–40,000 excess crowns and nothing to spend them on. This wasn't necessarily an exploit — it was a fundamental challenge of open-world design.
7.1. The Level Design Problem
Even if the economy is statistically balanced, there's an additional layer: multiple people place content for different reasons. Some place items for gameplay, ensuring the player has things to do. Others place containers aesthetically to make the world feel real. Quest designers reward players for completing challenges. Everyone is right — and the total is impossible to predict.
Worse, designers have no way of predicting what type of player they'll get. Steinke identifies three types:
- Primary quest only — collects ~15% of available loot
- Balanced player — collects ~50% of available loot
- Completionist — collects all of it
The content must be based around places the player will automatically visit. Casual players should enjoy looting and upgrading just as much as hardcore players. This results in a tendency to over-reward: if a balanced player picks up even a portion of what's placed along quest locations, they'll have more money, gear, and upgrades than needed to finish the game.
7.2. Runewright as Economic Drain

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=2160s
The solution was to combine two problems into one feature. The Runewright must be earned through a quest and then improved by investing in equipment:
- Level 1: 5,000 crowns + quest items to open the shop
- Level 2: Additional 10,000 crowns
- Level 3: Another 15,000 crowns (total: 30,000)
This was calibrated against the 20,000–40,000 surplus most players had accumulated. By the time the DLC released, most players had just enough money to progress through the system, starting Blood and Wine roughly where they should be.
A smart design choice: enchantments themselves are free. The initial investment is costly, which is logical in the story — the Runewright owes Geralt a debt of gratitude for putting him back in business. More importantly, free enchantments encourage players to experiment with all their new abilities.
8. Blood and Wine: Mutations, Items, and Dyes

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=2700s
Blood and Wine introduced several new RPG mechanics: UI improvements, a mutation system, new item design rules, and an armor dye system.
8.1. The Progression Problem

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=2820s
Internal QA and community feedback identified a critical concern: the progression curve peaked too early, leading to endgame disappointment where players felt little to no progression.
Steinke highlights a key design philosophy: The Witcher uses fixed enemy difficulty rather than level-scaling. Instead of increasing monster strength based on player level, encounters are fixed and can overwhelm even talented players. The key takeaway: to ensure players actually feel like they're getting stronger, you can't scale enemies to match them — that creates a flat, normalized experience where progression becomes invisible.
The problem was in the skill tree design. Once all skill points were allocated, all skill slots filled, and abilities maxed out, players had no motivation to continue leveling up. Ability points accumulated with nowhere to go. Monster mutagens suffered the same problem — slots were full, and powerful items just stacked up in inventory.
8.2. The Mutation System

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=2940s
Mutations are powerful abilities added to Geralt's skill set on top of regular character skills. With 12 mutations total — each embodying combat, alchemy, signs, or a blend — players get to choose how they progress once again.
Mutations must be researched, costing increasing amounts of both skill points and greater mutagens. They build on each other, requiring lower mutations before unlocking advanced options. Some are labeled "game changing," others are frankly "game breaking" — like a freezing effect on the Aard sign that causes enemies to explode into frozen gibs.
When a mutation is equipped, the skill tree expands with one additional ability slot for every two mutations researched. This addressed multiple issues simultaneously:
- Eliminated unused ability points by providing new spending opportunities
- Created demand for monster mutagens, encouraging investment in the monster hunt mechanic
- Provided new motivation to continue leveling up
- Further immersed the player in the Witcher's monster slayer fantasy
8.3. Armor Dyes

Source: https://www.youtube.com/watch?v=IB28lsqUT3Q&t=3000s
One of the most requested community features was additional customization. Many RPGs let you design your protagonist from the outset, and players wanted more options.
There was a technical hurdle: character artists had made an early decision to use a single channel process for high-quality assets, rather than the two-channel system used for randomizing NPC appearances. Steinke had to modify code paths that hadn't been touched in years, with no in-house expert to consult if things went wrong. New textures and materials had to be created per armor piece.
The prototype — modifying the Gryphon armor — demonstrated the quality and variety possible. The system includes a dye remover for mistakes, a preview mode for mixing colors across armor pieces, and no impact on player statistics whatsoever. Steinke calls this his favorite feature: it's purely about experimentation, fun, and realizing the player's own story.
9. Takeaways
- Two primitives, four functions: Every game economy is resources and entities, moved by sources, traders, drains, and converters
- Drains are essential and invisible: Players will hate you for taking their money, but without drains, infinite wealth breaks everything
- Runtime calculation beats static values: The Reactor system made every trade unique and enabled region-based economic gameplay
- Visualize data, don't guess: Polynomial curves revealed patterns invisible at the per-item level and enabled procedural generation
- Economy creates emotion: When players feel worried about affording the next upgrade, the RPG fantasy becomes real
- Fix exploits with character: The Bovine Defense Force and Walthamore Middy turned bugs into beloved content
- Combine problems into features: The Runewright simultaneously drained excess wealth and introduced new gameplay
- Fixed difficulty over level-scaling: Players only feel progression when enemies don't scale to match them
- Design for all player types: Content must work for the 15%-loot casual player and the completionist who takes everything
10. References
- Matthew Steinke. "The Living World of The Witcher 3: The Wild Hunt." GDC Europe 2016. https://www.youtube.com/watch?v=IB28lsqUT3Q