So I was reading this topic…right, stash space again
And I wanted to go a bit deeper to why it’s expensive and difficult to do in games like D2 or D4.
I’m from the industry so I already knew some basics, especially regarding traffic server loads and live memory used, but I wanted to translate it in money, insted of doing it myslef, we have machine learning programs nowdays, so I asked and here are some nerdy data, it was a long coversation so I had to shorten it down a lot…it’s still long read
In games like Diablo 2 and Diablo 4, larger stash sizes can cause server performance issues, and here’s why:
More stash space = more items = more data.
The more items, the more complex and slower this becomes.
- Track every item, prevent duplication, ensure item uniqueness.
- Verify item integrity every time it’s moved, dropped, or traded.
- Larger stashes increase the complexity and time required for this.
You end up with massive storage requirements. Longer backups, higher latency.
Every stash item is stored in a database row or blob.
That data must be: Validated, Versioned,Checked for dupes, Sent across the network
With large stashes, this adds up fast.
Imagine each item is ~200 bytes on average. Now give every player:
4 stash tabs - Each tab has 100 item slots. That’s 80,000 bytes (~78 KB) per player
With 1 million players online = ~78 GB of live RAM/data to manage, just for stash items
Blizzard hosts everything server-side, which means:
- They’re dealing with real-time, persistent data.
- Large stashes create extra load on inventory systems, databases, backup systems, and network traffic.
- Every inventory click and drag? It’s a server round-trip.
How Big is a Single Item?
Estimate per item: ~40–60 bytes (simple item)
Rare/unique/special: ~80–120 bytes
Calculation (per tab):
5 tabs ~16.5 KB Common D4 scenario
Server-Side Scaling Let’s assume:
- 1 million players Online at peak
- Each has 5 tabs = 16.5 KB
Total:
1,000,000 × 16.5 KB = ~15.7 GB of RAM/active DB cache just for stash data.
Not including: Character data, Inventory, Crafting mats, Cosmetics, Seasonal flags
And this data has to be: Loaded fast, Validated, Backed up, Sync’d across data centers
That’s terabytes of structured data, and every stash click can trigger a full read → validate → write cycle.
Estimated Server Load for 1 Million Concurrent Players (Diablo 4 style):
Character stats & state | ~10–20 KB | Includes HP, skills, gear, cosmetics, etc. |
---|---|---|
Inventory (including stash) | ~30–50 KB | Stash tabs, gear, mats |
World/zone state | ~5–10 KB | Which zone you’re in, local events |
Party & social state | ~2 KB | Friends, clan, group, whispers |
Session metadata | ~5–10 KB | Login token, IP, anti-cheat, matchmaking |
Caching / temp structures | ~10–20 KB | Buffers, UI state, preloads |
Total RAM per player: ~60–100 KB |
Multiply by 1 million players:
60–100 GB of active RAM, just for real-time state
(plus extra for OS, services, overhead — likely runs in a 300–500 GB RAM cluster minimum)
Let’s look at traffic during gameplay. Diablo 4 is action-heavy:
Activity | Data/sec | Notes |
---|---|---|
Position/movement updates | ~0.5–1 KB/s | Interpolated, low-freq |
Combat interactions | ~1–3 KB/s | Attacks, crits, mobs |
UI + inventory changes | ~0.2 KB/s | Opening menus, loot |
Chat, emotes | ~0.1 KB/s | Very low |
World events / syncing | ~1 KB/s | Dungeon doors, public events |
Keep-alive + ping | ~0.1 KB/s | Regular tiny packets |
Total per player: ~3–6 KB/s (avg) |
Multiply by 1 million players:
~3–6 GB/sec total upstream & downstream
~25–50 Gbps sustained traffic, across servers
|Metric|Estimate|
|—|—|
|Active RAM usage|60–100 GB (live state only)|
|Total server RAM|Likely 300–500 GB+ per region|
|Network bandwidth|~30–50 Gbps total|
|Storage per player|~200–500 KB (long-term)|
|DB traffic (read/write)|Constant I/O load, likely sharded DBs|
We are getting to it, if you read it until here, you might as well finish it $$ info coming right up
Simulation of what it would cost Blizzard in cloud hosting fees to keep 1M players online for an hour or a day.
-
Compute & RAM Costs
Assumptions:
Each game instance server handles ~20 players
Each server instance needs ~4–8 GB RAM
Using general-purpose VMs (e.g., GCP’s n2-standard-8 or similar)
RAM price: $0.004–$0.01 per GB per hour
|1M players ÷ 20 per server =|50,000 game servers|
|—|—|
|RAM per instance|8 GB|
|Total RAM needed|400,000 GB (≈ 400 TB)|
|Cost per hour (RAM only)|$0.004 × 400,000 = $1,600/hr (minimum)|
|Cost per day|~$38,400/day (RAM alone)| -
CPU / Compute Time
- Assume $0.05 per vCPU/hr (Google or AWS baseline)
- Each server instance needs ~2 vCPUs
- 50,000 servers × 2 vCPU = 100,000 vCPUs
CPU cost per hour:
100,000 vCPUs × $0.05 = $5,000/hr
CPU + RAM per hour: ~$6,600/hr
Per day: ~$158,000/day
- Network bandwidth
- ~4 KB/s per player
- 1M players = ~4 GB/sec
- 1 hour = 4 × 3600 = ~14,400 GB/hour
- At ~$0.08/GB egress (Google Cloud standard)
Network cost per hour:
14,400 GB × $0.08 = $1,152/hr
Per day: $27,648/day
- Storage + Database I/O
- ~300 KB stash/character data
- 1M players = ~300 GB total
At $0.17/GB/month → negligible day cost: ~$1.70/day
But factor in redundancy, backups, analytics, likely 3–5× storage footprint: ~$5–10/day realistic
Say 1M players generate:
~10 read/writes per minute = 10M ops/minute
600M ops/hour
Using a scalable DB like Spanner or DynamoDB:
~$1,000–$2,000/hour, conservatively
**Final Estimate **
Resource | Hourly Cost | Daily Cost |
---|---|---|
RAM | ~$1,600 | ~$38,400 |
CPU | ~$5,000 | ~$120,000 |
Network Egress | ~$1,150 | ~$27,648 |
Storage | Negligible | ~$10 |
DB Operations | ~$1,500 | ~$36,000 |
TOTAL: ~$9,000/hour → $220,000/day
not counting: Dev team salaries, Customer support, Marketing etc…
Optimization Tricks They Probably Use:
- Zone sharding: You don’t load the whole world at once
- Data deduplication: Common stash items might reference a shared base
- Lazy loading: Only load stash data when opened
- Delta saving: Only write what changed
- Preloading popular zones on hot servers
These keep bandwidth and RAM manageable — and are why your stash doesn’t instantly open in Diablo 4