Add a User Interface to the Game - SinglePlayer works fine but Server/Client not

Hey there,

curently I’ve a Problem with “Add to Viewport” on a Ark-Server.

At first: everthing works in the DevKit and in SinglePlayer Mode but not in Server/Client Mode.

I want to show a User-Widget (Parent PrimalUI).
The Widet has a Picture and a close Button to this Point, nothing special.

I copied the TestPawn_Male and _Female.
Edited the PrimalGameDataBP_Mod so the new Pawns are in the Game.
In each Pawn I added a simple Create Widget and Add to Viewport-Node.
In the DevKit i can open the Widget and close ist, nice!
In SinglePlayer i can also, nice!
On a dedicated Server, nothing happens, sad!

So I decided to get the Code in an Actor and Cast to the original Pawns, PlayerController over the radial ring input.
In the End, the same problem, Editor works, SinglePlayer works, nothing happens on a Server.

So I copied a Buff, edited everything, set the Buff to the Player etc.
And … surprise surprise, same here.
On a dedicated Server, the Buff Sound appears, Buff is activ (little Icon) but the Widget doesn’t appear.
I added Server-Notifications to determ on which Point the Code on an server stopps, but according to the Notifications, everything is good, and the code gets called.
But the Widget doesn’t appear.

To this Point, am working sooo long on this Problem that i can’t tell even more what i tried at all. Replications, ForceNetUpdate, studied the unreal-wiki/documentation and so on, but in the End it took more than 40h to get me to this Point, to ask if anybody know how to do this.

Is there any tutorial out there to get custom UserWidgets to work?
How do you add a custom Widget to an Actor?
There are sooo many Mods with custom Widgets, but I can’t get it to work.
I’am so disapointed …

I can Post a lot of Screenshots if they are necessary.
But eventualy someone knows a topic or a tutorail?

Add a “Switch has Net Authority” after your begin play (or delay if using one) and only connect “Player Server” & “Client” to the next node like so:

This is on a buff but it should be same principle for launching it from pawn/dino/weapon

Hey P0k3r,

thank you very much.
I added the SwitchNetAuthority.
I think I see now that the BuffBP is only called on the server and not on the client, right ?
Maybe i damaged a configuration in the BuffBP, because the Buff doesnt apply to the PlayerCharacter anymore. I will create a new one tomorrow.
But to this point it didn’t work, any idea?

Thanks =)

Try replicating the PCRef variable or better yet, just delete it and move the get owner controller in between the switch has net auth and create widget node. Unless you need it for something other than printing out the messages. Otherwise, replicating it should solve the issue
Also, Game Mode only exists on server so your “Add to viewport called” message will never work on a live server. Does in the devkit but you’ll come to find out that the devkit lies all the time.

Solved!

YEEEHAW! Nice!
P0k3r, you are my hero!

such simple workflow, but now i understand the issue!
All the time I called the UI on the Server not on the client and my PlayerControllerRef was not replicated to the client so the client didn’t know the target for the widget.

Thank you!!!

EDIT: And you’re right, troubleshooting in the DevKit is not reliable at all …

Hey Stinga i hardly try to get a add buff via radial menu like u do. But i dont know how to cast it to the using player.
Can u maybe show me the part of the graph in the structure? U can also send me this in discord if u like. Im in the arkmodding group.

I would be very grateful if u can help me out

Hey Dize,

sorry for the time that passes.
The short version:

  1. you need a “actor” that will activate the cast (in my case)
  2. you have to check “Blueprint Multiuse Entries” in your actor “defaults” to force the game to get the entries with additional entries
  3. then go to the graph of your actor and implement form “Default Blueprint Callable” the “BPGetMultiuseEntries”
  4. Create a new multisuse variable-array and set the entries in the new multisuse variable-array
  5. Get the variable-array and add your entry to the variable-array with “Make MultiUseEntry”-Node
  6. get the variable-array and set it to the return node
  7. now your new radial-menu-entry should be visible on your actor-menu
  8. then implement form “Default Blueprint Callable” the “BPTryMultiuse”
  9. add a “SwitchOnInt” with your entry-number you set, by default go to rerout, by your Number:
  10. get the controlled player with a “GetControlledPawn”-Node and Cast to Male and to Female Player Pawn from yor EntrieNumber and followed by adding your Buff with a “StaticAddBuff”-Node

Thats the short version.
I’am currently working on it because it doesn’t work at all, like i want it to.
The Game casts a new UI everytime and so an… not so easy stuff i think.

let me know if you have questions.