Troubleshooting
Grouped by what you see. Most entries end with the check that distinguishes it from the symptom next to it — that is usually the part that saves the afternoon.
Ask this first
Which window? In a multiplayer PIE session, whether something fails on the client only or on both halves the search immediately.
- Client only → replication, or a client believing something it should not.
- Both → logic, and you can debug it in standalone where it is far easier.
The UI shows nothing
Panels are empty, but the gameplay debugger looks right
The debugger collects on the server, so it looking right does not prove the client has anything.
Almost always: the view was bound by pointer instead of by role. On a client the containers arrive after the HUD is built, so a view bound to the container that existed at that moment is bound to nothing, permanently.
Set Source Inventory (Inventory, Container Tag) ← use this
Set Source (Container) ← only for a chest you already hold
Confirm it with LogEDInventory at Verbose: a view says what it bound to and whether the container
was there yet.
A grid draws as a single line
The view has no container, so it cannot know its own dimensions. Same cause as above.
A bar shows the right number of empty cells but never fills
Also no container — but only in older builds, where a bar drew FallbackSlotCount cells regardless.
That fallback is design-time only now: at runtime, no container means no cells. If you see a
plausible-looking empty bar, check the binding rather than the contents.
Items behave oddly
Icons and names are blank, everything else works
The Asset Manager does not know where your item definitions live, so a FPrimaryAssetId cannot be
turned back into a definition. See
Installation.
Nothing errors, because nothing is wrong at the container level.
Dropping an item logs "could not resolve" and produces nothing
The same cause. Pickup works because the definition is in hand; dropping has to rebuild it from an id.
Two identical items refuse to stack
They differ in something that must not be merged away:
- per-stack state — different durability, ammo, charges;
- dynamic tags — one is stolen, bound or quest-reserved;
- one of them is promoted to a
UEDItemInstance.
All three are deliberate. Merging would have to invent a value or launder a mark.
Picking things up never fills the inventory
Something is accepting more than you think. The usual culprit is a slot layout with a permissive slot — an off-hand with empty Accepted Tags takes any item, which turns a paperdoll into six slots of overflow storage.
Give the container an Item Query so only equippable items are routed to it. The layout says what fits in a slot; the query says what the container accepts at all.
An item auto-equips when picked up
Equipment is being chosen by placement. Lower its Priority (the demo uses −100) and give it an Item Query. Priority orders; the query excludes.
Containers
Get Container returns nothing on a client
If it works on the server, the container has arrived but is not identifiable yet — the list and the containers replicate separately. Subscribe to On Containers Changed and re-resolve rather than resolving once.
If it fails on both, the tag does not match. Matching is hierarchical, so Inventory.Container finds
Inventory.Container.Hotbar but not the other way round.
A bag does not open when equipped
Check, in order:
- The item has a Nested Container fragment with a container definition set.
- The fragment's Container Filter and Slot Filter match where the item actually is. A filter built wrong reads as "matches nothing" and never complains.
- Nothing else already holds that container tag — one container per identity, per inventory. The log says so when a second is refused.
To verify a filter, empty it temporarily. If the bag opens when carried, the filter is the problem.
Removing a container is refused
It belongs to an item. Move or remove the item and its container follows. Removing it directly would leave the item convinced it still had storage.
Items vanished when a bag was removed
Check the log for "no stranded-item handler took it". That warning means the contents had nowhere to go and were destroyed — a design gap being reported. Either make room, or add a handler that drops them. See Nested containers.
Multiplayer
A client's request on a chest does nothing
If you built the request by hand and sent it through a component on the chest, the engine dropped it: a Server RPC only travels an actor chain the client owns.
Use RequestTransaction on the container, which finds a route the client does own.
Changes appear on the server but never on the client
The container is not replicating. Check that the owning component has SetIsReplicatedByDefault(true)
and that the container was registered as a replicated subobject — both are automatic for the shipped
components.
A chest screen stays open across the map
No session was opened. OpenSession is what makes the server watch the distance and close it.
Editor
A container definition will not save
Validation refuses one with no Container Tag. That is its identity, and a container without one cannot be found by anything at runtime.
An item shows a validation warning about duplicate fragments
At most one fragment of each type per definition. The second would silently never be read.
Getting more out of the log
[Core.Log]
LogEDInventory=Verbose
At Display you get transaction outcomes. At Verbose you also get what each view binds to and what a client receives, which is what separates "the container did not arrive" from "it arrived and the view is not looking at it".
Still stuck
Reproduce in a 2-player PIE session, note which window misbehaves, and capture
Saved/Logs/YourProject.log with LogEDInventory at Verbose. That log usually contains the answer,
and it always contains enough to ask a precise question.