# UObject replication problem in non player actor

**URL:** <https://forums.unrealengine.com/t/uobject-replication-problem-in-non-player-actor/2692841>\
**Category:** Multiplayer & Networking\
**Tags:** Replication, unreal-engine, CPP, question\
**Created:** [January 17, 2026, 8:40am UTC](https://forums.unrealengine.com/t/uobject-replication-problem-in-non-player-actor/2692841 "2026-01-17T08:40:10Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ngenion](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Ngenion](https://forums.unrealengine.com/u/Ngenion)\
**Post date:** [January 17, 2026, 8:40am UTC](https://forums.unrealengine.com/t/uobject-replication-problem-in-non-player-actor/2692841/1 "2026-01-17T08:40:10Z")

</div>

Hello!

I have an actor for chestbox - ABChestbox. It includes actorComponent UInventory\* inventory. UInventory have TArray (UInventoryItem) items; UInventoryItem = child of UObject  
All replication rules are checked, for this setup.

**ABChestbox:**

- **ABChestbox** has bReplicated = true

- **ABChestbox** → UInventory has UPROPERTY(Replicated)

- **ABChestBox** has GetLifetimeReplicatedProps, with DOREPLIFETIME(ABChestBox, inventory);

- **ABChestBox** has ReplicateSubobjects with

**UInventory:**

- In **UInventory** TArray items has GetLifetimeReplicatedProps + UPROPERTY(Replicated)

- Also **UInventory** has ReplicateSubobject, with replication for each UInventoryItem

**UInventoryItem:**

- **UInventoryItem** has IsSupportedForNetworking() const override { return true; }

- **UInventoryItem** created like this - NewObject (UInventoryItem) (GetOwner(), …) - so outer is good and always = ABChestbox (in this case)

- **UInventoryItem** has GetLifetimeReplicatedProps with internal data + UPROPERTY(Replicated) for this data

I think i dont forgot something. So in this case if i try to get ABChestBox→UInventory →items. I see items not empty, but all slots are nullptr.

What im missing?

---

<div class="post-metadata">

**Author:** ![Auran131](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Auran131](https://forums.unrealengine.com/u/Auran131)\
**Post date:** [January 18, 2026, 6:04am UTC](https://forums.unrealengine.com/t/uobject-replication-problem-in-non-player-actor/2692841/2 "2026-01-18T06:04:39Z")

</div>

did you GetOwner()→`AddReplicatedSubObject();`

---

<div class="post-metadata">

**Author:** ![Ngenion](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Ngenion](https://forums.unrealengine.com/u/Ngenion)\
**Post date:** [January 18, 2026, 12:45pm UTC](https://forums.unrealengine.com/t/uobject-replication-problem-in-non-player-actor/2692841/3 "2026-01-18T12:45:37Z")

</div>

No, i dont use this technology (Iris Replication System)

---

<div class="post-metadata">

**Author:** ![King\_Zero](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@King\_Zero](https://forums.unrealengine.com/u/King_Zero)\
**Post date:** [January 29, 2026, 6:41am UTC](https://forums.unrealengine.com/t/uobject-replication-problem-in-non-player-actor/2692841/4 "2026-01-29T06:41:42Z")

</div>

> **ABChestBox** has ReplicateSubobjects with inventory

It shouldn’t need to be implemented, because Inventory is an actor component and AActor already implements that for components.

* * *

UInventoryItem should also override GetWorld function to get proper world from it’s parent:

```auto

if (const UObject* MyOuter = GetOuter())
{
  return MyOuter->GetWorld();
}

```

* * *

Make sure InventoryItem is created by the server

I might be missing something, but in the past I’ve referenced this site to do similar thing and it worked fine, see and check if you have everything needed - it has things like GetFunctionCallspace and CallRemoteFunction, but these are for calling RPCs on your object and replication itself should work fine without them I guess, but you can try and implement everything.

> **[Replicating UObjects: Building a Flexible Inventory System – James Baxter](https://jambax.co.uk/replicating-uobjects/)**

---

<div class="post-metadata">

**Author:** ![ShadowBr0kerz](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/shadowbr0kerz/32/1201558_2.png) [@ShadowBr0kerz](https://forums.unrealengine.com/u/ShadowBr0kerz)\
**Post date:** [October 20, 2026, 3:08pm UTC](https://forums.unrealengine.com/t/uobject-replication-problem-in-non-player-actor/2692841/5 "2026-10-20T15:08:22Z")

</div>

the array replicates, the pointers inside it do not. on the client there is no UInventoryItem instance to point at, so every slot resolves to null, which is exactly what you see.

King\_Zero is right that the component does not need its own ReplicateSubobjects override and the GetWorld override on the item matters. what is missing is registration, each item has to go into the replicated subobject list of the actor that owns it, and it has to be created on the server only with a stable outer. a replicated TArray of UObject pointers carries the references, it doesnt create the objects.

if you want to stay in blueprint that registration is exactly the piece you cannot write yourself. blueprint object replication from fab is a UObject replication plugin that hosts the objects on a component, server creates them, clients get them with their rep notifies, ue5.0 to 5.8.

btw i used blueprint object replication from fab [https://www.fab.com/listings/e26dcf07-7c78-4e67-8e56-272cf6df8021](https://www.fab.com/listings/e26dcf07-7c78-4e67-8e56-272cf6df8021) it worked for me
