#multiplayer

1 messages · Page 150 of 1

twin juniper
#

Do i have to worry about packet loss at the begin of development? I turned on 5% and it kinda bugged everything out randomly

#

Or it's like something you can keep off your mind and fix later

urban moth
#

I thought that mover 2.0 will be there from ue 5.4. So you're saying that it is possible to use it now? Like experimental or something. Thanks for answer. We're currently still using ue 4.27 but mover 2.0 could be game changer

echo bough
#

🙏

urban moth
#

So ue5.4 already is on GitHub or mover 2.0 plugin?

pallid mesa
#

yes

urban moth
#

Oh yeah 👍

crisp shard
#

So I’ve been implementing client side prediction into all aspects of my code and I keep running to the question of,

In decently latent environments the client and the server are never synchronized on certain overlap events. The server overlap or trace will always be slightly behind the client (whatever the lag is).

How do you solve for something like this? I’ve been considering using the clients overlap and then using like a combination of that trace and the server trace like a medium if one disagrees w the other or something.

But I’m curious how others solve for this, I’ve been solely trying to test with higher lag/ping/latency so that game feels as smooth as possible but I also don’t want the player experience to be terrible because of how client side it will always been slightly different from the server

solar stirrup
#

laughs in gmc

#

i might have to check out the Mover

#

how good is it?

pallid mesa
#

feature wise, good

#

they even have a vanilla spline movement mode

#

movement mode are subobject based, pretty neat

crisp shard
#

Would mover help with flying movement /custom movement like that?

#

In multiplayer **

pallid mesa
#

yes

crisp shard
#

don't want it

#

need it

#

would also not hate someone giving me even a shred of advice or thoughts to go about thinkiong about my client side prediction and server events being "off" when ping/lag is super high

karmic briar
#

i have a blast trying mover since yesterday..currently redesigning and redoing my locomotion system im doing right now with CMC with Mover.. althought its in experimental right now, i like how the way mover works and this is one of the reasons why..

#

i saw in mover there chaosNPP, is that thing still being work on after dave ratti left? havent been keeping up to it

#

i hope one day GAS can use NPP a well and we can finally have a unify prediction system🙏

crisp shard
#

is it a bad idea to start to mess with these numbers to acheive smoother gameplay?

thin stratus
crisp shard
thin stratus
#

In most cases the default values are fine

#

You should simply try to change them to some extremer values with higher ping

#

And see for yourself

crisp shard
#

adjusting them all right now just to see haha. well, most. basically want to push it so that things are "smoother" and see what happens

#

would i make values smaller if that is what im aiming to do ?

thin stratus
#

That depends on the value

#

Read the name and the description :D

crisp shard
#

lol a lot to take in , im still learning networking (the hard way)

thin stratus
#

E.g. the Smooth Update Distance is for how far the max distance can be before it starts to be not smooth or even directly teleported

#

When there is a correction I assume

#

Bottom stuff is for smoothing

#

Simulated Proxies are other Clients that see your Character

#

Listen Server is cause the ListenServer doesn't tick the Client Character by default but moves based on the RPC coming in

#

No clue what the Shrink Radius is

#

Rest I would need to double check again

crisp shard
#

awesome thanks, yea i just changed a few things, hard to fully tell but i'll have to mess w one a time to really know. im using 100 - 200ms on incoming and outgoing, plus 1p packet loss, and it's set to "everyone". i assume this is quite bad connection quality, but pretty much trying to find all the holes

#

changing these two specifically have given me some good results

rotund onyx
#

Do Set variables replicate?

#

I know Map variables cannot

solar stirrup
#

Probably cant either

#

Worth a try

rotund onyx
#

Such a painful limitation : (

solar stirrup
#

In C++ you can override struct net serialization and implement it yourself

glacial bluff
#

Does Load Stream Level not replicate? I've read everywhere that it does, but it's really not working for me. I've even tried sending the request first to the server and then multicast it, but no matter what I do, it doesn't work. How are you supposed to load a level on all instances?

#

The level is already a sublevel. It's just a regular Load Stream Level.

thin stratus
thin stratus
#

Been a while, but it should be possible to load the Level on the Server and have it replicate to Clients

#

No need for a Multicast

glacial bluff
#

I tried doing this, no replication involved by the function. If I call the function from the server, everything works properly as expected (loaded on all instances). If I call it from one client, only that client gets the level loaded.

#

If I set the function to Execute On Server, one would assume it would work, since in the previous case, calling from the server works. However, if the client calls for this function, nothing happens either in the Server nor Client, but if the Server calls it, it work properly as in the previous case.

#

To sum it up...

No Replication on function
Server: Works correctly.
Client: Loads only on the client that called it.

Execute on Server on function
Server: Works correctly.
Client: Nothing happens anywhere.

#

Not sure how you're supposed to make this work

modest ferry
#

Guys how do you make multiplayer without LAN?

glacial bluff
modest ferry
glacial bluff
#

Wherever you want

#

Any good hosting service

#

and there you have to have the game servers running continously

#

I have no idea why you would want so much work, though.

#

and paying a lot of money to keep your servers running

#

Unless you are making a lot of money already, I don't recommend it

solar stirrup
#

You can do P2P

thin stratus
#

Where is that RPC in?

#

Client loading a level won't replicate

#

The rules of replication still apply here

glacial bluff
# thin stratus Where is that RPC in?

The RPC is inside an actor that's in the persistent level. I don't see how replication isn't working as I expect it.

If the server can execute a function with No Replication set and it works on all clients, why would a client not be able to send a request as Execute on Server and not work the same?

thin stratus
#

Clients can't call ServerRPCs on random Actors they don't own

#

Whatever Actor you have in that PersistentLevel can only process ServerRPCs if the calling Client owns it

#

The RPC has to go through a different Actor, like your Character or PlayerController

thin stratus
#

For DedicatedServers those would also be needed, unless you have a backend of sorts that provides the IP. If players should host their own DedicatedServers then that's easier, but that all depends on your game

modest ferry
thin stratus
#

If you want to develop an FPS that is competitive and has to run on DedicatedServers, which you need to host, then you need to either develop such a backend or pay for it.
It's not only the Servers, but also the dynamic spinning up and shutting down of instances and what not.

#

PlayFab would be such a Server

#

I can't recommend making a game like this though if you don't already have a bunch of thousands to pay for this

vestal shale
#

When does a variable actually gets replicated when the value changes on server. At what time exactly ? Just when value changed or the function inside which the value changed complete's it's call ?

solar stirrup
#

Replication is done at the end of your game loop, after all your code runs

vestal shale
#

So there might be some system which checks for value change, if changed then replicate. Right ?

#

I had s bool which was changed twice in a function. And it's Repnotify was not called at all

solar stirrup
#

Rep notify is only executed on clients when a value is replicated to them, if it's C++

#

And also: yeah the server doesnt replicate every single change

#

Anything between replication intervals just wont be received by the client

#

You get the "latest" value on replication

thin stratus
#

If you need that to replicate every change, then you gotta turn that bool into a struct that also contains an integer and increment that on each change

#

But I guess even then it wouldn't call for every change

#

But at least back and forth would trigger

#

In C++ you can force it to call every change

#

But I assume this is BPs

solar stirrup
#

For every change you'd need RPCs or your own serialization of history heh

thin stratus
#

Well, or just set it to repnotify on every change in C++

solar stirrup
#

You'd still need to receive every change which wont happen on an interval

thin stratus
#

Actually, this is misleading.

  • Every Change is probably not gonna happen
  • Same Value can be fixed though via either C++ or e.g. an Int in a Struct that you increment
#

I think that's more accurate

solar stirrup
#

Yeah

#

For more complex scenarios you'd need to replicate a history of X changes

#

And pray X amount is enough to not miss anything

#

Bandwidth hungry but generally fine

gleaming kite
#

Just implemented this and had a chance to test it. No dice. Ive confirmed the VOIP talker is not being deconstructed. This ensure also fails right before the crash. Im out of ideas at this point 🤷‍♂️

Ive looked at the source code and it seems like it makes a synth audio component for every new buffer of VOIP data. The synth audio component is managed by a remote talker struct. Maybe that is getting cleared during travel even if the VOIP component is alive? I suppose Ill have to dive through source a little more.

LogOutputDevice: Error: Ensure condition failed: !ActorComponent->IsRegistered() || ActorComponent->GetScene() != this [File:T:\UnrealEngine\Engine\Source\Runtime\Renderer\Private\RendererScene.cpp] [Line: 4521] Component Name: AudioComponent /Engine/Transient.VoipListenerSynthComponent_2147479314:AudioComponent_2147479313 World Name: World None.None Component Asset: /Engine/Transient.SynthSound_2147479312

#

My hunch is that epic marked the issue as "Wont Fix" because VOIP talker is considered legacy. Id imagine they want to put their resources towards eos VOIP

vestal shale
#

Then what would be the perfect way to play weapon cosmetics effect on a client

vestal shale
vestal shale
#

What I currently doing is an setting a bool bIsShooting which is Replicated.
And when bIsShooting is true I am playing Cosmetics effects from the Repnotify of C++

solar stirrup
#

That's a pretty simple approach

#

Might not work for tap firing though

#

You'd prefer to have a shot counter

nova wasp
#

DOREPLIFETIME_CONDITION_NOTIFY(ThisClass, MovementSpeed, COND_None, REPNOTIFY_Always); etc

solar stirrup
#

doesn't guarantee the client will receive every value still

rotund onyx
nova wasp
vestal shale
solar stirrup
#

shot counter should do the trick tbh in this case

#

Unreal Tournament does that

nova wasp
#

or a buffer of what happened etc

#

timestamped/ID'd per something

vestal shale
solar stirrup
#

doesn't let you determine how many shots the player actually shot

#

a shooting bool would make others look like they're shooting more/less than they did

nova wasp
#

the reality is it might not really matter to have the remote seem like it shot 20 vs 22 shots

#

what matters are the ones that did stuff

vestal shale
#

Blueprint Repnotify doesn't seem to drop in my case

#

What Replication condition is used by Blueprint?

solar stirrup
#

If you're testing in PIE you're literally in the best conditions ever

#

You'd need to test in Client net mode + with network emulation on average/bad settings

vestal shale
#

@solar stirrup You did not answer my above question. Please ...

solar stirrup
#

idk

#

blueprint rep notify is special since it's called on server too

#

REPNOTIFY_OnChanged

#

Blueprint rep notify is on change only

vestal shale
#

I know, but BP replicated variables should have been using some replication condition. I wanted to know that

solar stirrup
#
void UBlueprintGeneratedClass::GetLifetimeBlueprintReplicationList(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
    uint32 PropertiesLeft = NumReplicatedProperties;

    for (TFieldIterator<FProperty> It(this, EFieldIteratorFlags::ExcludeSuper); It && PropertiesLeft > 0; ++It)
    {
        FProperty * Prop = *It;
        if (Prop != NULL && Prop->GetPropertyFlags() & CPF_Net)
        {
            PropertiesLeft--;
            
            OutLifetimeProps.AddUnique(FLifetimeProperty(Prop->RepIndex, Prop->GetBlueprintReplicationCondition(), REPNOTIFY_OnChanged, PUSH_MAKE_BP_PROPERTIES_PUSH_MODEL()));
        }
    }
#

REPNOTIFY_OnChanged

thin stratus
vestal shale
#

Ok. Tried with the Ammo Counter part. It works flawlessly

#

Still don't know why Boolean was not working

twin juniper
#

any idea how to solve this, interact dot showing for both players when only one is looking at an interactable object

thin stratus
vestal shale
#

My initial idea was to start playing effects with timer locally, so other clients didn't have to depend on replication on every shots

thin stratus
#

The Burst Counter stuff is def the best solution

#

You can still predict it locally fwiw

vestal shale
#

It was dropped.

twin juniper
dusty void
#

Just wondering, would it be bad if replication was working for clients but when I try a listen server, the listen server doesn't get anything replicated, I don't plan on using listen servers but just wanted to make sure

twin juniper
#

not sure if thats easy to see i can send in two parts

vestal shale
thin stratus
#

For shooting that's not an easy answer

#

You would predict the whole shot locally and skip the local client in the on rep of the burst

thin stratus
#

Such as OnRep calls

thin stratus
dusty void
#

Ohhh okay

twin juniper
dusty void
#

Would it be better to make sure the listen server gets it or just leave it be even with no intended use of a listen server?

twin juniper
#

event beginplay

thin stratus
#

Your timer runs on every instance of every character

#

The sim proxy of the other player basically traces and adds the widget

twin juniper
#

ah ok

vestal shale
thin stratus
#

You can start this on OnControllerChangedEvent and limit it to IsLocallyControlled

#

@twin juniper

thin stratus
#

Or set a replication condition to sim proxy I guess?

thin stratus
vestal shale
drifting quail
#

I have a random dumb question. How would I get something to only run on the owning client? Do I just run it through the client rpc? Rn I'm trying to do a linetrace on client input but it's also running it on the server. Or am I doing this backwards and should run it only on server?

vestal shale
#

And Client RPC can only be fired from the server

thin stratus
#

Input is already local

#

No need for an RPC if you want it to stay local

vestal shale
#

Perform your linetrace in a function which runs on server. It may be default functions like Tick() or you need to use Server RPC

thin stratus
#

Well it's supposed to be local based on their message

drifting quail
#

Okay so from input do server rpc then linetrace?

#

Nah idk what I'm doing. Asking for advice lol

thin stratus
thin stratus
vestal shale
vestal shale
dark edge
#

you don't want EVERY character to be doing that on all machines, only the LOCALLY CONTROLLED one

solar stirrup
#

You'd get shooting updates @ the position/rotation the player was at

#

sync'd with movement updates

vestal shale
#

Is there any way to check sound replication. FX replication is visible. But how to check if Sound replicated or not

#

Nvm, got it

livid jetty
#

why i cannot create session in standalone ?
LogOnlineSession: Warning: STEAM: Failed to initialize game server with Steam!
i am using SteamDevAppId=480

#

i have installed advanced sessions, but not using any of new nodes yet

storm star
#

a question/discussion about anti-cheat implementation for competitive FPS games.

wallhack/radar cheats can be mitigated by minimizing the amount of enemy positional data sent to clients.
the dream is that a client only receives positional data for enemies that they could see within the next T seconds (T grows with inter-tick latency and jitter). this way, hacks wouldn't be able to detect enemies too far in advance.
well, that's the vision at least. it seems like FPS games tend to not implement this seemingly promising feature.
my question is why?


i have some ideas as to what the shortcomings of this feature might be, but also some potential solutions.

it seems like the server would need to:

  1. compute a set of potentially reachable locations for player A, and another one for player B
  2. compute corresponding sets of potentially visible locations
  3. perform a set intersection on those potentially visible sets to determine whether or not A could see B soon
  4. repeat for all pairs of players in the server

analysis:
1&2: firstly, there are infinitely many locations. surely, we must first discretize things - voxels?
1: computing reachability would be a complicated factor for games where movement is unpredictable, e.g. those with teleporting or high-velocity movement tech. if the set of potentially reachable locations is the whole map, this entire process is already pointless. ideally, the set of reachable locations for a player is small and easily computable, say, a simple radius around the player.
2: determining whether or not a voxel is visible from another can be tricky, however we can settle for an approximation and err on the side of false positives. line/object trace or render target.
3&4: big perf constraints. we'd need to do this NUM_PLAYERS^2 times per tick. but surely we could precompute the reachability and visibility sets? (with extra care for moveable or destructible objects with respect to visibility.)

thoughts fellas?

dark edge
#

The risk vs reward for the cost is pretty bad.

vestal shale
#

For automatic fire weapons. What would be best. Reliable or Unrealiable RPC ?

storm star
storm star
#

funnily enough i was thinking of this just after watching a valorant cheat analysis video. i'll have to look closer, idk if valorant did this

#

i'm more confident in saying that cs doesn't. not sure about cs 2

solar stirrup
#

Better to make your own PVS system and precompute

#

Like the Source engine

#

can easily be fed into the replication graph or probably Iris in the future

storm star
#

yes that seems correct

solar stirrup
#

Valorant also does dead reckoning for that

storm star
#

do you mean visibility altaro? i agree that a trace could be used for that, but reachability would require more work. maybe something like 'consider all voxels/points in some radius, scaled by current velocity / hero movement kit etc.'

solar stirrup
#

As in, whatever "cell"/PVS the player is heading towards soon/next is considered as having the player

#

That way you don't have enemies popping in view

storm star
#

gotcha

#

so valorant does have this?

#

sorry yeah same, that was directed at erlite

solar stirrup
storm star
#

sick @ pvs

solar stirrup
#

They have some nice devlogs

#

I'd search it up online

storm star
#

oh ok cool. saw one of the netcode ones, didn't realise they had more, cheers

solar stirrup
#

There ya go

#

Good read

#

Unreliable is gonna cause issues of its own

storm star
solar stirrup
#

As in players are gonna curse you heh, and also order isn't guaranteed

#

Although I kinda planned to use unreliable but with my own reliability layer on top for shooting, I opted instead for routing shooting and hitreg through the client's movement data

#

Still working on that solution, hope it works as good as it sounds

eternal canyon
#

its not perfect tho

short arrow
#

Really think it depends, in a game where the traffic is high if reliable events are what's causing your game to tank then there are likely structural problems elsewhere

#

I think just like casting, people are overly afraid to make things reliable

#

The reality is making some events reliable will have almost no impact on performance so long as it's not used incorrectly, but the same goes for anything in the engine

short arrow
#

Yeah I've studied that video. What I was getting at is that "sparingly" and "low frequency" isn't very clear imo. You should limit how many Reliable RPCs are called over a period of time. Though really it seems many people can't agree on what should and shouldn't be reliable lol

crisp shard
#

There’s a section where he mentions that a replicated property can most of the time replace a client RPC (server to client). Would this mean by setting a property (variable) and replicating that property like a repnotify event or something? Only to autonomous proxy?

#

Going to watch this one as well

queen escarp
#

hey i need some tips

#

this is when an NPC dies

#

how im trying to give exp

#

but its only working for the host*

sinful tree
#

Oh... Gained event...

#

Your event in the second screenshot doesn't look like an RPC?

queen escarp
#

its not, since im getting all acotors of class (i konw this is bad but there will max be 4x players ingame) it should run that event on each locally was my idea ?

sinful tree
#

You're calling the RPC in the first.. What does that end up calling?

queen escarp
#

you mean the get all acotrs of class ?

#

its run on server only*

crisp shard
#

would this also be a similar case for say health? like for getting an enemies health?

sinful tree
# queen escarp you mean the get all acotrs of class ?

Your death event runs on the server, then it calls the "Gain Exp Event" RPC which should technically run on each client that is an owner of a "Player Character". This RPC isn't the same as the event in the second picture, so what does that RPC do?

queen escarp
#

It is :/?

#

Thats the event being called from pic 1

thin stratus
#

And why is that running a ClientRPC?

#

Exp is a state, the Server should be the one adjusting those values

queen escarp
#

Yes

#

Well yeah

#

Hmm

crisp shard
#

oh wait that is a client rpc nvm

sinful tree
sinful tree
crisp shard
#

im trying to get an enemy to get forced back when hit, but the movement in high latent envoirnment the movement really gets busted. i thought this node might help and im trying to call this both on the client immeditaly if client says hit and then on server after, which is what is really causing problems, cause, client one will fire, push the enemy, but the server will correct it and then the server will push it back again, and correct it again? its like it doesn't want me to move it at all, always trying to correct the movement. i suppose my enemy movement logic might also be causing issues, as it's directing it towards the enemy, and if that hit happens, it probably messes up that logic cause i dont tell it when it's being "launched, even if quick.

#

but i am still curious if there's something i can do to help mediate quick movement like this when the server is trying to correct every movement

#

this seems to be of some interest

thin stratus
#

If that's for UI, you can always cache the last value in the Widget

thin stratus
#

You'll have to live with the ping in theory

#

You can utilize RootMotionSources, but those are GameplayAbility only unless you expose them to normal async tasks via C++

#

Won't remove the initial correction, but might look smoother overall

sinful tree
# thin stratus If that's for UI, you can always cache the last value in the Widget

That is a solution, but what if you just had something that pops up an exp gained message and you wanted multiple values to be shown being given, but all happen to be added at the same time? Eg. A bunch of enemies all die at the same time (like AoE damage), and you want the player to see a +exp for each enemy. If you were to just add the exp all at the same time to a single exp replicated variable, i would think there would be only 1 rep notify of the variable, so only 1 message could end up being displayed.

#

So rather than say one big +3000 Exp for killing 3 enemies worth 1000 Exp, you wanted it to show +1000 Exp 3 times.

#

But, it's not my system anyway, I'm just thinking that there could be a use for an RPC there.

crisp shard
#

but yea it still doesn't seem to work, and again, im on high latency

#

i mean it works, but just corrects a lot. i wonder if a stun/slow movement would be better? or would it essentially give the same results

glacial bluff
#

Thanks for the information, @thin stratus. I knew I had to be missing some vital information when it comes to replication.

sterile prism
#

Question on replicating flipbooks. Dice plays flipbook on the server side, but not on the client side.

#

The dice is just an actor that has a flipbook component. Replication is on.

crisp shard
#

i use flipbooks for my characters (it's a 2d sprite) so i might be able to help

sterile prism
thin stratus
sterile prism
#

Simple flipbook component with dice sprites

thin stratus
#

Or are you starting that from some event

sterile prism
#

yes auto-played

modern cipher
#

How do you sort a fast array?

I'm getting this error trying to sort my array:
Assertion failed: FixedShadowIndex > Index [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\RepLayout.cpp] [Line: 7714]

Algo::Sort(MyFastArray.Items, [this](FMyItemStruct& First, FMyItemStruct& Second)
{
    if (First.Count < Second.Count)
    {
        MyFastArray.MarkItemDirty(First);
        MyFastArray.MarkItemDirty(Second);
        
        return true;
    }

    return false;
});
vital barn
#

I have a real weird problem
I have a BP_Flag which is an actor that sends a destroy RPC to the FirstPersonCharacter Actor whenever I overlap with it
It works perfectly with BP_flags that are placed through the editor, but any BP_flag actors that are spawned through the FirstPersonCharacter actor (After AnyDamage) are not properly destroyed and still show up for the client.

What could be the cause for this?

vital barn
#

I though maybe it could have something with the overlap so I tried to remove as much as possible from the script and it still has the same issue.
I also made it so I spawn without any checks using a key

This is all the script that gets executed

#

Oh. Now I can see that when it tries to destroy on server it actually gets a (Is Not Valid) Which you can see on the second picture.

lethal blade
#

Hello @lost tinsel I am noobie. Should I enable seamless travel in server GM (Server Map) or client GM (lobby/Menu) map ?

modern heron
#

Anybody know why either of these functions keep failing to call Cycle turn?

thin stratus
thin stratus
modern heron
thin stratus
#

You aren't supposed to constantly go back and forth with RPCs

modern heron
#

any other way i tried to set visibility based on turn didn't work though. I tried tying into the button and its get a Node not found. I also tried to tie to the TurnChange Event and didnt work. What better way would work?

queen escarp
#

@sinful tree sorry for late ansswer well its not marked as Rpc i think getting all actors of class is like a rpc is it not :/?

mystic estuary
#

Hello, did anyone face an issue with anim notifies in dedicated server environment? I have an animation montage with a few anim notifies in it, which work perfectly client-side. Dedicated server-side, however, it doesn't: sometimes it doesn't trigger any anim notify, sometimes it triggers one of them (it might not be the first one on the timeline, but last), sometimes it triggers all of them.

Edit: Weirdly, setting SkeletalMeshComponent's VisibilityBasedAnimTickOption to OnlyTickMontagesWhenNotRendered makes it work perfectly. The weird thing is that it works client-side as well, even though it is rendered. 🤔
Edit 2: It doesn't update bones, leaving the player it default skeleton pose even during animations, so it doesn't work 😔
Edit 3: Making anim notifies use MontageTickType BranchingPoint works perfectly

vestal shale
#

How do I make a DebugLine drawn on server to not shown for the client who drew it

#

But others can see it

mystic estuary
vestal shale
#

I am drawing a debug line on server via rpc

#

As I who is drawing that, I dont want to see the debug line

#

I only want other clients to see it

modern heron
#

Why would my game mode not be valid??

chrome bay
#

Variable is obviously set to null

#

GetGameMode and casting it is almost certainly preferred here.

modern heron
chrome bay
#

I recommend not saving it as a variable to be honest. It's pretty straightforward to get to

#

caching stuff that way is a good catalyst for bugs

modern heron
#

ok gotcha WIll see if itll work without doing that

cursive steeple
#

Hey guys, are there any existing/built in ways of knowing (on a client) when an actor was last replicated/updated? Or do I have to run my own replicated variable (that stores the current game time) and keep updating/incrementing it from the server?

chrome bay
#

Only if the actor channel is currently open

#

UNetDriver.FindNetworkObjectInfo()->LastNetUpdateTimestamp

Otherwise no, you need to store your own value

#

LastNetUpdateTimestamp also isn't related to world time

#

PostNetReceive() would be a good place to store a timestamp, though not sure why you'd want it exactly

mystic estuary
chrome bay
#

Might not need AlwaysTickPose for montages, can't recall

mystic estuary
#

It was AlwaysTickPose, but it didn't work out.

and you probably want branching notifies if you want them to be reliable.
I have heard about "branching notifies", but what does it mean?

#

oh, is it it?

cursive steeple
# chrome bay PostNetReceive() would be a good place to store a timestamp, though not sure why...

I find that if actors go dormant while still inside of a client's relevancy range, they stay alive client-side even if the client goes way outside of the relevancy range. I need a way to destroy these left-behind actors, as I cannot guarantee that the actor will be awake until all clients have the actor automatically destroyed (by relevancy). Currently I keep a replicated timestamp, and the clients check if it has not received updates for a long time, so they can destroy the actor. But I'm looking for a cleaner way that still allows me to make the actor dormant on the server whenever I want (without it staying alive on clients regardless of distance afterwards). Hope it makes sense? :x

chrome bay
cursive steeple
# chrome bay That's the point of dormancy, to close the actor channel and no longer send any ...

They are spawned runtime (think NPCs). A server-side system makes range checks and makes actors dormant if far away enough from player chars to save on performance. If the server makes an actor dormant before relevancy destroys it on client, with a large open world, those npcs would be lingering around on clients tanking performance (on clients). Am I doing something wrong with dormancy or what's the right way?

chrome bay
# mystic estuary oh, is it it?

Yeah that - branching point should IIRC be more reliable since they execute inline rather than being queued up to be despatched after anim evaluation.

mystic estuary
chrome bay
#

Dormancy closes the channel, loses all the shadow variable state etc. It's really a perf thing to avoid the server having to prioritise the actor for replication, but the idea is that actors are preserved.

cursive steeple
#

I guess the tldr is that I need to 'turn off' NPCs on the server without actually destroying them on the server. And I want those 'turned off' NPCs to disappear from all clients instead of being left behind.

chrome bay
#

SetReplicates would just stop them replicating, so clients would stop getting updates, including the one to tell them to stop replicating

#

And they would still remain on clients also. Making them dormant when they are out of player relevancy range isn't strictly what dormancy is meant for, it's meant for "this object isn't going to change at all for a while now"

bronze glade
#

Hey everyone! I have a multiplayer game where I am trying to get each players playercontroller through the gamemode. I have an array of player controller object references, and then I cast to the controller for the mode and try to send that into a new function. In the new function I get the error "Accessed None Trying To Read Property PlayerController". This only happens for the client, but for the host it gets the player controller properly. Do I need to do something specific with the client to get a cast to their controller on the gamemode?

chrome bay
#

You might have to hook into the net driver and listen out for actor channels being closed, maybe then you could destroy the actors client-side - but I wouldn't be surprised if that causes new issues with resolving object GUIDs

bronze glade
fossil spoke
#

You will get Acess None if you try and read the GameMode on a Client.

bronze glade
#

I am trying to read the client on a gamemode

fossil spoke
#

You will get Acess None trying to read other Players PlayerControllers on a Client

fossil spoke
#

Do you mean you are trying to iterate PlayerControllers (which represent Clients) on the Server?

bronze glade
#

Sorry I am bad with terminology lol

#

Yes that is my goal

cursive steeple
bronze glade
#

I want to cast to the player controller from the gamemode and do something with it (still on the gamemode)

#

But the cast fails if the player controller belongs to the client

fossil spoke
cursive steeple
fossil spoke
#

How are you building that list?

bronze glade
fossil spoke
bronze glade
chrome bay
#

Should be able to use GetOwner()

fossil spoke
bronze glade
#

Get game state, get players array, loop, get player controller for each player state, add to array

chrome bay
#

Clients only have their owning controller remember

#

You can't access other clients' player controllers on clients

fossil spoke
bronze glade
#

I am doing other things to the player controller before using possess. I was just mentioning that, sorry for the confusion

fossil spoke
#

@chrome bay He knows that now, he is in the GameMode so no issue of that.

fossil spoke
bronze glade
#

I should be, it's the default playercontroller class for this gamemode

#

I don't have anything overriding that

fossil spoke
bronze glade
#

I also tried using a blueprint interface instead of a cast. Also failed

#

I will try that. I have used the print and it does print twice implying there are two player controllers in the array

fossil spoke
#

Yes but they might not be the right type.

#

Just knowing there are 2 is not enough info.

bronze glade
#

I will check and be back in a minute. Thanks for the advice 🙂

#

Huh, yeah one of them is still the player controller from the menu before they joined the session. It's a different level though, I thought it would change to the new one when the level loads?

#

I am using servertravel to go from the menu level to the game level. The host gets a new playercontroller type but the client does not I guess

bronze glade
vital barn
#

Anyone know how to spawn an item from a character? I have an enemy that on death I want to drop an item.

When the player drops it it works correctly (I do an RPC) since I have the player controller I can spawn the item on so it gets replicated to everyone correctly
However, on the character I don't have a player controller I can do this on

paper star
#

Hi, do you know how to make rpc functions work with c++ interfaces? mine ended up getting executed in server even though it was defined as UFUNCTION(Client) can called via Execute_Name. Thanks

fossil spoke
#

Players can only have their PLayerController changed when the GameMode changes.

bronze glade
#

I don't understand why the client is not changing then. The lobby playercontroller is set in the lobby, and then when servertravel is used it goes to a new world with a different gamemode and default playercontroller. But the client keeps the lobby playercontroller

paper star
polar patio
#

Has anyone ever seen an issue where after you load into the game a high ping client doesn't get issued a new controller (between lobby pc to match pc) whereas all the lower ping clients do?

somber glade
#

Why would a client have to wait for a 3D widget that is in the scene to 'replicate' when the 3D widget is a static part of the scene (not spawned, but placed in the level). I just ran into an issue where a value had to be set on the 3D widget from the actor that holds it. The value is set with repnotify, however when the repnotify fired on the client, the 'user widget object' from the widget was returning 'unknown'. Add a delay of a couple seconds and it returns the widget. Widgets (even 3D ones) are locally relevant are they not? and the widget is a built in part of the scene. I'm not sure why you'd need to wait for it. Or is that just some quirk of testing in PIE?

twin juniper
#
Epic Developer Community Forums

I am making data driven game it is designed to level designer to write what should replicate and locate position by json file like below: { “Name” : “BP_ABCD”, “ShouldReplicate” : “true”, “Location” : “X:111, Y:222, Z:333” } So, I want to turn on replication of actor after beginplay by data. But UE_LOG(LogTemp, Error, TEXT("AEventMul...

solar stirrup
twin juniper
solar stirrup
#

Probably net cull distance

#

Check your actor's replication settings, you'll see it

twin juniper
#

i will search for net cull distance !
thank you for attention

#

Anyone knows this error? 😦
Warning: UActorChannel::ProcessBunch: ReadContentBlockPayload failed to find/create object. RepObj: NULL, Channel: 7

glad cloak
#

hey guys, im having trouble with replication (i think). The "container inventory component" is a replicated spatial inventory component based off of Reid's channel, it works fine for personal inventories, but im having issues with chests/containers. From some debugging and print strings, ive found that when the server host opens and adds to the container, it shows the container has the items in it. But when a client opens the same container, it is empty. Both can add and remove from the container, but it seems to only update/store items locally (works exactly like an ender chest does in minecraft lol, not my intention). Any ideas what im doing wrong?

lilac lance
#

How do I replicate A UObject Property in c++?

I have

// .h
UPROPERTY(Replicated)
ULyraTeamSubsystem* TeamSubsystem;

// .cpp

void UMyGameStateComponent::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
    Super::GetLifetimeReplicatedProps(OutLifetimeProps);

    DOREPLIFETIME_CONDITION(UMyGameStateComponent, TeamSubsystem, COND_None);
}

but when i try to set the value of TeamSubsystem on the server, it shows as null on the clients

nova wasp
#

if you want something that's like a manager singleton that has replicated properties you will probably be better off with a component on the gamestate?

#

what Lyra does is create some replicated manager actors from the subsystem (ALyraTeamPublicInfo)

lilac lance
#

The reason why i want it replicated is because i wanted the variable to be cached instead of repeatedly calling GetSubsystem everytime i need it

nova wasp
#

why does it need to be replicated to just store it after getting it once?

#

you can safely assume world subsystems will at least have tried to init upon beginplay

#

unless they are conditional

lilac lance
nova wasp
#

I assure you if the issue is "I think getting a subsystem is expensive" replicating anything you don't need to will be far more costly and complicated

lilac lance
#

So its safe to call GetSusbsystem every tick?

nova wasp
#

safe? sure?

#

I am going to go out on a limb and say the cost of accessing the subsystem storage map will be the least of your worries

#

if you ever find it actually shows up in profiling just cache a pointer to the subsystem upon beginning play

#

replication is a tool to make stuff happen on two peoples computers over the network (server->client), this is not saving on much unless the server knows something the client cannot here

#

it's good to be concerned about performance but you need to be able to actually reason about it

lilac lance
#

Alright I think i got it. Thanks!

nova wasp
#

there is a world where it actually does save on CPU time by sending over the result of some expensive thing to clients

#

saving them the effort of figuring out the result

#

but probably not here

fallow flint
#

does anyone know if its possible on a listen server to send one of my clients to a different map. For example: is my client(host) dies id like them to go to "MainMenuMap" and then send my client(the person who joined and "killed" host) to "VictoryMap"

twin juniper
#

owner of actor component doesn't IsReplicates = true on my client

fossil spoke
#

A Server can only ever be serving Clients one level at a time.

#

There is no multi level support out of the box.

fallow flint
#

that explains why when i kill either client(host) or client(server) it only send the host to the desired level

#

i wanted to make it so if the client(Host) or client(Server) ever killed one or the other the host could be sent back to the MainMenuMap and or the VictoryMap same for client(server)

#

insteads wether host or server dies the only one being sent to the mainmenu is the host no matter what

late iris
#

I know this is probably a basic question, but is there a simple way to replicate a Variable to all clients.
(Since most forms or replication, Replicate the actual code, which on the clients the value is 0 since the actual damage is tracked on the server atm)

fallow flint
#

@late iris in what way like have a text both windows can see?

#

this is how i replicate objects to both clients on a listen server

#

void ABasePlayer::GetLifetimeReplicatedProps(TArray <FLifetimeProperty>& OutLifetimeProps) const
{
Super::GetLifetimeReplicatedProps(OutLifetimeProps);

//Replicate current health.
//DOREPLIFETIME(ABasePlayer, CurrentHealth);

}

#

this is how our currentHealth variable is replicated to both clients

late iris
# fallow flint <@180654137506004993> in what way like have a text both windows can see?

The ideal is to Either have it so when the Sync check Variable changes on the (Listen) server, for it be replicated to all clients OR,
When the Set text node changes the text on the server, to change it to be the same for all clients.

But i'm unsure as to how to do that, as it seems all the replication does is replicate the code. which on the clients side, the variable is empty(due to damage being handled by the server).

stiff citrus
#

I started using mover 1.0
This is so good and flexible. The down side of this mover plugin is that many existing code have to adopt it’s design patterns.
RMS no more, jump, launch, and double jump can categorize to a single concept called “layered move”, all supports client prediction and rollback.
Many code using character movement component will have to do some works to migrate to mover, but mover is the future.

#

UE 5.4 will have mover 1.0, I think mover 2.0 has a long way to go.

#

these havn't happened yet.

copper pendant
#

how to replicate varible in this case?:
1 Server: set int_var="123"
2 Client: after few moments new client joins to server
3 Client: client ask server what state of int_var is right now?
4 Server: Sends int_var="123" to Client

karmic briar
# stiff citrus

i saw that play montage node inside mover comp..im currently tried integrate it with gas ability task and it works the same but in GAS, i noticed there some corrections..could be because i use GAS and its prediction system is not npp

karmic briar
stiff citrus
#

Mover still need some polish, but the architecture and concepts are pretty good.

karmic briar
tiny scaffold
#

Hi, what's the best way to save data in multiplayer? My goal is that when the player opens the game and goes to their "hideout" the data is then loaded. What's the best way to save / load this? should i use game mode, game instance or level bp.

Also players will be able to connect to the "hideout" however i only want to set the host / initial players data when they join the other connecting players should bring over their own data from their "hideout"

dark parcel
short arrow
tiny scaffold
#

yeah

short arrow
#

If you're fine with having the most hackable game in 2024 then you could start by loading the save in the game instance and saving a reference to it, once loaded you can send that data to the host, and have the host spawn it

#

keep in mind you'd have to send that information from somewhere other then the game instance though

dark parcel
#

My cosmetic is a replicated variables that load the soft ref on repnotify

#

When client join, it send server rpc to update the cosmetic struct, that's it

#

Did it on acknolwdgepossesion for client

#

As for the listen server I do it onPosses

#

Each player would load their cosmetic from the save file in the load game menu

empty bluff
#

if have a struct variable declared like this:
UPROPERTY(Transient, ReplicatedUsing = RepNotifyBypassSourceEffectChainEntry)
FBypassSourceEffectChainEntry BypassSourceEffectChainEntry;

and want it replicated.. when I do this, the repnotify method does not get called, what am I doing wrong?:
BypassSourceEffectChainEntry.Set(EntryIndex, bByPassed);

tiny scaffold
short arrow
#

but the concept you're trying to do is not all difficult

#

all you need to do is learn how to use the save system in unreal engine

#

locally save all your items before the session ends, and then load that save file once you've entered a game

#

if you are not the host, then you just need to RPC to server (a replicated event) containing all the items you had from that save file

#

It's probably harder to create the save/load logic then it would be to receive your items in multiplayer

tiny scaffold
#

Much Appreciated @short arrow .

mystic zodiac
#

I have a multiplayer question, an overlap event only fire on client and don’t replicate right? How can I ensure that only the player of the client can fire the overlap event for this client, because I want to set player information to an non replicating door by overlapping but if a second player run into the collider the overlap fire again on both overlapping clients right ?

dark parcel
#

Would you have a reason to care about the overlap event when client machine overlap the box in their world?

#

If u don't just use switch has authority to let it only run on server side

#

Something like a pain volume, the client doesn't need to run anything. Have a switch has authority on the overlap box and let server do everything

queen escarp
#

why is it being replicated like that ./

mystic estuary
#

Hello, I'm making an online game that has melee combat with combos. The players are meant to hit the attack button in a certain time-window to carry on the combination. What measures against cheats are out there? If I'll make so that the player can continue the combination only when a certain anim notify state on the attack animation montage is active, it won't work perfectly due to some possible inconsistent ping (attack animation is played predictively client-side).

nocturne quail
#

slowing down the character speed only works on standalone game, playing as client it is not working
afaik CMC is replicated so why it not works?

lost inlet
#

in the past, I've always cached timings that are animation dependent at save time

mystic estuary
#

wdym at save time?

lost inlet
#

when the BP/data asset that contains the animation data is saved

solar stirrup
#

show code

mystic estuary
lost inlet
#

Not really, because of framerate differences between client and server. The client would usually send a timestamp with such commands anyway

#

Though this is something I'm hope NPP will help fix since Mover 2.0 actually uses it

nocturne quail
#

walkspeed is passed as input in charactermovementcomp walkspeed

mystic estuary
nocturne quail
lost inlet
#

The game state holds a world server time, which is actually implemented a lot better than it used to be. NPP is supposed to be a general purpose network prediction implementation, which I've used with some success

#

The next gen CMC (Mover 2.0) uses it

#

So at least that means it ain't dead

nocturne quail
lost inlet
#

Yes, it's in main and the 5.4 branch

nocturne quail
#

Thanks very much

lost inlet
#

Network Prediction Plugin

mystic estuary
#

Is it a UE5 thing though? I'm using UE4.27 for this project

lost inlet
#

It's kinda in 4.27, NPP was dead for a while but Mover is reviving it

mystic estuary
#

Oh, all right. Do you have any article talking about it, or do I have to go through source code to find out how it works?

lost inlet
#

With NPP, you build an input command, you run a simulation clientside, the server runs the same simulation, if there any differences then you resimulate everything after the error occurred

#

It's very much an inspect the source code deal, but the 5.3+ readme is pretty useful

#

(or whenever the readme was actually last updated)

mystic estuary
#

I guess I can find it under UE repository under plugins?

mystic estuary
#

Perfect, thank you

sudden dock
#

I need help. I am building a multiplayer game where water is part of an important mechanic. I was reading that some fluid simulators have limitations in multiplayer. I am new to game development overall. What is the best fluid sim for multiplayer?

nocturne quail
#

can we do a single onrep on two variables?

    UPROPERTY(ReplicatedUsing = OnRep_MoveForwardAxis)
    bool bEnableMove;
    UPROPERTY(ReplicatedUsing = OnRep_MoveForwardAxis)
    bool bValidSpeed;
rich crag
nocturne quail
#

Ok

stiff citrus
frail temple
#

Question regarding Player States and server travel. So when the "Host" server travels, does the player create a new player state or do they take the old one?

#

If they make a new one, how can I move the variables from the the old one to the new one? The variables aren't being stored on Game Instance, should I store them on there and then move it to the new Player State?

empty bluff
#

I have a question that is maybe a #multiplayer question, but guess it's also #audio . I have an actor with a AudioComponent that replicates. On that AudioComponent i've set a SourceEffectChain with a number of effects that I want to be able to turn on/off using SetBypassSourceEffectChainEntry (i know the index of the effects i want to toggle).
So when I do this from the server, the client can hear the change, but when I do this on the Client (doing a ExecuteOnServer RPC), it doesn't work. Any ideas what I may be doing wrong here?

empty bluff
loud pike
#

Hello, I have been working on saving a variable to a local player. So each player saves it's inventory and gives it to the server but can't get it working. Only server get's his inventory and clients get Null. Can I use this node ? (CF just like valheim)

empty bluff
loud pike
#

Yes

loud pike
#

Like when Pawn is Possessed I want to give I'm his items from the SaveGame file

empty bluff
#

Then it should just be a matter of checking is local controlled (i think) before saving/loading your inventory

#

But u wrote u wanted to give something to the server. Its unclear what u meant by that

loud pike
loud pike
empty bluff
#

Eh? Either u want the client to give the data or the server

loud pike
empty bluff
#

Do u mean that the client has a list of items and the server should spawn them?

empty bluff
#

The u’d call a onServer rpc with the variables in and the on that event, spawn your items.

loud pike
dark edge
#

Start by deciding if you want clientside or serverside inventory

#

I joined a game. Who says what items I have, me or the server?

dark edge
loud pike
distant fog
#

hey

I just get this error :

[2024.02.05-15.12.28:902][ 13]LogNet: UNetConnection::SendCloseReason:
[2024.02.05-15.12.28:902][ 13]LogNet:  - Result=ControlChannelClose, ErrorContext="ControlChannelClose"

the game is using steam subsystem any idea what can cause that ?

dark edge
#

and don't use clientside inventory if you care about cheating at all

loud pike
tardy fossil
tardy fossil
#

oh nice shoulda scrolled a bit more

chrome turtle
#

Hi, beginner here, does anybody know how to make it so not every gamepad assigns itself to player 1 in a local multiplayer splitscreen scenario? I have skip assigning gamepad to player 1 checked as true, and the splitscreen shows up when I Create Local Player in the level BP, but my keyboard and the 2 gamepads I have connected all control player 1. At the very least I'd like the second gamepad to be controlling the second player, but it would be ideal to only require keyboard and one gamepad

#

Important note is that I'm using spawn actor and possess in the level blueprint, because I want each player to control a different pawn.

pearl saddle
#

happened in 5.1 and it's still a thing in 5.2 haven't used 5.3 mind you

#

I even tried to get help from my lecturers (I was doing an unreal local multiplayer course) and after weeks of trying they still didn't have a fix

chrome turtle
#

Im on 5.3 and yeah nothing

pearl saddle
#

I spent so many hours trying to figure out how to fix it

pearl saddle
#

Honestly it's just an unreal bug I couldn't find a workaround

#

U'd need 3 controllers

#

to control player two

#

or two if you're using keyboard as well

chrome turtle
#

Thats the weird part is that I had 2 gamepads and keyboard connected and it still wasnt working so maybe I did something wrong?

pearl saddle
#

so youd put two controllers as extra input and then controller 2/3 would be able to control player 2, you'll get two simultaneous inputs from both controllers causing player 2 to constantly have input

pearl saddle
#

at least player 2 would work with the third one

#

then again this is 5.1 and 5.2 so maybe it won't even work with 5.3

chrome turtle
#

I think i might know how to make the 3rd one work when im back at my computer ill test it

pearl saddle
#

I don't see this getting fixed for a while tbh local multiplayer games are a low priority as most games don't use it (on pc)

#

It would impact people wanting to put the game on console such as a racing game

loud pike
#

So for saving the local players value and sending it to the server Idk why it doesnt work - This is on the PlayerPawn

#

Clients get 0 items while server gets the right amount

#

Is there something that needs to be done in the Game Instance specifically ?

vagrant grail
#

General question : Why do people usually say that doing Multiplayer is way harder than Solo games ? What makes it difficult

empty bluff
#

To my knowledge, gameinstance is local to each executable and does no replication

pearl saddle
#

I've currently got a problem where clients (after the second client) can't see the correct server and instead see different ones (Steam subsystem is enabled with gameengine.ini settings). Lobbies shown are both LAN and ONLINE. Very confused, I should be able to see my LAN server that one client created for both clients not just one.

loud pike
empty bluff
loud pike
#

It's just seems like the client doesn't get to access the save slot

loud pike
#

I might be mistaking but this should give me the value on the loaded game no ?

pearl saddle
#

Thought advanced was a temporary plugin solution to broken unreal engine working with steam, hasn't that been fixed now? Seems to be working with just the base plugin and game engine file changes

empty bluff
#

I dont know.. i returned to unreal engine after taking a few years break. Last engine i was using was 4.27.2 snd now 5.3.2

#

Seems alive

empty bluff
dark parcel
#

I'm using advance session with steam, no issue

pearl saddle
#

think i've figured out the issue

#

only the one connected to steam can't see the lobbies

dark parcel
#

Oh you are doing it on pie

#

That's not gonna work

#

U need to test in package

pearl saddle
#

yeah so i'd package it

dark parcel
#

But with multiple computer?

loud pike
dark parcel
#

Can't use 1 computer that run multiple instance

pearl saddle
#

it wouldnt work though with only one cuz ive only goto ne steam account

dark parcel
#

You need at least 2 computer both running steam before running your build

pearl saddle
#

yeah

#

isn't there a workaround like an emulator

empty bluff
#

You should call the loadsavegame and savesavegame nodes

dark parcel
#

Not afaik, buy a laptop maybe

pearl saddle
#

dang

dark parcel
#

It's painful to do a mp game without being able to test the packaged version

pearl saddle
#

i've got friends who can test but do most devs really go on a whim hoping it'd work

empty bluff
#

I test with LAN checked on one pc with 1 listen server and 2 clients

#

Just launch as standalone

pearl saddle
#

That's only for connection without steam

empty bluff
#

Yeah

pearl saddle
#

I just couln't tell which client was using steam and now I've figured it out

solid mantle
#

Hoping to get some help with a server travel issue. I am using Lyra in 5.3 on dedicated server and I am getting was seems to be a replication error after 2-3 successful matches. I found this post in which a user has the same issue. The post is near the bottom of the page. Was hoping someone might have info on what causes this?
https://forums.unrealengine.com/t/player-state-not-valid-after-servertravel/473321/7

Epic Developer Community Forums

On 5.3.1. running a dedicated server → client model this problem is still here, but the problem I’m running into isn’t the player state but after 3 rounds against bots on the map change I get spawned in the ground and can’t do anything. After doing some trial and error I found I do have a valid player state but don’t get an pawn: [412]LogBluepr...

#

the error i am trying to research is this: "UActorChannel::ProcessBunch: New actor channel received non-open packet. bOpen: 0, bClose: 0, bReliable: 0, bPartial: 0, bPartialInitial: 0, bPartialFinal: 0, ChName: Actor, ChIndex: 78, Closing: 0, OpenedLocally: 0, OpenAcked: 1, NetGUID: 0"

#

the engine code states that this non-open packet issue should never occur but it seems that I am getting it

#

can anyone point me in a direction?

crisp shard
#

is there a way to set net dormancy or network update frequency on static mesh foliage actors? i can't find any settings for network related things

jaunty palm
#

why do you want your foliage to be replicated at the first place?

crisp shard
graceful flame
#

What is the best default hotkey to use for chat messages? Currently im using Y but I'm open to hearing other suggestions. The player can always rebind it in the options.

lost inlet
#

voice or text

graceful flame
lost inlet
#

that seems fine? or enter? or T

thin stratus
#

I think a lot use T

graceful flame
#

T for general, Y for team? something like that

copper pendant
#

how to replicate varible from Client->Server

thin stratus
#

ServerRPC in a Client-owned Actor

copper pendant
thin stratus
#

Nope

copper pendant
thin stratus
#

Yeah

copper pendant
# thin stratus Yeah

Than worked! Thank you.. little by little im starting to undersand how this works

lost inlet
#

player state is also owned by its relevant controller

frail temple
#

Does a new player state get created when you server travel to a new level?

rain condor
#

I have a scenecaptur2d on my character to make a previewcharacter on inventory ui but is jittering on mp

frail temple
# thin stratus Yes

How do we get the previous player state variables onto the new one created or would I need to save them to a game instance and call for them to be saved onto the new state?

heady copper
#

Hey guys

#

Please where do I get directions on how to host a game on play fab

thin stratus
frail temple
solid mantle
frail temple
thin stratus
#

I even did the PR to expose it :P

frail temple
# thin stratus That is incorrect

Just noticed, (Something I need to do more often) you can override the function. I for some reason keep forgetting about the override option.

thin stratus
#

However I didn't see anything related to that in the post

thin stratus
rain condor
#

Skeletal mesh

loud pike
#

I really need help with the structure of Saving Game I can't wrap my head around it. I need to save a variable that I can calculate from a Player Pawn and Load it back When player spawns. All this replicated for listen server setup. Now Idk where to do what. I've tried Load and Save with Game instance, but Clients get the server data for whatever reason or get nothing. INot sure what to do and can't find much on this topic online :2

thin stratus
#

If it's attached to the mesh then it shouldn't jitter, cause that one is smoothed. Hm.

thin stratus
frail temple
#

Ok, I'm sorry to be a pain in the butt @thin stratus this is first for me (using player states, normally I would just use Game Instance for these things). How do I would I call for the previous player state when moving to a new level? If I have to use OnSwapPlayerControllers (I'm testing that right now) it doesn't give me the Old PC. Is this due to me using it within the editor?

thin stratus
#

And that isn't testable in editor. There is a console command for it but that might crash

loud pike
frail temple
#

OMG, I thought it was auto enabled! Thanks, I had a previous project that used seamless travel and I forgot I had to adjust it within GM. thank you

thin stratus
#

Not sure that's it but would be my first guess

thin stratus
solid mantle
thin stratus
#

That specific issue is probably best researched via discord search

#

Cause it came up a bunch of times and I posted about it

#

There is a console variable in newer versions that forces the guid to be synced again or so

#

Increase bandwidth but fixes that specific issue

#

Can't say if that's your problem though

loud pike
thin stratus
loud pike
#

Oh ok

thin stratus
#

Simply to stop the Game mode from automatically spawning the pawn

#

So you can do it by hand via the rpc

loud pike
#

I've done that yeah already ahah

thin stratus
#

I don't have too much time cause I'm heading to bed now. But the second step should get you somewhere.

#

If not, post your code and explain your problem and someone will surely help

solid mantle
loud pike
thin stratus
#

Something like that at least

solid mantle
#

ok i checked for those errors and dont see any

#

thanks again!

thin stratus
#

Can't promise it's just a Lyra bug and you either have to figure that out yourself or hope epic or some other Lyra person fixes it

#

Seems like most people that post use lyra

livid jetty
#

CreateSession node not working when steam overlay is present, any ideas?
LogOnlineSession: Warning: STEAM: Failed to initialize game server with Steam

solid mantle
wintry crane
#

hi guys, could someone explain to me whats the difference between player controller and local player controller? whats the difference?

graceful flame
nocturne quail
#

loading datatable this way is a good approach in a Multiplayer game?

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Data")
    UDataTable* MyDataTable;

    void LoadMyDataTable()
    {
        static ConstructorHelpers::FObjectFinder<UDataTable> DT_MyDataTable(TEXT("DataTable'/Game/Path/To/MyDataTable.MyDataTable'"));
        
        if (DT_MyDataTable.Succeeded())
        {
            MyDataTable = DT_MyDataTable.Object;
            if (MyDataTable)
            {
                TArray<FMyData*> TableData;
                TableData = MyDataTable->GetAllRows<FMyData>();
                
                for (FMyData* Row : TableData)
                {
                    // Access data from each row
                    FString RowName = Row->Name;
                    int32 RowValue = Row->Value;
                }
            }
        }
    }
wintry crane
graceful flame
#

not sure about those but yea local controller 0 is the normal player and any other value would be for another local player

wintry crane
#

ok, and i saw smth like -1, does it mean its just player controller?

#

not local

graceful flame
#

But its easy to make mistakes with online multiplayer games where you use local controller 0 instead of owning controller to do stuff and wonder why ALL of the players are doing the thing instead of just the one you want to.

graceful flame
wintry crane
#

oh like in widget right? for the owning player instead of using get player controller i would use get owning player? right?

graceful flame
wintry crane
#

thanks man ill look it up

wintry crane
graceful flame
#

no the number with get player controller is for local multiplayer but it also depends where you call it from I think

#

If you call Get Player Controller (num) from a client then it referrers to local multiplayer aka splitscreen because other player controllers (remote) are not available, but if you were to call Get Player Controller (num) from the GameState it referrers to the index of connected players which can change overtime.

wintry crane
#

i mean well i need to educate on that, i pretty much fresh when it comes to mp, thanks for the responses Im also checking link rn

fallow flint
#

@wintry crane man of culture

#

Does anyone know how to disconnect the client who joined a host client because for me it only disconnects the host and frezzes whoever joined

#

its on a listening server

chilly haven
#

Hi. I want to destroy an actor but I need its state to be up to date on the client, so that the client plays the right destruction effect. Is there any nice replication mechanism to do this, or I must do something tedious like use an RPC for that? Thanks

fossil spoke
#

Which allows you to then destroy it however you like on the Client.

#

IE: Play some nice effects and gracefully remove it locally.

#

Is that what you are after?

chilly haven
# fossil spoke Is that what you are after?

I don't think so?
My server code does this:
building->SetIsAbsorbed(true);
building->Destroy();
IsAbsorbed is replicated, I wanted the client to receive that before destroying. Kinda like a flush.

fossil spoke
#

Call ForceNetUpdate() before the Destroy it might manage sending it in the same packet. You also might want to consider using SetLifeSpan(1.f) instead of Destroy

twin juniper
#

Can Actor has multiple NetOwner?

fossil spoke
#

An Actor only has 1 Owner.

twin juniper
# fossil spoke What do you mean by NetOwner?

I imagine the level that can interact many actors
but if actor has no owner, i can not call Server RPC in client(Right?)
i was thought method that enable all players to own actors easily but it looks like illegal.
how can i achieve that?

#

I'm sorry that my English level is low

chilly haven
# fossil spoke Call `ForceNetUpdate()` before the `Destroy` it might manage sending it in the s...

This works:
if (building->GetLifeSpan() == 0)
{
SetHealth(Health + building->Health);
building->SetIsAbsorbed(true);
//building->Destroy();
building->ForceNetUpdate();
building->SetLifeSpan(0.01);
}
ForceNetUpdate alone wasn't sufficient.
I needed the lifespan if-test to prevent recursion.
It would be nice if Epic made a cleaner mechanism (like making ForceNetUpdate alone sufficient).
Thanks Matt!

past flicker
#

Anybody using networked state machines? If so, what's your solution? Plugin? Custom? If not, what are you doing instead? A bunch of ifs? Some other pattern?

glad cloak
#

Using UObjects as part of an inventory system and it doesn’t replicate, if I just make a custom UObject class that does replicate will it fix the inventory system?

#

Containers are filled by a player, then when accessed by another player are always empty. They can locally access their own storage’s, i.e. they can fill up a container on their client’s machines, but it doesn’t replicate its contents (which is an array of UObjects). I’m told this is because the GetAllItems function returns nothing, because the UObjects can’t replicate. Does this sound correct to you guys or is there something obvious I’m missing?

fossil spoke
#

@glad cloak UObjects dont support replication by default

#

Take a look at the 3rd Pinned Message in this channel

glad cloak
fossil spoke
#

Outer is just the Owner

#

So generally speaking when you try and replicate a UObject, it will be instantiated by an Actor, the Actor that will be its channel for replication.

glad cloak
#

Also with this screenshot, I have red underlines on a few things, do you know why?

dark parcel
#

I would suggest getting a free trial if you haven't use one

glad cloak
#

Like I should only worry about compile errors

dark parcel
#

Intellisense is broken for unreal project

#

@glad cloak if this is your first time compiling you probably want to tick some check list. There are featured enabled by default that can potentially break your project (I think it's hot reload)

More info

https://landelare.github.io/2023/01/07/cpp-speedrun.html

glad cloak
dark parcel
#

@glad cloak I actually use rider so I am not that familiar, can you post the whole picture

#

It seems to me you are still looking at the error log

glad cloak
#

For this code

#

For context, Im trying to make a "replicated UObject", im fairly new to cpp so bare with me

#

Is it something to do with the fact that my header file has that code and it (or parts of it) should be in my script file?

#

Or maybe i dont have the correct includes?

glad cloak
sinful tree
#

If you're not accessing the class and only referencing the class (which is what you usually do in header files), I found that forward declaring is fine. Can go just between your includes and your UCLASS()

thin stratus
# glad cloak For this code

Please move your function definitions to the cpp file so you don't include half the project and engine in a header file and cause circular includes

#

And then forward declare the object class like Datura said

#

GetLifetimeReplicatedProps doesn't need a declaration. You can just put the definition into the cpp file. The class macro declares it for you if you have replicated variables

urban moth
#

do you know guys what comes first? check that the actor is in a relevant distance or check if actor has its update time?

quaint roost
#

if I want max server perf on my dedicated server, should I set NetServerMaxTickRate to very high? (like 120)

glad cloak
#

Il ask this here in multiplayer as well as cpp, but does anyone know what this error is?

urban moth
#

and one last non asked advice - turn of Hotreload/Live coding for now since you are not able to recognize ATM what is an "real" error comes from a compiler and what is bunch of mismatch noise from Live coding

upbeat basin
#

I'm trying using the string I get from IOnlineSessionPtr::GetResolvedConnectString as the URL for ClientTravel. Is this the correct order/way to join the host player world I joined through the sessions?

solar stirrup
#

or the open ... console command where ... is your connection string

loud pike
#

Hello everyone, I'm having trouble again with the saving of inventory and having another go. So here is my setup. What Happens with this is the following. Client when loading to Server doesn't get his items. Server does. This is on the player Controller

#

Now game loaded still get's called, however the value inside the save game seems to be null ptr

loud pike
#

This is where the value is turning into Null

upbeat basin
loud pike
upbeat basin
#

What I would do is storing the data in a struct, sending the struct to the server, letting server create the inventory actor/component from the given data, so it replicates to clients too, and then assign/attach it to wherever it needs to be

loud pike
#

I'm so lost on this, been on it forever now

upbeat basin
#

As a parameter on your server RPC

#

You can't send not (at least yet) replicated objects but can send raw types and structs

loud pike
#

I think I get it

#

Okey I'll try something out, however does the struct is local Player only ? If you see what I mean

#

the data is coming from the local player savegame file

upbeat basin
#

You might have been warned before but I'll repeat just in case, this is not a safe way to store inventory, clients can claim they have items they don't or send corrupted data, since you're storing the information on the client's save file

loud pike
#

Yeah I don't mind cheating

upbeat basin
loud pike
#

So Pawn gets value -> gives it to update struct -> Struct to RPC Server -> Job done ?

upbeat basin
#

Depends on what you mean by value

#

References in your struct won't be passed to the server either

#

You need raw types

loud pike
#

It's definitions of items in a array

#

it's raw type I think

#

no pointers

upbeat basin
#

Like you can't send an array of actors, even in struct, to say that you have those items. But you can send classes and integers meaning how many you have for each item type, then spawn those items in server and assign the references to your inventory

sinful tree
#

No

loud pike
#

Ah, Client did spawn an item though lol

sinful tree
#

Sorry, I should be a bit more specific.... If the array you're feeding in contains objects that aren't assets, then it wouldn't work.

loud pike
sinful tree
#

No

loud pike
#

ffs lol

sinful tree
#

A reference (the blue pins) can be replicated or not.

#

Assets can be referenced without requiring the assets to be replicated.

#

Anything spawned would have to be spawned by the server and be a valid reference on both the client and server to properly reference the specific instance of the object if you want to reference it across the network.

#

So like your save game itself, only would exist on the client, so you wouldn't be able to reference that save game object on the server (just as an example)

loud pike
#

The save game contains a list of definitions

sinful tree
#

But what are those definitions?

#

If they're assets, then shouldn't be a problem.

loud pike
#

Data assets

sinful tree
#

Yea so that should work.

loud pike
#

Ok great ahah pffiou

sinful tree
#

You wouldn't technically need a structure to send it.

loud pike
#

😅

#

Yeah but Idk why without the struct no item spawned for the client

#

Now they do spawn

#

so that's something

sinful tree
#

It didn't work because you were trying to send refernece to the save game.

#

Now you're sending the referneces to the data assets within a structure. You could still just try sending the references to the data assets.

loud pike
#

Okeyy hmm, thanks for the explanation, now I get error with the save file 🙂 this never ends aha

blazing thicket
#

Hey, guys! Maybe this is a stupid question, but is there any way to create multiple sessions on a dedicated server?

vagrant grail
#

General question : Why do people usually say that doing Multiplayer is way harder than Solo games ? What makes it difficult

loud pike
#

@sinful tree @upbeat basin Thank you to both, made it work finally !!

sinful tree
#

It's not like, flick switch and all of a sudden you can play multiplayer. If you don't build things with multiplayer in mind, you're basically going to have to at the very least look at everything and probably recode all of it.

stable grotto
loud pike
stable grotto
#

with single player if it works it works, for multiplayer you need to be extremely mindful

vagrant grail
#

If it works, it works 🥲

#

That's should be the anthem for singleplayer 🥲

glad cloak
#

could someone help me understand this, how does the engine know which function to call here if two are named the same?

#

(im trying to fix the red underline error)

vagrant grail
glad cloak
#

like one is an ActorComponent and one is an Object

vagrant grail
# glad cloak do they not both have 3 though?

In this case I don't know as I'm not a c++ person but I know from another language that I learned, it was checking for the amount of parameters you provide and it tries to call that method with the same amount of parameters

glad cloak
#

I ask because here UMyReplicatedObject inherits from UObject, but when I build i get this error:

Error C2665 'UActorChannel::ReplicateSubobject': no overloaded function could convert all the argument types

#

pertaining to this:

vagrant grail
glad cloak
#

others have suggested its because im missing something fundamental about pointers (entirely possible), but I just cant figure out why it doesnt work and everywhere I look suggests that "MyObject" doesnt inherit from a UObject class but it does?

glad cloak
chrome bay
#

You haven't put the #include in the actor .cpp file for your object

vagrant grail
chrome bay
#

Also if you're following my (old) article, you're better off using Replicated Subobject list now

#

Then you don't need a special actor

glad cloak
#

How would it exist in the world then?

chrome bay
#

What I mean is, any actor can use it

#

You don't need to subclass AActor anymore to add your own replicated subobjects

glad cloak
#

Ok, is there good documentation on how to do that somewhere? (ideally another article like yours lol)

glad cloak
#

Awesome thank you

#

Also forgive my ignorance, but does this approach sound correct?

Im trying to make a "UObject" replicate and be used in an inventory system, and store and remember data when it is brought in and out of the inventory. So, it would need to be associated with an Actor that exists in the world, so using Replicated Subobject list is an approach to doing this?

chrome bay
#

Depends really. Moving a replicated object from one actor to another isn't straightforward or cheap. Replicated subobjects also have a non-negligible cost which presents problems at scale. Unless you reaaaaaaaaaally need them, I'd avoid it altogether.

glad cloak
#

Basically a player can open a chest, put an item in it, and close the chest. When a second player opens the chest, it is empty, but can be populated with items by that player. Both players only see their own instance of the chest, it’s not replicated between them. Does replicating a UObject class and remaking those items with the replicated class sound like a correct approach? Or should I be using something like an item Struct in blueprints?

lilac lance
#

does MyActor->AttachToComponent() automatically replicates or do i need an RPC for that?

chrome bay
glad cloak
lilac lance
#

Does RPCs work on non player objects? example, a random barrel in the world?

crisp shard
#

is it possible to set static mesh foliage actors net dormancy?

upbeat basin
lilac lance
# crisp shard im gonna say yes

My NetMulticast function does not work. on an actor in the world
the actor bReplicates = true;

I have send screen shots. the problem is that it is only being called in the server. its not being called in the client

dark parcel
#

Unreal use Server-client model

lilac lance
dark parcel
#

replication only woork froom server to client

lilac lance
#

but its not being called in the client side. just the server

lilac lance
upbeat basin
#

Is it called twice on the server? Or you tried it twice?

dark parcel
#

how do you print/log?

lilac lance
lilac lance
quiet fjord
#

guys a question. I am making a blueprint factory in multiplayer where it adds negative states to the player such as bleeding poison, etc. I'm doing it with components. My parent component has an event in run on server where it is responsible for adding the state that I want to execute. I have each state as a component. Is there a way to synchronize this better for users so as not to only depend on the server to avoid lag in the game?

lilac lance
lost inlet
#

why is that even a multicast

upbeat basin
lilac lance
lost inlet
#

yes, and?

#

why is it a multicast

#

if it's based on TeamId changing, why isn't that just an OnRep?

lilac lance
#

because if its not a multicast, it will only update the color in the server

#

all clients will have a white color

#

here is the setup

quiet fjord
#

my predictions I did very well with my fighting system. But with a system of adding and removing components that the server is in charge of, I see the blueprint as a bit confusing.

lost inlet
#

I'll just say it again

#

if it's based on TeamId changing, why isn't that just an OnRep?

lilac lance
#

here is what is happening basically

lost inlet
#

then why does it need replication at all

lilac lance
# lost inlet then why does it need replication at all

Team ID is being changed during editor time

I put two Flag Bases on the map

set FlagBase1's TeamID to 1 and FlagBase2's TeamID to 2

Hit play

FlagBase On Begin Play will evaluate Team ID on the server side

Server will call Update Team Color based on team id

Client Will call Update Team Color based on team ID

#

it needs replication so that client will also recieve the signal to update their colors

lost inlet
#

yeah you're still not explaining well why this needs replication

#

pretty much the data it needs will be there by the time BeginPlay fires

lilac lance
lost inlet
#

that is not really explaining why you do

#

what data is invalid?

lilac lance
upbeat basin
#

And the reason why multicast "not working" on clients might be due to them not being even connected to the server yet, if it's running on the BeginPlay

lost inlet
#

ah the perils of making your game based on Lyra for some reason

lilac lance
lost inlet
#

why doesn't the client listen to that delegate then?

lilac lance
#

wait let me try that

#

That worked. Thanks!

umbral gale
#

Hello 👋

I got the following blueprint (BP_RPC), which I want to be executed on the client, but as you can see on the bottom left corner the server never received the RPC from the client, my BP_RPC has bReplicates to true, and I tried to use SetOwner(...) but the server never receive the RPC, do you have an idea why ?

lost inlet
#

oh this is reverse order nvm

#

the output log will usually tell you why

umbral gale
#

Yes but it shows me nothing 🤷‍♂️

turbid escarp
#

hi i do have small inventory system but there is a problem with client side.
whenever i loot,drop etc. i am updating my ui with a event dispatcher. then in my ui i am sending request to my player controller to get my all items array from inventory component with a custom server rpc. then send this data to my inventory ui to create item icons, amounts etc.
but if a client runs this logic its gets empty array in ui. it does add right item i can check it on my player controller or inventory component.
any idea to help this? i am a newbie in multiplayer sorry...

umbral gale
#

Add net_id is custom log message

#

But there are no errors/warning

lost inlet
#

and this is why debugging networking in BP is annoying

umbral gale
#

I juste show you this as a blueprint but in fact I am using cpp

lost inlet
#

well if it was in C++ you could actually step through the RPC call on the client and see where the failure points are

umbral gale
#

I'll try that

turbid escarp
#

any idea to when i run a server rpc to get a array then pass it to client rpc but its returns empty. why this array getting lost ?

wintry crane
#

guys i am planning to make a game with 2 players without split screen, should i make it so that there are 2 local players instead of 1 local and 1 player? which one is better?

upbeat basin
lost inlet
#

well yes, but actually stepping through what it actually does

true stream
#

if I want to execute something from the server to all clients, can I use the gamestate to communicate with the clients playerControllers?

true stream
#

I tried using multicast but the clients dont see it.

lost inlet
#

multicast should work because the gamestate is something always relevant

#

but if it's interacting with player controllers, you could always just... loop through them

true stream
#

so from server I can get access to all playerControllers?

#

through the gamestate

#

still would like to know why multicast didnt work though

lost inlet
#

a multicast on what

true stream
#

I create the custom event inside the gameState and I try to talk to all playerControllers

#

maybe Im doing it wrong

lost inlet
#

are you going to show it or was the issue it wasn't being called at all?

#

but of course you can get all controllers server side

true stream
#

right, on server no problem

#

but clients dont run it

worldly shore
#

Any networked movement experts free to sanity check me? Having issues with net corrections during root motion.

I'm working on an ability that causes the character to charge forward. An animation plays, and then a custom root motion source (RMS) activates partway through the animation to handle movement. The RMS is custom as I want to give the player the ability to steer this charge movment. I wrapped the RMS in an ability task that feeds it a new force direction on tick based on character facing. Finally, there's another layer in the form of an anim notify that overrides the character's rotation rate. This rotation rate override is captured in the CMC saved move system.

The character gets net corrected heavily the moment I start trying to steer the movement (30-60ms ping). The charge movement is pretty fast (~2000 strength in the RMS), so I thought that could be part of the issue, but I'm still seeing corrections when I reduce the charge speed. With the low ping I'm leaning more towards the ability task is getting diverging rotations between the server and the client due to desync between the RMS and the CMC's saved move system, and what I see in my logs supports that theory.

I'm thinking I need to toss out the RMS and rebuild the movement in a custom move mode in the CMC, but I wanted a sanity check before throwing that away.

tardy fossil
#

you could do it through overriding the PhysCustom function in the CMC, but you'd have to handle the movement manually.. might be tricky if you still want it to respect if you're on the ground or falling ect

worldly shore
#

I kinda figured something like that. Am hoping to get by with "basically PhysWalking but always forward"

half umbra
#

actor component always should be replicated?

#

i have some replicated variables in this component

#

and it works, but i don't know if i should also set this component to replicated?

magic pendant
#

Not sure if this is where its best to ask but, If I have a variable on a player controller and want to send that to other clients on the session. How can I do this?

I thought about calling an event on the game mode that's replicated but the client doesn't have access to the game mode right?

solar stirrup
magic pendant
#

So I use start/finish recording output to save a wav file, convert that wav into an array of bytes and assign it to the variable on the PlayerState which will have it available to all the other clients to convert back into a wav file. Would that work?

solar stirrup
#

Depending on the size of the wav file, that might not work

#

Might be too big

#

So you'd need to use RPCs and chunk the data

magic pendant
#

Ok so that's what I was reading and understood but I'm not sure how to use RPCs for this situation

#

My understanding was have an event thats replicated with Run on owning client and make sure its not on the game mode since it can't be accessed by the client, only the server can access it.
Am I correct?

cobalt pollen
#

Correct the clients don't access the gamemode. You can send values/chunks using RPCs. Would go like this, client Playercontroller->send value to run on server RPC that runs on server instance of the same playercontroller. Then the server playercontroller accesses gamemode (not an RPC both already on server) and calls a function/event that receives the data and then passes it to each player controller in the game by calling a run on owning client RPC for each player controller.

#

OR you can find a way to make it a replicated property possibly and let replication send it to the other clients

silver pendant
#

does any one knows a good way to prevent multiple calls on Multicast events

so if I called a Multicast event that called a second Multicast event, how to make the second runs only from the first client?

fossil spoke
#

Since the Server will effectively end up producing 2 multicasts

#

Which is wasteful and potentially problematic.

silver pendant
fossil spoke
#

You can call the *_Implementation directly instead of the actual Multicast function if you dont want it to trigger as a Multicast

#
UFUNCTION(NetMulticast)
void MyMulticastFunction1();

UFUNCTION(NetMulticast)
void MyMulticastFunction2();

void MyMulticastFunction1_Implementation()
{
    MyMulticastFunction2_Implementation(); // This wont trigger the Multicast RPC, it will only execute is contents.
}

void MyMulticastFunction2_Implementation()
{
    // Some stuff.
}
#

Instead of

silver pendant
fossil spoke
#
void MyMulticastFunction1_Implementation()
{
    MyMulticastFunction2(); // This will trigger a Multicast RPC
}
#

Oh

#

Well youre out of luck

#

Blueprint doesnt give you that type of control

#

You can create a function that is the body of the Multicast and call that instead

#

Which is effectively what is happening in the code I posted above

silver pendant
fossil spoke
#

Clients dont have Authority

#

Only the Server has Authority

silver pendant
#

yeah

fossil spoke
#

So calling SecondCall on a Client will do nothing

silver pendant
#

yeah

#

but "firstcall" now calls the print string as one multicast

fossil spoke
#

What on earth are you trying to achieve here?

fast mason
#

Hello guys! If someone has a idea on where start looking at, we have a dedicated server that when run on Test release after sometime kicks all the players and keeps running like nothing even happened, no crash, no logs, no sh*t...

fossil spoke
fast mason
silver pendant
fast mason
fast mason
#

but its still responsive to a ctrl+c, it shutsdown clearly.

#

gracefully*

fast mason
#

and never ever of all the times it happened, got a crash traceback

open wave
#

did you find fix for this has anyone found fix to this. im having same issue

fast mason
fossil spoke
fast mason
fossil spoke
fast mason
#

yeah, I was thinking on that.. gonna try to figure that out..

plucky prawn
#

Or rpc I guess if you really want to

fast mason
#

also SeamlessTravel is disabled

#

since it's not implemented

#

but we do use WorldPartition

fossil spoke
#

You should enable Seamless Travel if you intend to transition levels and want connected Clients to remain in the Server.

#

Having it disabled will cause the server to forcefully disconnect all Clients when a level transition occurs.

fast mason
#

because I have each DS intance with each map

#

DS instances don't change his map

fossil spoke
#

A Client connecting to a different server is a local operation

#

It wouldnt affect the server they are already on (other than to say they would be disconnected when moving to a different Server)

#

Make sure you are doing that transition correctly though

#

If you are accidentally causing the Server to try and travel instead

#

Might be part of the issue

fast mason
#

yeah, I don't think that's the issue, because players are traveling between servers just fine.. I will check dungeons instances anyway, just in case

cursive steeple
fast mason
#

we have NO idea yet.. DS keeps crashing still, we might try launching the server in another machine

#

just for testing