Your players keep what they earned
Out-of-raid stashes, character equipment, traders and a player-run market for Unreal Engine survival games. Held on a server, so it is still there on a machine they have never played on.
3
90
4200
2
60
900
Losing a rifle to a dropped packet is how players stop trusting a game
One ordering decision separates an inventory that is merely networked from one that is safe. It costs a duplicate in the worst case, which is visible and correctable — rather than a hole, which is neither.
Platform first. The character keeps the rifle until the server has it.
Player drags a rifle into the stash
Server takes the rifle — and only now owns it
Character's copy is removed
A failed deposit costs the player nothing.
Take it locally, then push. One dropped packet and it is gone.
Player drags a rifle into the stash
Character's copy is removed immediately
Push fails — the rifle existed nowhere
The player lost a rifle, and support cannot prove otherwise.
The parts of an economy nobody wants to write twice
Stashes that survive the raid
Grid or slot layouts, whichever your game already uses. Items keep their position, durability and attachments across sessions, servers and machines.
Server-authoritative by construction
The platform is changed first and the game follows. A dropped packet costs a player nothing, because nothing left their inventory until the server had it.
Intents, never state dumps
Every change is a grant, move, consume, split or merge. A retried request cannot duplicate an item, which a whole-inventory save eventually will.
A real ledger
Currency lives in double-entry accounts with a balance trigger. Money cannot be created by a bug, only moved.
Drops into Unreal
Precompiled binaries, no C++ toolchain required. Blueprint nodes for everything, and an offline queue that survives a restart.
Traders and a player-run market
Loyalty levels, restock schedules and player-to-player trading with escrow. Abuse controls ship with the feature, not after it.
Grant an item, and it is on every server they join
No session to synchronise, no save file to merge. The platform decides where the item lands and hands back the coordinates, so your UI draws the truth rather than a guess.
curl -X POST https://api.raidstate.com/v1/game/inventory/grant \
-H "Authorization: Bearer $RAIDSTATE_KEY" \
-d '{"container_id":"…","item_id":"AK74","quantity":1}'
{"outcomes":[{"kind":"grant",
"instances":[{"item_id":"AK74","x":3,"y":0}]}]}Drop it into your project
Two folders into Explorer, a key in the toolbar, and a stash panel in your menu. No C++ toolchain, no engine rebuild.