The "Receive Hardware Input" option in 3D Widget Component does not work in multiplayer.

the recieve hardware input makes the widget allow mouse collisions like clicking and hovering.

I find it strange that hardware input would fail. I have similar widgets working in multi-player and I don’t recall hardware input being a point of failure. What specifically makes you believe this is the point of failure?

To the other 100+ people who have viewed this topic: feel free to help, I’m a bit lost here.

well, with others non-widget interactable actors it works using the same player controller nodes but in here not so i believe its an recieve hardware input issue.

When the widgets are created (not added to the viewport, created), is the owner being set correctly?

the widgets dont get created cuz its a 3D WIDGET COMPONENT

Is the actor that contains this 3D widget component owned by the client, or is it unowned?

If the actor is not owned by the client, then the client will have no permission to modify the actor (and by extension the widget) and will need to run a blueprint interface to the server (ex. Player State) and run an RPC there.

where do i see that :sob:

You can optionally set the owner of actors and User Widgets when they are created. If the actor that contains the 3D widget is not assigned the correct owner, the client will have no authority to change anything. If the client should not own the actor, (ex. a unit in an RTS game) an RPC on something the player does own is necessary.

Note: this is a macro that is called by a multicast event that is called once for each player designed to create necessary UI elements for each player. The branch statement determines if the player is the correct one, otherwise, each player would have n UI’s where n is the number of players.

ITS A 3D WIDGET COMPONENT

meaning that you dont have to use a node to create it

1 Like

When do you create the BP_Computer? That is when you assign the owner.

it doesnt get created i just drop it on the level and thats it

Ah. Then it has no owner. The client will be unable to modify it. In order to get the client to modify it, you must run an RPC on the server, possibly through the player state.

hey man, srry for not answering i was kinda busy doing things. Anyways, how can i exactly do this? In which class? Can you guide me with that? Thanks in advance!

Sure thing. You have the BP_computer with the 3d widget already in your level. Since the player does not (and assuming it is not specific to the player, should not) own the computer, any client will need to talk to the server to make anything on the computer happen. Such a sequence of events might looks something like this:

Input event occurs in blueprint
a message is sent to the player controller via a blueprint interface*
an RPC “run on server” is run on the player state
a message is sent to the BP_Computer via a blueprint interface, in the player state, in the RPC
existing code is executed on BP_Computer

*may start here depending on implementation

So i am confused, for me the OnClick event wont work if i use a widget component and multiplayer, On hover works. but that is not what i want.. i want on click.. any solutions?