#multiplayer

1 messages ยท Page 187 of 1

mystic estuary
#

Actually though, where is this function called from?

twin juniper
mystic estuary
#

Which one?

empty matrix
#

Guys, how are you, does anyone have any idea of โ€‹โ€‹any third-party services that I can use in Unreal to deal with report player, bans and such?

fossil spoke
#

@twin juniper Did you read the Network Compendium like I recommended?

fossil spoke
#

Bans and Kicks are very simple

#

Reporting is a bit different I guess.

#

Not really sure of an appropriate 3rd party solution that does all of those things though.

empty matrix
#

I'm referring to complete game bans, not just match bans... And about reporting players who are using cheats

fossil spoke
#

Easy Anti Cheat?

#

EOS itself has stuff for all of this as well I think.

#

EOS has a Sanction system

#

Which is basically a Ban

empty matrix
#

I don't know how to implement it, I get lost a lot on the Epic Games developer portal and I'm using Steam Sessions

twin juniper
fossil spoke
#

It takes time to understand it all.

twin juniper
#

I wish only by reading I could understand things a 100%
But I require hands on experience to master things

fossil spoke
#

?

empty matrix
#

Would it be possible to implement Easy Anti Cheat with the Steam Subsystem?

fossil spoke
#

Yes?

#

You should probably go and research it.

empty matrix
# fossil spoke Yes?

Sorry, I'm new to this part and I can't find anything about it on the internet...

eternal dune
#

Not sure if I should ask here or in #cpp but I'll start here. I have added an InstancedStructContainer to one of my UObject derived classes that is a property on an Actor. I have, I think, correctly set it up for replication. The class provides IsSupportedForNetworking() and GetLifetimeReplicatedProps(), and the property that is the container is marked as Replicated. But the container does not actually seem to be replicating.

#

I am at a loss for how to debug this

#

What are good things to do when debugging replication issues?

sinful tree
eternal dune
#

I don't know, actually. The UObject is added as a variable on the Actor blueprint, actually

#

Ah! It was not marked as replicated!

#

Time to go test again

#

Ah well. That didn't change anything

sinful tree
#

UObjects can't replicate just by marking them as replicated. They require additional set up in C++ to get them to replicate.

eternal dune
#

Well yes, I know. As I said, I have provided IsSupportedForNetworking() and GetLifetimeReplicatedProps() for the class

#

If there's something else I need to do then I'm not aware of it

sinful tree
#

If you've done the SupportedForNetworking/GetLifeTimeReplicatedProps part, I think you just need to have a way to add and remove the object from the subobject list of the actor that contains the UObject reference.

eternal dune
#

That is something I want to be able to do in Blueprints. I'm developing this for other people to use and I don't want to force them into C++

sinful tree
#

Then you can't use UObjects to replicate the data.

small grail
sinful tree
#

The base class for replicating has to be made in C++, but it can be subclassed in blueprints that can still replicate the UObject, but they too need to have some means to have the object be added to its subobject list.

eternal dune
#

There's no way to add my uobject based class to the subobject list of a BP defined Actor?

sinful tree
#

You probably could make a static function that could do it that you expose to blueprints.

small grail
#

Why not just try the plugin and see if it works as you want?

eternal dune
sinful tree
#

And yeah, it looks like that plugin does exactly that - it looks like it creates a class that is then used to manage the replication of the objects which you can add and remove from the subobject list of that object.

eternal dune
#

Well, that plugin is free, so I'm installing it now. I'll look at the code and see if it can teach me anything. I really need to learn this stuff for myself

#

Thanks for the information!

static charm
#

hey guys im trynna replicate sound , it seem to fire on client and print string but the sound refuses to play, on server it rrefuses to fire but plays the sound lol

sinful tree
#

The actor needs to be replicated.
If the actor is replicated, you can't send RPCs to the server on actors that aren't owned by the client, but this is ok, because you don't need to send an RPC to the server as the server itself can detect the overlaps/end overlaps - just put a "HasAuthority" node on the overlap events and use the "Authority" path to ensure the server is the one executing.

eternal dune
#

Say, does a replicated UObject have to be a property of an Actor directly?

In may case I have a replicated UObject that is a property in a different replicated UObject which itself is a property of a Actor

eternal dune
#

Hmm. From what I'm seeing nested replicated uobjects require even more work and might not be worth it. Maybe I can turn my outer Uobject into an ActorComponent. That might work

#

Anyway, I need to sleep and give my brain a rest

frozen brook
#

Has anyone seen this warning? I googled it, and I couldn't find much other than it might be an issue with having logins enabled without credentials, but I've never turned that on & this is a new project. (I'm in 5.4)

neon summit
#

Not just in 5.4

frozen brook
#

Oh. I was thinking it might've been a bug, but I've only ever gotten it in 5.4. It seems like I can ignore it for now, but it could be something I've enabled/disabled without meaning to lol

#

Ty for the info!

static charm
sinful tree
#

BP_Item is it?

static charm
#

oo

#

so its the

#

ahh so

#

i ticked it now =]

#

let me see if it works ๐Ÿ˜„

#

used to doing in the main char hence i dint do it here forgot ๐Ÿ˜›

static charm
sinful tree
compact plume
#

Is there an equivalent of PostNetInit for Actor Components?

somber glade
#

If you have a repnotify variable exposed on spawn, and set it, will clients who join after recognize that it is different than default and then run it?

modest crater
#

Yes if a value differs then when the client joins they get the updated value an OnRep functionality runs

somber glade
#

What about for example in peer to peer/listen server multiplayer. Would the host who spawns and set that, immediately run the repnotify as they're also a 'client' and it would basically run at the same time as begin play for them?

modest crater
somber glade
#

This is a BP function. So it should run.. okay thanks.

#

actually a quick test, in BP it doesn't seem to

#

at least not as part of a spawn action.

void nest
bright summit
#

I am using AdvancedSessions in 5.4.2 version of plugin is 5.1

#

@void nest

#

so just install older version

void nest
#

I tried that but then the project no longer compiles

#

It only compiles with the correct version :/

bright summit
#

wdym no longer compiles

void nest
#

When I migrate my project from 5.0 to 5.1 it doesn't compile and tells me Advanced Sessions is the culprit. I've had this too with other Unreal version like 5.3 and when I put in the correct Advanced Sessions plugin version (5.3 in this case) it suddenly compiles just fine.

#

Problem is there is no correct 5.1 version of Advanced Sessions

bright summit
#

no

void nest
#

Meaning I'm stuck as I can't compile the project without it

bright summit
#

did you compile whole project by IDE?

void nest
#

Yeah with VS

bright summit
#

what compile errors you get

void nest
#

Currently in the process of migrating again. Will post the error when I get to compiling again

#

But it always something with AdvancedSessions

bright summit
#

Is a implementing things for example decreasing stamina as timers is a good practice/idea when it must be networked?

thin stratus
#

If it's not related to Movement, I guess it's fine.

bright summit
#

no, I will only do player sprinting depended if he has stamina or not

#

in every tutorial I see timers

thin stratus
#

But you reduce the Stamina while sprinting?

#

In Blueprints?

bright summit
#

no, cpp

thin stratus
#

But you reduce the Stamina while sprinting?
And this?

bright summit
#

yes I am wondering about it how to do it properly

#

that's the reason I am asking about timers ๐Ÿ˜„

thin stratus
#

Using Stamina in Movement requires to use the CMC directly

#

There is a Repo pinned that has a small example

#

You will need to reduce the Stamina in the CMC directly.

bright summit
#

In CMC? Why

thin stratus
#

Because you are affecting Movement with it

#

And it has to be kept in sync with the Movement Prediction

bright summit
#

Same way as predicting if player wants to sprint?

#

I have CanSprint function which finally decides if player should sprint or not, I wanted to check there if player has stamina

meager spade
#

We reduce stamina when player is moving in the cmc. There's a few convenient places to do it.

bright summit
#

example?

woven basin
#

from the pins

#

that eXi referred to

modest crater
# bright summit example?

UpdateCharacterStateAfterMovement() and OnMovementUpdated() are nice post movement update hook places

bright summit
#

thank you

quiet fjord
#

I am setting up my game server with gamelift aws and when it comes to uploading the fleet I get this error. I am using init sdk 5 from gamelift

thin stratus
#

Have you done what it suggested you to do?

lapis hazel
#

hello all, my clients are spawning with the DefaultPawn (is like they have another Game Mode instead of mine: BP_MultiplayerGM). I have tried to set my game mode to every default setting in Map & Modes but it didn't fix the issue. Any ideas?

#

Of course ThirdPersonMap has overrided the game to BP_MultiplayerGM and the map works perfect if I test it without sessions

#

The Host is spawning with the correct pawn, at least...xD

quiet fjord
#

@thin stratus yes I have the init sdk of the gamelift plugin placed in the gamemodeserver by default in its begin play

#

I also put the dlls that I downloaded from openSSl

thin stratus
#

And the suggestion to check the logs?

bright summit
#

Not sure but I got it working

summer rivet
void nest
#

Omg THE Mathew Wadstein?!!?? ๐Ÿซฃ I'm star struck ๐Ÿ˜… Thanks for the link Mathew. ๐Ÿ˜„ The 5.1 version is there! Awesome ๐Ÿ’–

bright summit
void nest
#

@summer rivet I just want to say that your tutorials are legendary good sir. The countless times they've saved me from going nuts are beyond count. I can not thank you enough for all the hard work you have undoubtably put into all that and for all of your future work. HUGE fan! ๐Ÿซถ

summer rivet
#

@void nestGlad to hear they helped, thats why I created them since I know how it feels to need more info and have it missing then banging your head on the keyboard till stuff works lol

void nest
#

Haha yes exactly! They are a beacon of light in dark times ๐Ÿ˜…

golden warren
#

Hi, I need help
I'm making attachment system for FPS (normal fps, not true fps)
Then, I use "add static mesh component" for add it, and I turn on "owner no see"
And also I "set owner" to character correctly, but third person attachment meshes still visible....
(As you can see, stock, magazine and sights are floating even though owner is correctly "PlayerCharacter")
Why???? is that bug????

lapis hazel
golden warren
lapis hazel
#

BP_MultiplayerGM inherits from GameMode

golden warren
lapis hazel
#

mmmmmmm Okey now I know what's happening.... playing as a listen server, if the listen server host the session, the other clients spawn as a DefaultPawn. But if I play the game with 3 clients, everything works fine. Or if a client host the game playing with a listen server.

#

For example recording this video, its works becuase a client host the session. My bug is happening if the listen server (the editor's viewport) hosts.

summer rivet
#

do you have any server specific code running? since thats about the only difference you are describing (if the server hosts)

tired current
#

Hi everyone hope you are well. Very new to networking, am curious what is preventing me from setting the active camera on the client side. I have one camera actor placed in the level. When a client joins the server (listen server) a character BP is spawned it, and then I have attached a pic of its BeginPlay which should grab the one camera actor from the level and set it as active. I am replicating this function to run on server as well. However when a client does join the game, it snaps to the right camera for a second then snaps back to what seems to be a default camera that UE spawns in, as this Character does not have a camera attached. I am curious if it is the server in this case thinking that the camera assigning is the client trying to cheat? Or if anyone has any insight on this would be very appreciated thank you!

#

Here is a video demonstrating the behavior, Obviously the client (smaller window) is able to access the camera and is getting the right player controller to assign it on, I am just confused as to why it is being set back to an unkown camera. The correct camera view is the one that the bigger window sees. At 0:03 the client shares this view for a second.

crude comet
#

Hello everyone!

`UCLASS( )
class MYGAME_API UOuterComponent : public UActorComponent
{
GENERATED_BODY()

    // OnRep func is omitted

    void DoSmthOnServer()
    {
        CustomActor = SpawnActor<ACustomActor>(/* params here */);
    }

    UPROPERTY(ReplicatedUsing = OnRep_CustomActor)
    TObjectPtr<ACustomActor> CustomActor;

};

UCLASS( )
class MYGAME_API ACustomActor: public AActor
{
GENERATED_BODY()

    // OnRep funcs are omitted

    UPROPERTY(ReplicatedUsing = OnRep_someProp1)
    int32 someProp1;

    UPROPERTY(ReplicatedUsing = OnRep_someProp2)
    int32 someProp2;

};`

UOuterComponent is placed inside other actor, both are replicated.

Is it true that when I set CustomActor on the server (by spawning) and as well set replicated properties of that Actor on the same tick (literally after spawn), OnRep_CustomActor will be called on the client before OnRep_someProp1 and OnRep_someProp2? I want to know if it is like 100% true and I would get the same behavior regardless of packet losses and any bad connection.

bright summit
#

they will be called when server change their's value

gray blade
#

If i wanna make an array to keep track of player controllers should I put it in gamestate or gamemode?

crude comet
bright summit
#

you can just make printscreens and see what happens

crude comet
# bright summit you can just make printscreens and see what happens

yeah, I guess I'll try. Might as well enable packet loss and lag. Just not sure if the order will be always the same, would it mean that it is a 100% stable behavior. Networking is such a thing, that anything can happen anytime. I know that in Unreal it is better not to expect thr order of OnRep's to be consistent, but in my case, it just looks very intuitive. My brain can't believe that property OnReps of the object could be triggered before the OnRep of the object itself ๐Ÿ˜„

bright summit
#

In case of packet loss, won't it sometimes be the case that the variable that will take more memory will be replicated last?

tired current
#

so this is replicated multicast. if I call it from a client shouldnt it also call it on the server and then the server calls it on the rest of the clients as well? so I am confused what the (if server) means?

crude comet
#

I guess it might be the case if the variable doesn't fit in the packet, then it could be replicated in the next one, therefore the bigger the data, the higher chance that it won't fit in. Ofc, I don't know the limitations, or how Unreal handles it,(Not in the mood to debug engine code right now) but just from the point of common sense, it should be like that

bright summit
crude comet
tired current
#

okay thank you both

bright summit
#

take a look

#

there's a lot of important informations

#

@tired current take into account also this one

twin juniper
#

I had a question about Multicast and RepNotify for my open world 2d mmorpg. It seems like they both call events on clients once they become net relevant again, as in once the client gets close enough to the actor who called the event. Is there anyway to possibly stop Multicast or RepNotify from calling events/functions on clients that become net relevant again?? I dont want players to get bombarded with events like sound effects and stuff each time they find a new player in the open world.

tired current
bright summit
#

In that situation mostly clients own their possessed pawns so simply make server RPC called from client

tired current
#

ah hold on. So I am calling a function from an actor called PlayerManager that was spawned into the level through the GameState. So the Player Manager should be owned by the listen server. I then call a function on a pawn that is owned by a client, from the PlayerManager which is owned by the listen server. Even though the function is a member of the Pawn Actor, it is still initially called from the server. So in this case would I be invoking on a server owned actor or client owned?

bright summit
#

Ok, I didn't know this is so complicated xD

#

What do you want to do exactly?

#

You said you want to change pawn colors

#

Do you want to do it from player manager?

tired current
tired current
dark parcel
#

The rpc call will get dropped if client is the one calling it in your game manager

#

Or any actor it doesn't own for that matter.

#

Change pawn color thru server. Color can be replicated value

#

On rep meshcolor-> set color

shrewd spindle
#

This is the same problem I'm having... So for pretend, I have a weapon spawned on the level, it replicates to every client, but the first client to touch it gets to have it and it disappears. Now that weapon is visible on the owner, owned by the owner, but when I go to shoot it, the spawned "Rays/Projectiles" are created by the client... How do you put those "rays/projectiles" onto the server to replicate them to other clients? Do I just "on hit" the other client's collision mesh and then tell the server that I hit the other client's mesh, or does the server determine if I hit them? I can get it to work in a haphazard way, but what is the right way???

bright summit
#

Spawn them by the server? Xd

shrewd spindle
bright summit
#

Optimize your code and it will be good

shrewd spindle
tired current
#

Oh i see

shrewd spindle
tired current
#

I see. And the problem is then when that weapon calls the spawn projectile method you need it to spawn the projectile on the server so that the server can replicate it to the rest of the clients. I am having the same problem

#

How do u have it setup rn? Do u have like an actor owned by the server that handles all projectile spawning? Or would u try to have the weapon be owned by the server?

shrewd spindle
bright summit
#

Pickup ->setowner for picking up player +> shoot server RPC on weapon object which spawns projectiles

#

Or am I missing something?

shrewd spindle
# bright summit Or am I missing something?

That's a way, but the other clients don't need to "see" the other clients projectiles/rays... But the Owning Client does. So "should" the server be spawning every client's projectiles, or "should" the clients be spawning the projectiles and reporting to the server when meaningful hits occur.

shrewd spindle
bright summit
#

"only owner see"

tired current
shrewd spindle
#

But I can't seem to find a basic description of where to put all the logic and how to organize it. About to watch this:
https://youtu.be/Hsr6mbNKBLU?si=IvTjjI5fOJawuETy

๐Ÿ‘จโ€๐Ÿซ My Patreon link:
https://www.patreon.com/kekdot
Download Project Files | Premium Tutorials | Courses

๐Ÿ’ฆ Get our Game on Steam | Kekdot Center:
https://store.steampowered.com/app/1487180/Kekdot_Center/


๐Ÿง‘๐Ÿปโ€๐Ÿš€Support us on our ๐Ÿ’ฒPatreon for awesome benefits: https://www.patreon.com/kekdot

In this video we talk about the Unreal Engine Multi...

โ–ถ Play video
#

But I don't like watching tutorials... I like reading them.

dark parcel
#

@shrewd spindle depend on how much work you want to do

shrewd spindle
#

But also minimizing the load on other Clients who simply don't need to see HD Flames shooting out of the hands of a sorcerer 100 ft away.

worldly dew
#

Anyone here experienced in unreal netcode please DM, I have an offer for you

worldly dew
# twin juniper what is netcode

We need to replace the Unreal NetDriver with our own custom version. We already did some of the work to convert the messages into the right format for the relay, but the NetDriver is what receives and sends these messages

worldly dew
woeful ferry
#

Like how GameplayCues works in gas

twin juniper
#

yes i am trying to make it a one time event.

#

any ideas

#

all players need to hear the sound effects of attacks and enemies dieing though

#

if they are net relevant

woeful ferry
twin juniper
#

explain

#

i call them once on multicast or repnotify, and if players are not relevant they dont hear it

#

but if they get near the player they hear all of them at once, the ones that they missed

woeful ferry
#

they wont catchup when someone gets near

twin juniper
#

yes they do

woeful ferry
#

no they dont

twin juniper
#

if they were not net relevant

woeful ferry
#

No

twin juniper
#

yes

#

i will test it again but i just had it happen right now

#

same with repnotify

shrewd spindle
woeful ferry
twin juniper
#
Epic Developer Community Forums

I did some extensive testing and it seems that Multicast RPC events are called on all clients regardless of the Net Cull Distance. It pretty much seems to just ignore Net Cull Distance if it is a multicast event. I have only tested this in Blueprints and not C++. Iโ€™m not sure if this is intentional for Multicast RPCs or a bug in blueprints. In ...

woeful ferry
#

repnotify is literally made to solve this particular issue

#

If you open a box, and multicast the open box animation, it won't be opened for a new client

twin juniper
#

you were right ๐Ÿ™ ty

dark parcel
#

Afaik client spawn its version right away, then interpolate to server's one or something like that

shrewd spindle
# dark parcel Afaik client spawn its version right away, then interpolate to server's one or s...

So you're saying the Client Spawns the 'HD' projectile, and updates the server with the projectiles name/location/transform, tells the server it hits, and the server says "Yeah, you hit" and does the server thing telling the other Client that they were hit and what hit them. The server at the same time interpolates the data coming from the originating client to draw the 'Non HD' version of the projectile, replicated to all the other clients, so they aren't hit by ghosts they don't even see, but isn't making them draw complex meshes.

Similar to when I shoot, my projectile tracers are green to ME, and all my allies projectile tracers are green, but enemy tracers are red. To my enemy, I am their enemy, so my tracers are green to me, but red to them, and their own tracers are green to them, but red to me.

My biggest weakness right now(Which I'm learning) is knowing which blueprints to place this logic...

-Team association (Player State or Player Pawn? Can switch teams?)
-Weapon Generating Projectiles (Weapon Actor(owned by Character Pawn?))
-Updating Server/Other Clients (Character Pawn or Player Controller? Doesn't matter since PC owns Pawn?)
-Attack Input (Character Pawn?)

I'm rubber ducking at this point... I'll keep plugging things in and see how they work.

#

"Switch Has Authority" is the big boy Node here, though, right?

dark parcel
#

@shrewd spindle it's probably best that I say nothing and for you to look at the source code instead.

shrewd spindle
shadow aurora
#

Soooo I'm passing in a rotation to SafeMoveUpdatedComponent in my custom movement mode, but for some reason simulated proxies are not seeing that rotation correctly. I've set bUseControllerDesiredRotation to false and bOrientRotationToMovement to true (and everything in between) but no matter what I do, the simulated proxies are always seeing them facing the same direction.

Am I missing something silly here?

shrewd spindle
#

I had rotation issues, and had to call "Set Control Rotation" Node

woven basin
#

If itโ€™s good enough for Fortnite and no one ever notices, then itโ€™s good enough for whatever game youโ€™re making.

shrewd spindle
fossil spoke
#

You see the throw animation instantly

#

But the projectile itself is not instant.

#

The rational is that, most players do not notice or care.

#

We dont predict any of our projectiles either.

woven basin
fossil veldt
#

interesting

fossil spoke
#

We made an artistic choice to have our Throw animations authored such that they generally obscure the center of the screen towards the end with the Hand.

#

This means that the time where the Projectile hasnt replicated is covered by the Hand

#

Generally speaking

#

High ping scenarios is obviously going to be problematic whatever you do

fossil veldt
#

The thing about those kind of predictions is that I generally expected that at this point they are no extra effort anyway because usually you'd want to do some kind of complex time syncronization here, but I guess you can just not predict and forward the projectile on the client by half the round trip time

#

but still usually at that point it's almost easier to predict it because then you can do the local throw and make a timestamp, then server spawns, skips by the delta in the timestamps and ur good

#

unless u just deadass don't care about any of that ahah

fossil spoke
#

Well you probably should ask yourself why you should care about the prediction of the Projectile.

#

If the Projectile comes into the world in a way that you can get away without doing it, does it really matter that you dont?

#

You might want to predict the Projectile for accuracy.

fossil veldt
#

Well yea - it depends on the type of projectile I guess, but it usually matters more when you have something like a frag cook mechanic

fossil spoke
#

Slow moving Projectiles like Grenades, probably not.

#

As long as they end up where the Player thinks they should have.

#

Does it matter if the Projectile itself was instantly onscreen?

#

Which is basically what we concluded.

#

Im guessing OW did as well.

#

It doesnt really matter.

fossil veldt
#

Hm yeah it's definitely an interesting point

fossil spoke
#

Because its the Action of throwing that needs to be instant

#

Not the result of that Action (the throwable projectile)

#

It helps that you have a situation where its unlikely that Player will have wildly different Pings as well.

#

Match Making ensures that doesnt happen

#

Especially region locked ones.

fossil veldt
#

Yeah makes sense

fossil spoke
#

So replication is going to generally be quick anyway

woven basin
fossil spoke
#

There are nasty edge cases to solve for when predicting

woven basin
#

yeah - exactly

fossil spoke
#

I feel you only predict what you need to.

#

Otherwise avoid it.

#

Dont go around trying to predict everything

woven basin
#

yep - what I've learnt recently is the feeling of instant is what players want. Not actually instant - they dont know/care

fossil spoke
#

Yep

woven basin
#

I'm doing it with my inventory system at the moment. There are sounds/pops and the feeling of it moving - but its not

#

and it feels great

fossil spoke
#

Unless you are making so hyper competitive shooter that is garunteed to be a comercial success. Then dont bother making everything smooth and snappy. Only the things you absolutely need to avoid Players feeling like your game is clunky.

fossil veldt
woven basin
#

haha - and you as well it seems. I started using clumsy after reading this

#

and yeah - got it integrated into my CI/CD now so my multiplayer tests are using real lag. Its amazing

fossil veldt
woven basin
# fossil veldt big brain

Have you seen the "Sea of thieves" thing about multiplayer testing? Since they didnt release any code, I made my own, but improved for multible players and servers etc. So adding clumsy in means I can actually auto simulate.

fossil veldt
#

Oh shit I haven't but that looks really nice

woven basin
#

now I'm adding in "late join" tests for a 4th client - to auto check each step there are no late join issues as well - i.e. not replicating or domancy issues

hollow bear
#

Hey guys new UE learner here.
Im trying to add a day and night cycle that is replicated/multicast. I can get it to work by just having this logic in the level blueprint (Without the multicast) but i am not able reflect the same day/night changes simultaneously on 2 clients.

woven basin
# fossil veldt Oh shit I haven't but that looks really nice

thanks - In Sea of Theieves they did "server/client".

But I made it so you write one scenario. So if you take common inventory example, Player One drops items, Player two picks up item.

Then you 'rotate' the listen server through 3 permunations. Player One is server, Player Two client. Then Player One is client, player 2 is server. Then a 3rd where player 1 and 2 are clients, and player 3 is the server watching from sideline.

#

and means you can also test having the server as both listen and dedicated on each test too (if your game supports both) etc

#

anyway - going ok so far - only way to pretend I have a team of 10 testers for one my lonely development stuff ๐Ÿ™‚

woven basin
fossil veldt
#

i did lots of stuff w gauntlet in the past but many many times maintaining the tests became more annoying than just fixing the bugs as they came up

#

and often didn't catch specific stuff

woven basin
#

i.e. super simple

#

it just worksโ„ข

fossil veldt
#

but network stuff sounds like a good candidate

#

I always found the most value out of performance testing

#

and some small amount of integration tests that are very targeted and specific

fossil spoke
#

Using Automated Tests for Gameplay stuff is almost a waste of time.

#

Better for much more low level things

fossil veldt
#

yeah

fossil veldt
#

often never catches anything

fossil spoke
#

Because you have to maintain not just the gameplay feature, but the tests that apply to it as well?

fossil veldt
#

or is more work to maintain than the time it saves

fossil spoke
#

Gameplay features can be iterated on like crazy

fossil veldt
#

that being said I do think it can work well if you KNOW you have an expected output, and that output is never going to change

fossil spoke
#

If you have a decent QA pipeline you will pickup all the major stuff anyway

fossil veldt
#

and then you can emulate the inputs

woven basin
fossil veldt
#

as soon as you start plugging your tests into calling functions rather than emulating inputs imo it borders on becoming a waste of time

fossil spoke
woven basin
fossil veldt
woven basin
# fossil spoke Sure, but once you get those done and they arent going to change, is the test ev...

yes, because then you can make fixes/issues later with confidence you didnt break half your other stuff.

i.e. you make inventory system early in game development, a year later you deploy, players report bug, you fix a key part of inventory code, and add a test for that specific isssue. You prevent regression on a known bug, and you know all the other base functions didnt break.

Tests slow you down at the start, but at the end you can move at lightening speed with safety

#

in early prototying it makes no sense - I agree

#

but once it gets locked down, the tests are just amazing

fossil spoke
#

Personally, I am skeptical of the effectiveness of Automated Tests for most gameplay features. Im not going to try and convince you otherwise.

#

Its also a bit offtopic now.

woven basin
karmic briar
#

hello, i want to ask, can unreal give ability to the player to host heir own server? like how minecraft does it?

what i mean is minecraft provide with player with the ability to host their own minecraft server and they can join it by put in the ip address and give them to other player to join that server..

#

like how minecraft have the server.jar thing?

#

thinking of going the valheim route of multiplayer with coop and the ability for player to host their own server

sinful tree
#

Unreal supports networking and you can have game run as a listen server (the host of the game is also playing) and you can also create a "Dedicated Server" package which runs headless (read: No visuals/no one is playing on that instance of the game but allows players to connect to it to play).

storm grove
#

can I force a value to replicate again? Lets say an int value that a client changed locally but the server doesnt see that change so it wont re send the value, is there any way to force a value to resend without some kind of Client RPC from the server we need to make

reef bison
storm grove
#

no I was asking if we can force the server to re-replicate a specific value even if it thinks the clients already have that value on the servers end

sinful tree
#

There's no way for the server to know what values the client has. The next time the value is set on the server, the value would be sent to the client.
If it's something not necessarily gameplay oriented, then you shouldn't worry too much about it as clients can freely change values on their end and it will only impact their end.
If it is something gameplay oriented, then the servers values are the ones that should be used rather than anything that the client has - if the client sends a value that is outside of what the server thinks it should be then maybe you have a point at which you could try re-setting the value so the clients receives the correct value.

pseudo wagon
muted ravine
#

hi guys i have a problem with the equipping weapons and armor. When i equip the weapon the animations for equipping works but the mesh isn't visible for the client why?

hollow bear
#

Hey guys im still new to multiplayer, but im desperate to learn it.
So i have a simple logic for entering a heli, with a collisionbox to interact. Then my player is hidden, while im controlling the heli, i can then tp my hidden body over to wherever i drop out of the heli.

Blueprint Runtime Error: "Accessed None trying to read property CallFunc_GetController_ReturnValue_1". Node: Possess Graph: EventGraph Function: Execute Ubergraph BP First Person Character Blueprint: BP_FirstPersonCharacter

Not sure my replication is setup correct, but what i noticed is something is definetly wrong in either of these 2 blueprints. When i enter a heli with my server user its all fine and i can tp out just fine(With get player controller, but since thats an index i cant really use it, so i tried get controller, however when i go into the heli with my client and i go out, then my server user tp's to that spot, and my client is somehow stuck in the heli possess. I am asumeing there has to be a simple fix or easy reference to my client to get out, and not have my server user tp there?. I am still very new to Unreal Engine, let me know if there is any other info that will be usefull.

nocturne quail
#

is it possible to connect windows client to a linux dedicated server?

tardy fossil
#

yes

nocturne quail
lost inlet
#

would be pretty annoying if that didn't work since 99.9% of game servers are Linux

nocturne quail
#

hmm, i was trying to pay for windows hosting, just found linux hostings are 50x cheaper ๐Ÿ˜„

polar patio
#

Anyone seen this before? We have our game's objectives replicated in the GameState, it uses the "Text" data type. If a client joins mid game then whatever localization the host has, the client gets that translation instead of their own localization.

It's weird because the first 2 objectives are still in English for this client? Has anyone encountered similar or have a alterative solution?

torpid whale
#

Hi

#

Does anyone know how to deal with the following?

When I am testing my game with 300 emulated ping (with the PktLag command), the AI โ€‹โ€‹hit trace does not run well, the animation does, but the hit trace does not, and my character never takes damage

I know this probably needs to be fixed with lag compensation, but I never addressed the topic and was wondering if anyone had advice or any guide/documentation to follow.

Thanks in advance

hardy turtle
#

hey guys!
Does anyone know how can i update those two bools i underlined from the update session node?
I'm trying to make a private lobby that can turn into a public one

Thanks to anybody who might answer!

fringe gate
#

username

polar patio
marble skiff
#

Is playerstate spawn when map loading time or spawn by server?

torpid whale
#

I will probably do a refactoring to the way to clean the array of hit enemies, I will wait for the server to find out about this, and when it finds out and applies the damage, clean the array

lost inlet
polar patio
lost inlet
hollow bear
pure tulip
#

can somebody help me with replicating a node named set skeletal mesh asset that when you change it will show it for every body in the game

#

?

thin stratus
# muted ravine Can someone help me pls?

Not sure if that's your issue, but you should not rely on VariableA in VariableBs OnRep.
If you need them to replicate together, put them into a Struct and replicate that.

thin stratus
pure tulip
#

thanks ut works

nocturne quail
#

if i follow this, i still need steam or not?

#

i want to port forward and use my IP to host for testing

lost inlet
#

how am I supposed to interpret this diagram

#

if you're behind a NAT, you can forward a port yeah

#

which you will be

#

and you can connect by IP with the null online subsystem

nocturne quail
#

hmm, so in the client i have to put my ip in the executecommand node right?

#

when they click connect, they should connect to my IP, right?

lost inlet
#

well if you're fine with that then sure, I would probably just use a cheap VPS personally though

nocturne quail
#

if my game become popular, they will hand over it to hackers to make cheats for it

#

i don't trust any hosting company

lost inlet
#

lol misconceptions about cheating again

#

and VPS providers

#

giving out the IP of your home network is probably a bigger security risk

nocturne quail
#

about cheats, i am sure they can do it easily and with 100% success rate if they have the server version of the game

#

about VPS, i chat with many companies, they are giving me full cpanel root access, so i should upload the game and execute it on their server

#

and i can use OpenVPN at home to fake my real IP address

lost inlet
#

cpanel? with a VPS like DigitalOcean or Vultr or whatever you just get SSH access and that's it

#

cpanel is pretty antiquated and pretty much used for web servers exclusively

nocturne quail
#

yes because i wanna make a webiste also with wordpress

#

site will be used for stats etc

#

updates, news and much more

#

i also managed to host a website on my home ip address, using home server, so i decided to use everything locally

#

the issue is now to get a static ip address from my inet provider

#

because that dynamic changes oftenly , and the clients will not be able to connect to the new ip address

nocturne quail
#

can be used for web hosting, game hosting and more

twin juniper
twin juniper
nocturne quail
twin juniper
#

since the IP of your server is known for everyone on your website, and that IP is the same as yours..

nocturne quail
#

you can use openvpn to protect it

twin juniper
#

that might work idk

nocturne quail
twin juniper
nocturne quail
#

else your site will down if the ip is not working

woven basin
#

You can use Cloudflare tunnel and reverse proxy it. Best of both worlds. But probably also getting off topic now.

#

Itโ€™s free

sinful tree
twin juniper
#

but if you do that missty, will you be able to do other thing with your server?

rain condor
#

I forget to send it

nocturne quail
sinful tree
twin juniper
nocturne quail
#

firewall to stop ddos

#

i am already reading tons of articles on this today

twin juniper
#

but then your webstuff would work but not other stuff (games)

nocturne quail
#

in which case?

twin juniper
#

if your server do other stuff than web

rain condor
sinful tree
nocturne quail
#

use multiple ports, and this is where openvpn comes helpfull

true stream
#

Supposedly simple question I cant figure out, how do I communicate between players? as in, I just need to send an action to another player, this action is probably just a string. I tried using replicated events but I dont think it works.

twin juniper
#

wut

nocturne quail
lost inlet
#

who the hell are Cloudline

twin juniper
sinful tree
# twin juniper if your server do other stuff than web

Computers can multitask and can run multiple server executables at once. If you're intending on hosting hundreds or thousands of people, you probably want to look at some dedicated hosting rather than using your own computer at home. For testing or your own small-scale use, a standard home PC can most often suffice.

lost inlet
#

so some old discontinued rack server

nocturne quail
#

yeah they are cheap and functional

twin juniper
sinful tree
lost inlet
#

buying a rack server for some low traffic stuff seems overkill

twin juniper
#

not low traffic stuff (could be)

lost inlet
#

how much bandwidth do you think a web server uses

lost inlet
#

and how many visitors are you anticipating to your site

sinful tree
#

You can host your own website on a raspberry pi...

lost inlet
#

yeah. if it's all static content you can just host it for precisely $0 on github pages

#

that's low traffic

twin juniper
lost inlet
#

?

#

static content is something like a blog or a portfolio website

twin juniper
#

I want to store info on my server, would it work?

lost inlet
#

what kind of info

twin juniper
woeful ferry
#

Host a mp server on github pages dayumsunglasses

magic vessel
#

Or host with something like heroku

sinful tree
# rain condor So wh i have to called it?

So here's the thing.... Rather than destroying and recreating the widgets for all your slots each time you want to update them, you could actually tell your slot widgets which index of your inventory array they care about. So if you were to bind within them, when they receive the signal you could have them read their index of your inventory array and refresh themselves.

magic vessel
#

You also have Playfab which might be a better fit

#

It's really dependent on what data exactly you want to store, who you want to be able to mutate/read/delete it, how much control you have

lost inlet
sinful tree
#

Don't use Unreal's networking system. Instead keep the gamestate updated on GitHub. Have clients constantly ping the github for the state.

lost inlet
#

but if you really want to get into it, Unreal has a HTTP client

#

you might see people who definitely don't know what they're doing trying to integrate an SQL client library into Unreal

twin juniper
#

so what would I do? buy a server and put the web stuff and the data getting there?

magic vessel
#

I personally use MongoDB as a simple backend for room codes, with a heroku hosted nodejs API with UE's VaRest plugin to communicate

#

Not even buy a server, could just rent it as needed

lost inlet
twin juniper
lost inlet
#

you need a server application written in .NET/Node/PHP/whatever that implements some API that your game client can call

#

how did you calculate that

magic vessel
#

I was going to say, multiple TB for 1K visits/day seems excessive

#

you should start with a smaller server that can scale

twin juniper
lost inlet
#

delightfully vague again

twin juniper
#

pictures are going to be stored, meanjing that it's pretty big

magic vessel
#

If you want to go through the headache of Imgur API, you could use that. This way, rather than store the images directly, you store the URL to the image on Imgur

twin juniper
#

I'm already doing that for videos, doing that for pictures would make my website fail

sinful tree
#

20TB is like 2.5 million 32-bit 1080p images.

#

I don't think you'll be curating that.

twin juniper
sinful tree
#

So a few kilobytes each

#

(if that)

twin juniper
#

yee

sinful tree
#

Perspective... If you stored a lot of information about a single player, 10KB is quite a bit of data... 20TB would allow you to have player data for 1/3 of the world's population.

twin juniper
sinful tree
#

Again.... 2.5 MILLION images.

#

Assuming you had even 1k people uploading a single photo every day, that would take you 2500 days to fill. 2500 days = 6.8 years.

pure hearth
pure hearth
#

Why that much amount of images?

twin juniper
pure hearth
#

Theory: what if you compress them but also gotta decompress reallyyy fast

sinful tree
#

It's just that Cat isn't doing the math needed to properly estimate usage needs. They researched a bit on google and found suggestions to have 20TB of storage - I'm just trying to give them some perspective of how many images that actually is.

#

And yea I'm talking like uncompressed 32bit 1080p images.

#

Could jam even more in if really needed, but that's not the point - it's more that it's a rediculous amount of space to begin with.

twin juniper
#

how would it impact storage when compressed

pure hearth
lost inlet
#

I wouldn't roll my own image hosting site/API if I didn't know what I was doing

pure hearth
twin juniper
lost inlet
#

well at least learn the basics of web hosting, REST, serverside technologies like ASP.NET/Node, and the HTTP client API that exists inside Unreal

#

you don't have to be handling images to figure that out

twin juniper
#

.NET is a complete other language tho

lost inlet
#

C# is yes, Node is Javascript

#

you're very seldom going to be writing a backend in C++

twin juniper
#

are these complicate language?

#

like 1 week and I know it?

lost inlet
#

more than a week but no

#

but you have to know the concepts of what makes up a REST API

twin juniper
lost inlet
#

what

twin juniper
#

like a singletone

#

so I need to learn about .NET and JavaScript, what about HTML and Java?

lost inlet
#

where did you get Java from

#

there are serverside frameworks for Java

#

you pick one

twin juniper
#

because apparenty, C++ is not a good backend

lost inlet
#

HTML yeah if you're actually making a website

#

but yeah since you have no idea on even the basics then I would suggest starting extremely simple

twin juniper
thin stratus
#

It may come to your surprise that C++ can not be used for everything.

twin juniper
lost inlet
#

lol

#

and you want to host 20TB of images

twin juniper
thin stratus
#

Fun fact, image hosting is so damn expensive that Discord stopped doing that.

#

At least on a permanent basis

lost inlet
#

this is basic stuff, learning about HTML and how web servers work

twin juniper
#

depends for who ig

lost inlet
#

you will need to know it if you want to implement any kind of game backend

twin juniper
#

what servers would you recommand me to start with? (under 800$ & 1TB min)

thin stratus
#

wdym with servers then?

sinful tree
# twin juniper you would suggest me then to use imgur? it's for learning and making money purpo...

You don't make money by spending money, especially frivolously. You can always start small, and if doing well, scale up as needed (hard drives are usually one of the easiest things to upgrade in a computer). If you get to the point of needing tons of storage space and you require better hosting, then it's time to move away from using a home server, and by that point you should already be making enough money to support said hosting. If not, then there's likely something wrong with your business model.

There's even more to consider if you're actually trying to make a business-class server run on your home network:

  1. Power Outages (A UPS can cover this, which is more $$$)
  2. Internet Outages (No hosting while your internet is down at home)
  3. Power costs (A computer running 24/7 even a lower energy one can still run up like $0.20 per day or $6/month easily).
  4. Network security (you're hosting on your home network, someone with enough know-how can get in, and could potentially really mess with you and your "business").
  5. Computer Maintenance / Updates (Sometimes hardware can fail)
  6. RAIDing your drives for redundancy (you're gunna lose everything without backups! RAID is the way to offset this problem, but that effectively cuts down your total amount of available space)
thin stratus
#

Like websites you can host at?

true stream
#

will spam again since sages are present, sending message (string) to another player, cant make replicated events to work, any ideas.

thin stratus
#

Share code, otherwise can't help

true stream
twin juniper
#

so when he comes back, he doesn't lose his things

sinful tree
# true stream

Space bar only triggers locally, and running on owning client on the player controller would only run on the client that pressed the spacebar.

thin stratus
true stream
thin stratus
#

If you don't use PlayFab (which costs money of course) you still need to rent a (possibly multiple) server to actually run the backend and database on.

#

Which still costs money

#

How much? No clue. Compute cost and storage are wildly different in cost

twin juniper
sinful tree
thin stratus
#

Also no one really gets physical servers anymore now-a-days. You rent a cloud one.

#

The upkeep cost and problems of having your own physical server are just not worth it

twin juniper
sinful tree
#

(Which is what I was pointing out)

true stream
thin stratus
#

There is no path here that won't cost you money

#

If you don't have the money, choose a different project

lost inlet
#

an on-prem server costs money

sinful tree
#

For small scale and testing, a home computer is fine. Scaling it up for business use means you get it hosted by someone else.

lost inlet
#

and you still have running costs from internet and electricity

thin stratus
#

Even your own physical server costs money. The storage costs money to buy, the hardware in general does too. The power cost is also expensive.

twin juniper
thin stratus
#

And then the bandwidth that your network needs to have to even handle the data

lost inlet
#

well if you have a consumer ISP then they'll probably get mad at you for hosting a web server

sinful tree
thin stratus
#

Consumer ISPs are traditionally not allowing business hosted servers

#

That is absolutely correct

lost inlet
#

so then you'll have to upgrade to a business ISP

twin juniper
#

20$/month, for 1TB

thin stratus
#

For people that can't afford much at the start, it's best to either simply not do it, or to use a service that scales for you

twin juniper
#

so I'd have 1 year free for google cloud

thin stratus
#

It will be pricier in the end, but cheaper at the start

twin juniper
#

ok thx for everyone's help, I'll learn new languages!

#

btw, I want a physical server just to learn things on my own and be able to actually see why it works or not and fix it by myslef, that's how I learn...

thin stratus
#

Yeah but that server will cost you in hardware

#

And the ISP limitation may still apply

lost inlet
#

a cloud/VPS server doesn't stop you from finding out why things go wrong

#

unless there are physical issues with the server, but that's not really relevant for software development side of things

true stream
thin stratus
#

If all you care about is that, host the Server locally or use listen servers I guess

true stream
#

is using listen servers like the old P2P models from the past

lost inlet
#

yes but not really p2p

#

there still a host

true stream
#

so less hackable

thin stratus
#

The host can still hack

twin juniper
lost inlet
#

you might still see "p2p" though because Steam and EOS allow you to use their p2p service essentially as a NAT punchthrough

thin stratus
#

If you don't want cheaters, then DediServer, but you can host it locally for now.
Matchmaking, however, if you mean the traditional Fortnite, OW, CS matchmaking, requires a backend and more to handle though and then the S erver would ultimately need to sit on something that spins up and down servers on demand

#

And at that point I'm not sure abut the free tier anymore, especially if you would need to code said matchmaking system and backend yourself first

true stream
twin juniper
#

Does fornite use Dedicated server? (I'm curious)

thin stratus
#

The simplest matchmaking is a ServerList provided by something like EGS or Steam.

#

With pre-hosted Servers

thin stratus
#

If you want Servers to be spun up for matches that are requested, you are back at what I just explained.

twin juniper
#

@lost inlet sorry for the ping but you told me to learn about JavaScript, does that include JSON files?

thin stratus
#

JSON files are unrelated to JavaScript. You should possibly learn about them either way.

lost inlet
#

though Javascript is not my first choice, JSON is used by almost every REST API out there as a data format

true stream
#

I thought it was replaced by YAML

thin stratus
#

The truth is that once you learned JavaScript, you will be bombarded with people telling you to learn TypeScript

#

And then the next best blog post tells you that Go is way better

#

Choose your poison I guess

lost inlet
#

C#

twin juniper
#

which is front end? (C# + .NET + HTML)

thin stratus
#

C# can be used to create Backend stuff, but also Frontends

worn light
#

Hello I want to know that how can i make lobby host on dedicated servers. Like I have seen many video's on YouTube which make lobby system but they use play as listen server. In which they first create the session and then the lobby works but in dedicated server there is no need to create session so i wanted to know that in that scenario how will the client become a host and be able to invite players to his lobby and also able to start the match

worthy oak
#

if your talking something like fortnite

#

you have a party, invite players to party then all join the same server on a team

worn light
#

Yeah like in pubg Or cod

worthy oak
#

yeah that would be a party system

worn light
#

So the client is on server?

#

So every player who starts the game has created a personal dedicated server for him to invite players to his party?

#

Is it like that?

worthy oak
#

no

#

steam has a party system

#

perhaps look there if you are wanting steam

#

but it will depend on your subsystem

worn light
#

No I'm not wanting steam that's the main problem

worthy oak
#

what are you using?

worn light
#

Also I wanna first test my party/lobby system of how it works in unreal engine play as a client

worn light
sinful tree
#

You want to use some kind of online subsystem that has a lobby/party system built into it. You get the clients together that want to play first using those online subsystems, and then when they're ready you'd launch a dedicated server for them to connect to.

worthy oak
#

well thats the thing it would be a custom system

#

if your not using one built in

sinful tree
#

There's no connection of the clients to a game server before the game server is launched.

worn light
#

My project is for mobile so I'm not sure if steam gonna work on mobile or not

worthy oak
#

it will not

worn light
#

Hmm that is it

sinful tree
#

The online subsystem sends out messages to anyone "subscribed" to the particular lobby, and those clients can then display the data of the lobby locally.

worn light
#

Does aws has its own party system?

worthy oak
#

you would have to build it

#

so the short answer is no

worn light
worn light
sinful tree
worn light
#

What system or how does they are able to. Make a party system on Android

worthy oak
worn light
#

I have found that EOS can be worked on Android games

#

I'll try that now

quasi tide
thin stratus
#

And I mean that, it's not fun. xD

quasi tide
#

It isn't and that's primarily why I haven't put much time into doing my company's site ๐Ÿ˜…

#

But this is the world we live in.

#

Nothin' stopping you from just using HTML/CSS/JS raw though

thin stratus
#

I learned so many frameworks in the past 5 or so years. All of them were just not fun to use or had serious draw-backs

#

Latest one was Avalonia for the frontend

quasi tide
#

I'd only use that for desktop personally

thin stratus
#

Yeah speaking generally platform frameworks, not just webdev

#

I think for WebDev I mostly used plain old React

#

May it be good or not, there are so many hard fronts on what stuff is good and bad on the net, it's not even worth engaging such discussions

quasi tide
#

All I can say is that I've been fairly satisfied with Blazor thus far. Has been more enjoyable than other frameworks I've used.

thin stratus
#

It's best to just use what works for one-self. The only really bad thing about all of this is that if you wanna find some tutorials or guidelines, you'll find 100 different opinions and none of them is really good or bad.

chrome quest
#

Anyone with knowledge of UE replication internals? I want to know how UE detects value changes for replicated variables.

Does it poll all replicated variables for value changes every frame or is there some other change detection mechanism?

quasi tide
#

It polls AFAIK

#

End of each frame it checks I believe

chrome quest
#

Ohh okay, I guessed as much. Thanks

thin stratus
#

In C++ (not sure about BPs), you can opt into PushBased replication, where you mark the property dirty when setting it, so the Engine doesn#t need to figure this out itself.
That's only relevant for the "figure out" part though. The frequency stuff remains.

ancient adder
#

By figure out you mean if anything changed in the struct/variable?

thin stratus
#

Yeah

chrome quest
#

Alright. I've got it now. Thanks

thin stratus
lament flax
frail sentinel
#

I am having some difficulties debugging a RepNotify delay I experience on the client. I am using blueprints.
Here is the sequence of events and description of the issue:

  1. Local PlayerController calls a Server Event that sets PlayerState.IsReady = true.
  2. PlayerState.OnRep_IsReady() triggers (via event dispatcher) GameMode to set GameState.AllPlayersReady = true.
  3. PlayerState.OnRep_IsReady() triggers (via event dispatcher) PlayerStateWidget to update the player state ready icon.
  4. GameState.OnRep_AllPlayersReady() triggers (via event dispatcher) GameStateWidget to update the all players ready icon.

The problem is that the GameStateWidget updates almost a second earlier than the PlayerStateWidget.
This means that GameState.OnRep_AllPlayersReady() gets called before PlayerState.OnRep_IsReady(), which doesn't make sense to me.

thin stratus
sinful tree
#

Also, not really necessary to have the GameState replicate AllPlayersReady anyway. You can loop through the playerarray from the gamestate and check locally when you receive the PlayerState OnRep.

frail sentinel
frail sentinel
thin stratus
#

Keep mind that it's theoretically way easier to replicate the EndTimestamp of a Timer once, and letting everyone calculate the remaining time themselves.

#

That more or less requires a somewhat more accurate NetSynced Clock, but the default Time works for most applications that are just visual

sinful tree
#

These change how often per second it's checking.
The downside is that PlayerState is always relevant, so increasing the frequency can be detrimental to network performance if used on a PlayerState that will be used in the game. Though it does look like you can change this at runtime too.

lament cloak
#

I'm really confused, it seems like none of the options in the networking section of the Character Movement Component are smoothening out corrections. I just want to prevent a larger correction from being so jarring.

So I tried doing it manually but not much luck so far. What I did manually:

void ULPlayerCharacterMovementComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction)
{
    Super::TickComponent(DeltaTime, TickType, ThisTickFunction);

    if (CharacterOwner && CharacterOwner->IsLocallyControlled())
    {
        SmoothAdjustOwnerMesh(DeltaTime);
    }
}

void ULPlayerCharacterMovementComponent::ClientAdjustPosition_Implementation(float TimeStamp, FVector NewLoc, FVector NewVel, UPrimitiveComponent* NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, uint8 ServerMovementMode, TOptional<FRotator> OptionalRotation)
{
    if (CharacterOwner)
    {
        if (USkeletalMeshComponent* Mesh = CharacterOwner->GetMesh())
        {
            const FVector MeshLocationBefore = Mesh->GetComponentLocation();
            Super::ClientAdjustPosition_Implementation(TimeStamp, NewLoc, NewVel, NewBase, NewBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode, OptionalRotation);

            // move the mesh back to where it was before the adjustment
            Mesh->SetWorldLocation(MeshLocationBefore);
        }
    }
}

void ULPlayerCharacterMovementComponent::SmoothAdjustOwnerMesh(float DeltaTime)
{
    if (CharacterOwner)
    {
        if (USkeletalMeshComponent* Mesh = CharacterOwner->GetMesh())
        {
            const FVector RelativePos = Mesh->GetRelativeLocation();
            if (RelativePos.IsNearlyZero() == false)
            {
                Mesh->SetRelativeLocation(FMath::VInterpTo(RelativePos, FVector::ZeroVector, DeltaTime, 5.0f));
            }
        }
    }
}```
#

Any pointers?

#

And by large correction we're talking about half a meter

#

I'm a little surprised my "solution" isn't working, I've done this plenty of times when building my own character movement in other engines. So I'm not sure if I'm tired or missing some specific Unreal thing.

#

It's my understanding ClientAdjustPosition() is where reconciliation happens.

So I figure, cache the mesh position before moving. Then, I expect it to have moved (world) when calling Super. So I want to move it back. I assume when I do that, it's relative position is no longer at zero, and then over time lerp it's relative position back to zero.

#

But it causes crazy jitter, so I must be fighting with some other mechanic

lament cloak
#

Seems like the relative smoothness is working as expected, I think the problematic area is. This is jerking in the direction the character is moving.

const FVector MeshLocationBefore = Mesh->GetComponentLocation();
Super::ClientAdjustPosition_Implementation(TimeStamp, NewLoc, NewVel, NewBase, NewBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode, OptionalRotation);

// move the mesh back to where it was before the adjustment
Mesh->SetWorldLocation(MeshLocationBefore);
chrome quest
split siren
#

What is the deal with Iris? I have been really hyped about sending data to clients on another thread, but there hasn't been any commit to IrisCore for more than 2 months.
Does anybody know when/if Iris is coming in more friendly way to people who don't have access to the UDN documentation?

hollow eagle
#

Err, what does that have to do with sending data on another thread

#

Iris threading isn't about exposing RPCs or other operations to other threads, it's about paralellizing the process of figuring out what needs to be sent and serialization after that data has already been set.

#

I guess if you constructed your own custom fragments and didn't rely on UObjects it might be possible but I don't think that's their target, nor is there any documentation anywhere about it.

split siren
hollow eagle
#

In theory it does something like that (though not how you described), yes.

#

But that is different from sending data yourself on different threads

#

the point is iris' own processing of data (and part of custom serialization) can be threaded, not that your data is.

hollow bear
split siren
hollow eagle
#

and iris is already way faster than the old netdriver

#

without even threading anything

split siren
hollow eagle
#

most user-facing code needs no changes to use iris

#

aside from relevancy and prioritization, which are almost strictly incompatible with the old system (with a few shims for the basic only relevant to owner and cull distance options).
Also custom serialization which requires writing serializers in a very different way, but most uses for custom serialization are unnecessary in iris.

split siren
#

I have read that several times, sadly it doesn't go too much in depth.
Do you know by any chance if "FastPath" from RepGraph is also present in Iris?

hollow eagle
#

repgraph doesn't exist in iris whatsoever

split siren
#

I meant just the concept of it. I see a lot of stuff like the spatial prioritisation, limiters. etc taken from RepGraph. (Probably "taken from" is not right term, but they share the same concepts)

mystic estuary
#

Hello, if I have a replicated UObject, are its BP properties going to replicate as well? Its C++ properties are replicating correctly, but the BP ones are not replicating at all

hollow eagle
mystic estuary
#

nvm I should do this

virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override
    {
        // Add any Blueprint properties
        // This is not required if you do not want the class to be "Blueprintable"
        if (const UBlueprintGeneratedClass* BPClass = Cast<UBlueprintGeneratedClass>(GetClass()))
        {
            BPClass->GetLifetimeBlueprintReplicationList(OutLifetimeProps);
        }
    }
nocturne quail
#

how much Ram is recommended to run a Dedicated Linux Server?

ripe ravine
#

Im new to multiplayer, I dont know how to replicate properly

#

I thought this worked but clients dont see the crouch being replicated properly

#

server sees everything fine

lament cloak
lament cloak
#

and thats likely more than it needs

lament cloak
#

Also, for Server->Client communication for something like this, I recommend instead using a replicated property IsCrouched, then have an OnRep. I am not super familiar with Blueprints but should be possible.

ripe ravine
#

Im not sure what an OnRep is

lament cloak
ripe ravine
#

Oh Thank you

gleaming crest
#

Hey, im currently confused about gamemode/playercontroller/.... between lobby and game. Maybe someone already made his/her mind up about this problem and can help ^^

Option A)
Use the same classes for both and care about splitting the functionality inside each class

Option B)
Use different playercontroller, but keep things like playerstate/gamestate to keep track of settings from the lobby

Option C)
Make seperate versions for all such classes and manage passing data somewhere else

Mainly confused because I saw multiple gamemodes in one tutorial, while the multiplayer compendium says gamemode+all controllers are persistent by default (why not the states instead where the info is stored?)

split siren
# chrome quest I have another quick question. Does the replication system store a list of the l...

A bit late, but reading though the Iris code I found where exactly this is happening. Or at least where is the buffer.

 /** 
 * ReplicationState created at runtime using a descriptor built from existing reflection data
 * StateBuffer contains storage for all properties described by the descriptor,
 * When polling data from the source object properties we will compare the value with what we have stored in the statebuffer
 * and mark the member as dirty.if the value differs
 *
 * Polling is quite expensive but we only do it once per update of the replication system
 */

The buffer itself is in FPropertyReplicationState-> uint8* StateBuffer
Hope this helps, even though it's Iris

#

This exists for every connection

shrewd spindle
#

In general, how difficult is it to transition a dedicated server project built in the Games Store version of Editor to a compiled version to start building and testing? I don't want to go through the process of compiling from source yet, as I'm still learning, but I don't want to get neck deep in something I like and then have to spend weeks moving the project over to a compiled editor. I imagine it's as simple as just opening the project in the compiled editor, but I'd like to be sure...

neon summit
fossil spoke
#

So to answer your question directly, you shouldnt have much if any trouble.

neon summit
#

I'm curious of the same but converting a launcher version to source unreal build?

#

The project has barely anything in it but would moving the assets to the source version just be copying and pasting?

woven basin
fossil spoke
#

The Engine is separate to your project

#

You dont need to copy anything

woven basin
#

Itโ€™s instant if youโ€™ve compiled the engine.

fossil spoke
#

Just open the Project in the new Engine

neon summit
#

Ah okay thanks.

graceful steeple
#

Hi, I am having a problem in MAC, when I run the build-cook-package command, the project builds successfully, but when I open the Server or the client, I get LogPluginErrors:
For server it is: Unable to load plugin 'variantmanagercontent'
For client it is: Unable to load plugin 'RigVM'

can someone help me understand where the problem could be?

Thank you

latent heart
#

Have you checked those plugins to see if Mac is on their allowed list?

#

Open the uplugin files and have a look.

graceful steeple
#

Iโ€™m a bit new to this, can you tell me where can I find this ?

latent heart
#

It'll be a .uplugin file in the engine directory somewhere.

#

Probably rigvm.uplugin and variantmanagercontent.uplugin

graceful steeple
#

Iโ€™ll check now there, Iโ€™ve checked in the unreal editor and both these plugins are checked

latent heart
#

Doesn't mean they will build/work on mac.

#

If you're using them on mac right now, then maybe you're fine! I don't know.

#

Yeah, never mind, it's not a uplugin issue.

graceful steeple
#

Oh

#

So what could be the problem do you know

latent heart
graceful steeple
#

Thank you!

worthy portal
#

Hi! Is it fine to broadcast delegates on a client from the server via RPCs? Or there could be a better way of doing such things?

latent heart
#

XY problem right there. What are you trying to do?

nova wasp
#

there's nothing wrong with having an RPC trigger a delegate other things can listen to, plenty of stuff that does effectively just that

#

although the question definitely looks like "why would you need to ask if it's okay to do that? what are you actually doing?"

worthy portal
# latent heart XY problem right there. What are you trying to do?

So i have a main HUD widget, which contains a child "death panel" widget. I want to set up a system that will pop-up this panel and set its content (killer name, weapon name, etc.) when player dies, and fade out after respawn. I thought that delegates are a good way to do this

worthy portal
nova wasp
#

like a kill-feed kind of thing?

latent heart
#

So, to be clear, when the server detects a player has died, you want the server to tell the dead player who killed them and with what?

latent heart
#

You could use an RPC for that, yup.

#

If you want that kill feed to go out to everyone, a multicast one is fine.

#

It's one of those few cases were multicasts are probably a good approach.

worthy portal
#

No, only for the player that died

latent heart
#

Then, sure, just use an rpc.

#

The alternative is to set a value on the player's pawn or player state. Then use an OnRep to trigger the hud element.

worthy portal
#

Ah, i guess rpcs will work fine. Thank you very much guys!

nocturne quail
#

running: sudo apt install lib32gcc1 steamcmd givies me this error

#

any idea whats wrong?

#

or which service i should be restarting?

ripe ravine
ripe ravine
#

How does RepNotify work, like how can I tell if its firing

#

never used them before

sinful tree
#

Put a print string in the generated OnRep function or look for the behavior that you programmed into it.

neon summit
#

Bp debugger or print string. When you set a variable to repnotify it creates a function that runs on server and clients

#

But only called if the value changes from what it was before.

ripe ravine
#

I found it, thank you very much

ripe ravine
ripe ravine
#

I made a video showing whats happening. The server sees everyone fine, but all the clients see crouch walking wierdly including on the server

#

The red text is an OnRep notify

#

Im not sure why it calls true 5 times (4 clients and 1 server)

#

When I have 2 players it calls 3 (2 clients and 1 server)

woven basin
#

where is this occuring? just get the client to run the same line locally

neon summit
# ripe ravine

You're setting a replicated variable on a multicast. Just set on server and do the crouch function in the on rep

ripe ravine
#

I think I got it all figured out, no more errors

#

It runs on the server and the client, and instead of using Unreals crouch I just slowed down the player and gave them the crouch animation

#

But thank you very much for the help, I still dont fully understand how or why it works

dark wing
#

Can anyone confirm if Replicated variables will be replicated once all replicated actors are spawned on client side?

hollow eagle
#

Not sure what you mean.

latent heart
#

They won't.

dark wing
hollow eagle
#

no

dark wing
#

Actor then its data?

hollow eagle
#

also no

dark wing
#

then?

icy jetty
#

Data and actor?

hollow eagle
#

no

icy jetty
#

Ran out of combinations I think

hollow eagle
#

there is no guarantee when replicated properties are received (outside of InitialOnly which can only come with the initial bunch)

#

there's no specific time when you've received all replicated properties

#

that's an impossibility - properties can be constantly changing, there's no way to guarantee when you've received all of them.

dark wing
#

What about race conditions?
If inventory data is replicated before the actors?

hollow eagle
#

you can't receive properties for an object you don't know about

#

that data would simply get dropped, and likely resent later. Though it's unlikely the server would even send you data for an actor you know nothing about.

dark wing
#

I'm sending Actor pointers for each item in the handbar, they are all spawned

frozen brook
#

I've been trying to learn multiplayer code a little bit better so I'm doing some test mechanics, and my character jitters a lot on local clients while changing the direction of their velocity (Server doesn't jitter, and they don't look like they're jittering to eachother.)

#

I assumed it had something to do with the network smoothing mode, but when I tried setting it to linear/disabled I saw no difference so any info on why this might be happening would be appreciated!

neon summit
#

Why setting bool on server and not be replicated?

#

Would be better if you had enhanced input too then wouldn't need tick

frozen brook
#

Oh it's just a test. I was trying to figure out sending input across network, but then I saw the jittering & didn't understand why that'd happen from enabling/disabling a bool.

modest crater
# frozen brook I assumed it had something to do with the network smoothing mode, but when I tri...

it has to do with unreals networking setup for the cmc, it uses FSavedMove snapshots of clients information to replay it on other clients, you get issues when you have something that is modifying the movement input but isnt being saved and replayed so you end up with desync on clients and servers.

You need to look into either A how to change to the already existing flying mode or B look into custom movement modes in order to replicate state appropriately

neon summit
#

And probably should be multicasting the force

modest crater
neon summit
#

Also probably true

frozen brook
modest crater
# frozen brook I see! I thought I had fixed it by running the same logic on the local client's ...

I havent but I do intend to use it for my project very soon. I think they both have their cons, mainly cmc is older but tested and mover is still experimental (even though I heard its fine from someone using it, just need to change a few ini values) with less info on it.

On Youtube there is a guy by the name of delgoodie, he has a nice intro series to extending the cmc an proving a new movement mode (its c++ if that doesn't bother you, you will need to learn it eventually)

split siren
#

I am reading the source for Iris and I don't understand what is the point of having more than one replication system object instanced?
There is a hardcoded limit of 16, what benefit would it bring to have more than 1?

enum ReplicationSystemConstants : uint32
{
    MaxReplicationSystemCount = 16,
};
glad sparrow
#

How can I get ragdoll poses and positions to sync?

chilly haven
#

If we want to use EOS, should we use Online Subsystem EOS? It is marked as beta.

marble skiff
#

I am developing a MOBA game (5v5 or more) in Unreal Engine and considering using the Unreal Iris and Replication Graph plugins. My game's replication requirements include abilities, attributes, and other similar objects. Are these plugins recommended for my project? How well do they handle the specific replication needs of a MOBA game?

split siren
thorn musk
#

I have a function in my GameMode that I want to call as soon as the player is joined. At the moment everything is working normally with the host, but not really with the clients. If I want to call a function then it only works with a delay of 3 seconds between OnPostLogin and the function itself, when the delay is connected everything works normally. But of course it could be in the future that the 3 seconds are not enough. I have also tried it in the Beginplay function of the controller, but that also only works after 3 seconds. How do you deal with such errors?

woven basin
#

Use OnPossess

tardy fossil
#

Iris seems pretty neat, but i saw a message in this channel the other day saying it doesn't do custom struct serialization.. is that true?

split siren
#

Aka, just replicate your own USTRUCT or some advanced serialisation of them?

tardy fossil
#

custom serialization with a struct that contains NetSerialize

woven basin
#

I vageuly remember, I think it was Snaps, saying it was difficult to use or something, dont recall them saying it wasnt possible though

tardy fossil
#

oh it seems i misremembered.. it was Siliex but he said it requires writing them in a very different way

#

not that they dont work

split siren
# tardy fossil custom serialization with a struct that contains NetSerialize

So I did this for testing

USTRUCT(BlueprintType)
struct FMySimpleStruct
{
    GENERATED_BODY()

public:
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "SimpleStruct")
    float MyFloat;

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "SimpleStruct")
    FString MyString;

    // Custom network serialization method
    bool NetSerialize(FArchive& Ar, UPackageMap* Map, bool& bOutSuccess)
    {
        FString TempString = FString("Custom_") + MyString;
        float TempFloat = MyFloat + 1000.0f;

        if (Ar.IsSaving())
        {
            Ar << TempFloat;
            Ar <<  TempString;
        }
        else {
            Ar << MyFloat;
            Ar << MyString;
        }

        bOutSuccess = true;
        return true;
    }
};

And getting

LogIris: Warning: Generating descriptor for struct MySimpleStruct that has custom serialization.

and client receives it without the modifications in the NetSerialize.
Two options, I have messed up the NetSerialize or Iris actually ignores custom serialization.

tardy fossil
#

so yea they are just different

split siren
#

Speaking of Iris, I have been in debugger last couple of days and I still can't figure out the official way to create and register custom stuff, such as Filters.
Does anybody know how to create and use custom components, such as filters?

I got to

+FilterConfigs=(ClassName=/Script/Engine.Actor, DynamicFilterName=None))
+FilterConfigs=(ClassName=/Script/Engine.Pawn, DynamicFilterName=Spatial))

But where do I map the "None" and "Spatial" to actual UNetObjectFilter is beyond me.

inland timber
#

In the level editor I can set my net mode to Listen Server and have multiple clients playing the game simultaneously. If I were to package the game and run the client executable, how would I get those clients playing together?

eternal dune
#

In a standalone or listen server window I can F8, click on an object, and inspect its properties while the game is running. Is there any way to do that for an object in a second player's window though? I'm trying to debug replication problems and would like to inspect the object from the viewpoint of a remote player rather than from the server

shrewd spindle
#

Can you build a dedicated server game that has a standalone play option?

eternal dune
#

That doesn't really make sense since the definitions of the two things are mutually exclusive. What you would want to do instead is the package your game two different ways: one as a standalone game (that I assume you would also have support hosted sessions for multiplayer) and a second package as a dedicated server.

split siren
inland timber
#

I'm sure I could make a new build target for a dedi, but I'm more curious as to the underlying commands. Basically, what is the level editor doing that I am not?

shrewd spindle
#

Maybe just including the server in the package to run on owning machine for solo play, so if they want offline they run their own local server

eternal dune
#

If you just want to have 3 player coop I don't see why you would even want to set up a dedicated server in the first place. Just use the built it ability to host a session that other players can join

#

In that mode the game runs both as server and a client for the local player at the same time

shrewd spindle
#

Offline mode's main intention is just aim practice.

inland timber
split siren
eternal dune
#

Well strictly speaking each client uses it's own choice of outgoing port, but I don't think that's whats Zeph means. Maybe?

#

Generalizing on my question above #multiplayer message what are good techniques for debugging replication issues in general?

inland timber
#

I am not aware of the level editor having any sort of reverse proxy set up, so I'm assuming there's some way it keeps track of what client is doing what.

split siren
eternal dune
#

What is replication graph?

#

Is that a plugin or something built in?

split siren
eternal dune
#

I see. I've heard of Iris and seen references to it the source but haven't seen any docs on it so have been ignoring it for now

split siren
hollow eagle
split siren
#

It has all of the functions exposed, but not the class itself, which is pretty weird to me as it is meant to be subclassed no?

hollow eagle
#

Only if you want to make a custom filter

#

there's already a built-in spatial filter

#

and generally you don't want to make custom filters if you can help it - they are very complicated.

split siren
#

I want to create a team-based filter, the same one that would be team-node in RepGraph

hollow eagle
#

netgroups often fill the gap for stuff not needing spatial filters

#

yeah you wouldn't use a filter for that

#

you'd use a group

#

Look at UReplicationSystem - search for "exclusionfilter" and "inclusionfilter"

#

you can create groups to include/exclude objects from connections on the fly

split siren
hollow eagle
#

you should not be subclassing any of that

#

you can create/update/whatever groups from wherever you want

split siren
#

And for a custom Filter I would rewrite the UNetObjectFilter source to expose it, but avoid it as much as possible. I will give the groups a try, hopefully I will have more luck than with filters

#

So by default (without rewriting code)
[/Script/IrisCore.NetObjectPrioritizerDefinitions] is useless right?

#

(apart the 2 defaut ones)

hollow eagle
#

unless you want to write your own prioritizer. There are more than the default ones available too.

split siren
hollow eagle
#

to add MinimalAPI to it

#

yes

split siren
# hollow eagle yes

Thanks, much clearer now. Any idea why would they not expose it? Seems like Prioritizers and Filters are meant to be written custom for game itself.

hollow eagle
#

because they didn't think about it

#

there are a ton of classes in the engine that are missing MinimalAPI that should have it.

#

but for most use-cases the existing prioritizers and filters are good enough

latent heart
#

So I've got a strange problem. I'm changing the pawn I'm possessing, works perfectly fine on the server, but the client (who actually starts to use the new pawn) doesn't get OnRep_Controller called and the Pawn's controller in AcknowledgePosession is always null. It's odd.

The even stranger thing is that I have a log line in OnRep_Controller and it does get fired when the client connects. But never again. Any ideas?

thin stratus
#

Changing as in going from one Pawn to another runtime?

latent heart
#

Correct. Right now it's just in PIE (With run under 1 process turned off)

#

The pawn sent to acknowledge possession is correct, but the pawn, during that call, has no controller assigned.

#

And the OnRep_Controller for that pawn is never fired. Ever.

#

It is fired once for the original pawn on connection. But re-possessing it again doesn't cause it to fire.

#

I'm thinking now it may be some kind of ownership issue because the pawn's controller is replicated before the ownership is changed or somehing.

thin stratus
#

Wasn't there some weird setup where Epic sets some Variables for Controller or Pawn from 2 different places, potentially causing the OnRep to not call cause it's already been set locally?

latent heart
#

Maybe...

#

Right now I'm testing a tick on the PC to detect pawn changes like a first time UE coder.

thin stratus
#

Maybe they fixed that

#

They have a huge comment about that

#
if ( (Controller != nullptr) && (Controller->GetPawn() == nullptr) )
    {
        // This ensures that AController::OnRep_Pawn is called. Since we cant ensure replication order of APawn::Controller and AController::Pawn,
        // if APawn::Controller is repped first, it will set AController::Pawn locally. When AController::Pawn is repped, the rep value will not
        // be different from the just set local value, and OnRep_Pawn will not be called. This can cause problems if OnRep_Pawn does anything important.
        //
        // It would be better to never ever set replicated properties locally, but this is pretty core in the gameplay framework and I think there are
        // lots of assumptions made in the code base that the Pawn and Controller will always be linked both ways.
        Controller->SetPawnFromRep(this); 
#

But that's the other way round, it was OnRep_Pawn not calling

#

I mean, one could have just NOT set the damn Pawn from the OnRep_Controller

#

But I guess this is a solution too

thin stratus
latent heart
#

Oh I didn't know about that one!

#

I'll add a log.

#

Yeah that seems to fire.

#

But not when the controller is reset to null ๐Ÿ˜›

#

Which I suppose isn't too important right now.

twin juniper
#

isn't that just normally coding

latent heart
#

Somebody who is coding in UE for the first time...

twin juniper
#

Why unreal hasn't fixed this? :c

thin stratus
#

Cause "fixing" it is not ideal. Not supporting TMaps is by design.

twin juniper
#

I see

#

whats wrong with tmaps?

#

just curious

thin stratus
#

It's not straight forward to replicate them efficiently

#

It's easier to replicate an array of a structs for example as an alternative

twin juniper
#

Alright

#

Last thing

#

nvm

#

Thanks

split siren
lethal peak
#

Quick question. I'm a blueprint dev working on my first multiplayer game. Anyone know good solutions for rollback or prediction, specifically for locomotion/combat? I've been looking at GMC, but Mover 2.0 looks promising. I've also heard good things about using Lyra as a base, but I've also heard a lot of horror stories about trying to convert Lyra into something like an RPG or Action Combat game.

split siren
meager spade
#

@split siren multiple rep systems ?

#

Didn't know that was a thing

split siren
meager spade
#

Interesting

split siren
meager spade
#

And what's the default

#

16?

split siren
# meager spade 16?

Yeah, its 16 by default. Everything is coded so one can create multiple Rep systems dynamically.

meager spade
#

I know there is a few replication systems like you have different channels

split siren
#

No idea why

lethal peak
# split siren GAS is usually the recommended way and it comes with some prediction as well. It...

Yeah, I've been wanting to use GAS and just set up a fork of the game I'm working on using it. My issue is that I'm adding a lot of custom movements like dodges, 2x forms of crouch, prone, etc and the current CMC doesn't handle that stuff or very time sensitive attacks well. I'm wondering if I should stick with GAS or build a custom ability system and use GMC for locomotion and movement.

meager spade
#

@lethal peak the current cmc can handle that. But time sensitive stuff is a thing unreal is not really suitable for in base form. Mover 2.0 will have fixed timestep with physics simulation. Can't comment on paid plugins

#

Mover is super early in dev though

split siren
#

I don't have experience with Mover though

meager spade
#

What sort of game needs time sensitive stuff

lethal peak
meager spade
#

Mover helps a bit but the api ATM is still a bit wonky and constantly changing.

#

But is a lot simpler than cmc if you haven't done anything like that with cmc

split siren
meager spade
#

If you use mover you want to make sure your always pulling from main.

#

Problem with cmc is its rigidity

#

Mover solves this by allowing layered moves and stuff

#

Allowing a lot more flexibility

weak linden
# lethal peak Thats the thing. I know enough CPP to be dangerous and code myself into a corner...

If you've a preference for BP, this video tutorial from a friend of mine showcases a BP only solution for network predicted movement.
https://www.youtube.com/watch?v=Kt0fwYADit4

Episode 3 is here!! In this tutorial, we take a look at a way to create network-predicted code entirely in Blueprints. Sounds impossible, you say? Well, thanks to a plugin from Reddy-dev, and a bit of backend knowledge, we can get something pretty great up and running in no time!

Project Source Files
https://github.com/PixelatedChaos/CMC_Tutor...

โ–ถ Play video
lethal peak
#

Do you think CMC is capable enough to handle things like Dark Souls style blocks and parry's over multiplayer as well as replicated prone, stealth, and climbing without a ton of CPP?

meager spade
#

Blocks and parry are part of the ability not specifically movement.

split siren
meager spade
#

No just the mover plugin

quiet fjord
#

Guys, I'm trying to do the server travel when I already deploy my dedicated server with gamelift and in UE5 it doesn't work and if in UE4, why is it?

meager spade
#

Not the entire engine.

#

We keep ours in sync with main

#

Ofc we run tests before we push to our working branch

split siren
#

Oh gotcha, misunderstood, mb

weak linden
meager spade
#

Darksouls uses havok engine does it not ?

split siren
weak linden
#

Yes

meager spade
#

Iirc that engine has nice physics stuff never used it just from what I heard

#

I think you can get havok physics for unreal also

#

I was looking at its navigation system

lethal peak
thin stratus
#

We are using NPP + Mover heavily. Won't solve the GAS problem though.

#

Also for FixedTick you gotta pull SirKai's PR/changes, otherwise you lack the smoothing of the AutonomounsProxy and for corrections.

#

And in theory also for SimProxies on ListenServer I guess.

split siren
meager spade
#

Npp is what there using for mover

split siren
#

Damn, I need to give Mover a try after Iris stop making me cry

thin stratus
#

Let's just say it's all pretty experimental with slow progress

#

But they are working on it and SirKais PR is def helping

fossil veldt
#

i am honestly super skeptical they will stay with NPP