#multiplayer

1 messages Β· Page 567 of 1

bitter oriole
#

Yes

#

You need two machines with two Steam accounts

#

Which is why you should develop sessions using the NULL OSS

#

And then test Steam when that's working fine

naive shell
#

makes sense tbh

#
DefaultPlatformService=Null ```
#

It works

bitter oriole
#

So your issue is just the Steam account thing

naive shell
#

Basically

#

Sorry for wasting your timeFeelsBanMan

strong vapor
#

i dont think people view helping someone sort out a problem a waste of time

bitter oriole
#

I only waste my time here when I tell people they won't sell 100,000 copies

#

πŸ˜‚

blissful gust
#

hi guys, I have an issue: I have a multiplayer plugin that sync correctly when I run with Play on Selected Viewport but it does not sync when I export the game or run as Standalone. Do you have any idea? Am I missing something? The session is created, client is joined I can see both users but this component is not syncing

empty matrix
#

What's up guys, how's it going? How can I make a multiplayer map rotation system?

naive shell
#

@bitter oriole now ip connect also works, I setted up the project for both options

bitter oriole
#

Of course IP connect means you aren't using sessions

naive shell
#

Yeah sure, before I package the game and send it to my friend, I should replace null with steam right?

bitter oriole
#

Sure

naive shell
#

Noice

glacial burrow
#

Hello everyone. This might be a bit general to ask, but i am not native with unreal so i am piecing together the informations i can find:
Unreal can run as an authorian server in a headless mode only displaying a log, or a couple of logs ? πŸ™‚

unkempt tiger
#

Question, suppose I have a class hierarchy of AK47 :: AutomaticRifle :: Firearm :: Weapon, and suppose to each of them corresponds a weapon state (containing the data necessary to make the weapon function), also with the hierarchy: AK47State :: AutomaticRifleState :: FirarmState :: WeaponState.

(For example AK47State holds IsSafetyPinToggled, AutomaticRifleState holds IsOnAutoFireMode, FirearmState holds AmmoCount, and WeaponState holds IsEquipped)

What is the recommended method of, given an AK47 instance, net serializing its state, so that it also automatically contains and serializes all the data of its parent states, so that I only have to write the net serializing of each state's data members once (for each state struct), and so that I only have to write the WeaponState net serialization once?

naive shell
#

@bitter oriole ive managed to get two packaged games to play in a multiplayer listen server, but when I sent a build to my frined he could join 😦

twin juniper
#

any articles or something about the upcoming network prediction plugin? trying to read up on it

vivid prawn
#

Hi Folks, I have a question, in GameMode on PostLogin Event => Player Controller Object Reference => Player State gives a different PlayerID every time I load a different map, how can I get consistent unique PlayerID?

low helm
#

@vivid prawn Might depend which online subsystem you're using?

vivid prawn
#

@low helm for local game

#

as in multiple people play the same game in one machine

#

I try doing the same game method, but that's for the local machine, i want to specify a separate user with separate settings and scores, but when I change the map all the user's playerID are different.

timid moss
#

Has anyone ever noticed before that OnComponentEndOverlap() event get called earlier on the server?

strong vapor
#

@low helm save the information you want on the GameInstance

#

make a GameInstance child class and change it in the game mode

#

GameInstance persists from the moment you start the program till you kill it

wicked nimbus
#

If I am connected to a dedicated server using a Game Session, can I open/create a party session while connected? And then move my whole party to a different server?

blissful gust
#

guys, how it works the steam subsystem? so when I create the session the host is the player, right? And does he need to open the ports when creates the server? Steam subsystem saves the ip,port of the host in their servers?

bitter oriole
#

Sessions and actual multiplayer are not closely linked

#

Usually, you do create a session for the host player, have the client discover that session by searching through friends or a list of games

#

And then the client joins that session

#

No ports required on Steam

blissful gust
#

I see, thx

#

does Online Epic Games services works on steam too? including friends for example? In case I would like to publish the game in both platforms

bitter oriole
#

EOS competes with Steam

#

Not familiar with how EOS accounts can link a Steam account

#

Though I'd suggest releasing on Steam first and see later if Epic wants to buy your game

blissful gust
#

oki, is not easy to publish indie games on Epic I suppose

#

thanks @bitter oriole πŸ˜„ how do you know so much about networking? do you know good resources for learning?

bitter oriole
#

It's "get Epic to sign an exclusivity deal with you" easy

chrome bay
#

Expect 10x the workload of an offline game tbh

bitter oriole
#

And I don't know that much, but basically learn the main tools : replication, RPCs, sessions ; and expect a lot of work to get it working, especially if you're trying things like physics or vehicles

vivid prawn
#

@strong vapor yeah, but the moment changing map, the controller will have different PlayerID in its Player Status right, so how can I know the information belong to which controller?

chrome bay
#

Use the players' FUniqueNetID to identify them

#

You can grab that from their PlayerState, or from the OSS

vivid prawn
#

@chrome bay Awesome, that's what I'm looking for. thanks alot πŸ™

glacial burrow
#

Hey guys and girls πŸ™‚
Can anyone help me to clear up some questions that came up? Im just getting into UE4 for its multiplayer options so i might be a bit of a noob.

#

I cant wrap my head around how the dedicated server works, i heard its an authorian server ... but how does it know what functions to handle on his end and what functions the client can control, or does the server do everything, even opening up UI elements ?

vivid prawn
chrome bay
#

I would ignore dedicated servers for now, the principles are not much different to a player-hosted (listen) servers

#

Best thing to do is study the content samples from Epic (ShooterGame if you're comfortable in C++), and/or just experiment with a simple project.

#

+1 for the compendium. Epics official MP tutorials are not great last I heard, but the content samples cover it.

woeful ferry
#

Hi,

What is the reason for not being able to make a blueprint child of a C++ Actor component?

winged badger
#

i heard something about replicated array of PlayerControllers in the GameMode in one of those Epic official MP tutorials @chrome bay

chrome bay
#

πŸ™‚ πŸ”«

#

@woeful ferry Mark the UCLASS as Blueprintable

#

Then you can subclass it

woeful ferry
#

@chrome bay Thank you πŸ˜„

chrome bay
#

(Though I thought that was the default)

winged badger
#

it is weird, i was unable to subclass UBoxComponent from BP, for one

#

at least around 4.15

#

had to make a c++ base just to add Blueprintable

chrome bay
#

da fuq :/

#

Oh hmm.. interestingly UActorComponent isn't marked as blueprintable either.. but you can definitely make BP classes of actor components

#

They must be doing something gross somewhere...

winged badger
#

you have the Meta = (BlueprintSpawnableComponent) bit

#

that is inherited

chrome bay
#

Ahhhh yeah maybe it's that

winged badger
#

i think

#

i find it simpler to create my classes from the editor

#

and all ActorComponents add that by default

chrome bay
#

yeah

glacial burrow
#

@vivid prawn thanks, i will take a look

woeful ferry
#

@chrome bay Sorry for asking again, where should I add it in this?

UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )

chrome bay
#

UCLASS(Blueprintable, etc...)

stray crescent
woeful ferry
#

@chrome bay Thanks πŸ˜„

zinc owl
#

Which One is better third party for multiplayer handling in ue4? Photon?? or other?? Like shooting game realtime....

chrome bay
#

None

#

Pretty much zero reason to use a third-party networking solution in UE4 unless you want to make life hard for yourself

#

And it's unnecessary, you can bank on the vast majority of UE games using UE's own networking.

bitter oriole
#

The only reason would be if your game has to connect to a non-UE4 game server. If you're doing a MMO with an UE4 client and a completely independent game engine on the server.

#

But then the network solution is the least of your concerns

naive shell
#

@bitter oriole im now buuilding the dedicated server and everything seems to be working fine, shows up in steam servers list so ok

rose egret
#

why I can't to connect to my UE4 server in my own pc by my public IP ? shouldn't it be possible ?

#

πŸ€”

chrome bay
#

depends. What OSS are you using

rose egret
#

I am connecting by direct IP

#

OSSNull

chrome bay
#

Should work fine then if you're using the null subsystem

#

I hear some routers etc. can be funny about that sort of thing though.

#

probably easier to just use localhost instead

rose egret
#

unfortunately I cant use localhost cause the matchmaker gives that IP to all the player. (i am using my own PC as dedicated server + client and other developers connect to me)

#

πŸ€”

#

I think it was working fine till yesterday

#

πŸ€”

near bison
#

Can someone tell me exactly what's happening when there's an input on a client?
Is it
a) client input -> call RPC (client to server) -> server moves actor -> server replicates to all clients including owning client
b) client input -> call RPC (client to server) -> owning client has moved on its own accord -> server replicates to all other clients excluding owning client as it has already moved)

#

I believe a) is server authoritative and b) is client authoritative.
Is a) the default? And is this correct?

rose egret
#

client moves the character locally and send the movement input and some extra data to server .
server verify and adjust the movement and send ack to the owning client to say hay your last move verified.
movement is replicated to other clients (simulated proxies ) normally by AActor.ReplicatedMovement and they simulate the movement.

#

its too complicated btw its just theory

near bison
#

@rose egret are you 100% sure that owning client moves the character locally without waiting for server replication?

rose egret
#

yes. that's the important part. otherwise you could see lag

near bison
#

Wait wait wait. This is specifically for character right?

chrome bay
#

This only applies to characters

near bison
#

like, ACharacter?

rose egret
#

yes

near bison
#

Yes exactly @chrome bay

chrome bay
#

For anything else, you'd have to do the networking yourself

near bison
#

don't tell me about ACharacter, I know it has client side prediction

chrome bay
#

And therein lies the rub

near bison
#

Is there no method to have an actor replicate locally first, and then RPC over to server? (and thereby serve replicating to all other clients)

chrome bay
#

nope

#

You have to do that

#

Client-Side prediction is only implemented for Characters in UE4

#

Anything else, you have to do yourself

near bison
#

I'm saying, I don't want client side prediction for my actor. I want client-authoritative

gleaming niche
#

why I can't to connect to my UE4 server in my own pc by my public IP ? shouldn't it be possible ?
@rose egret because you cannot connect to your public ip, from your public ip

#

your router doesn't know what to do.

#

lol

chrome bay
#

In which case, you need to RPC the actors transform to the Server, and have the local player ignore changes to Replicated movement

rose egret
#

@near bison what do you want to make ? ACharacter is enough for manythings . you can use its Fly, Swim movement mode for drone and things like that

near bison
#

@chrome bay why is it so convoluted?
Because I know for a fact that Fortnite is using client authoritative for their vehicles

naive shell
#

If I packaged the game and server and both works as intented with sessions, and I can see the server in steam server browser. The chances of my friend being able to join are high?

near bison
#

@rose egret i want to make a vehicle that's replicated

chrome bay
#

That's how Fortnite does vehicles

#

Send input and transform to server

#

server runs physics in between updates based on the received input

near bison
#

That's great! @chrome bay. Precisely what I'm looking for. Does Epic have any resources for how they did it?

chrome bay
#

No, but it's pretty easy

near bison
#

server runs physics in between updates based on the received input
@chrome bay Could you elaborate more on this?

chrome bay
#
  • Send Player Input and Physics State to server after physics has run. Do it unreliably.
  • Server uses the last-received client input to continue it's own local simulation, but adopts the client state when it gets it.
#

Ignoring Server-Side updates for replicated movement on the local vehicle is easy, assuming the player has "possesed" the vehicle

#

All you need to do is uncheck "bReplicatePhysicsToAutonomousProxy" on the skeletal mesh

#

Key thing to remember is that the server won't get a steady stream of packets from the client, which is why you send input to it, so that it can try to fill in the gaps.

#

I also take it a step further and replicate the input to clients as well, so that they can do the same, and also because I need it to drive FX and sounds.

near bison
#

Replicate owning client's inputs to all other clients?

#

Key thing to remember is that the server won't get a steady stream of packets from the client, which is why you send input to it, so that it can try to fill in the gaps.
@chrome bay What's the mechanism for filling in these gaps? How exactly do you know you have to fill in the gap if you don't know when and where a packet has dropped?

chrome bay
#

Yes to Q1

#

And well it's simple really, the server is still running the physics simulation even if it's not receiving packets

#

So you just make sure that it's using the last-received input from the client to simulate with.

#

It's essentially free extrapolation

#

The engines built-in physics replication will do it's best to smooth updates on the clients

near bison
#

This...this sounds great honestly.

#

How is Fortnite preventing cheating?

chrome bay
#

That's the million dollar question

near bison
#

They're doing input/physics state sanitization?

chrome bay
#

They won't tell us

#

Probably at the very minimum yeah

#

Nn idea what else they do

#

No game company shares the ins and outs of it's anti-cheat for obvious reasons

near bison
#
  • Send Player Input and Physics State to server after physics has run. Do it unreliably.
  • Server uses the last-received client input to continue it's own local simulation, but adopts the client state when it gets it.
    @chrome bay By the way what do you mean by sending Physics State? Location/Rotation/Acceleration vectors?
chrome bay
#

Loc/Rot and velocities

#

So three FVectors and a Rotator normally

#
  • whatever is required to drive the input of the simulation
near bison
#

how feasible do you think is it to handle physics which is server authoritative?

chrome bay
#

impossible

near bison
#

I meddled around for like a few days and lost interest lol

chrome bay
#

Total waste of time unless you're prepared to cope with the huge input lag

near bison
#

Impossible but RL is somehow doing it

chrome bay
#

RL?

near bison
#

is it because they've managed to make bullet physics engine somewhat deterministic?

#

Rocket League

chrome bay
#

Oh

#

No it's because they can afford to rewind and replay their entire physics scene

#

Which, if you can afford to do it is fine

#

But for anything more than a handful of physics objects or vehicles it doesn't scale.

near bison
#

No it's because they can afford to rewind and replay their entire physics scene
@chrome bay But how?

chrome bay
#

They have a talk on it, but the general gist is that they save the entire physics scene state into a buffer, then as the server gets packets from clients, it resimulates the whole physics scene with the updated input. I believe clients do the same.

near bison
#

I mean my question is: How come ACharacter is rewindable and replayable compared to physics objects? Isn't ACharacter movement also based off a primitive physics simulation?

#

That's very tightly bound such that it's rewindable

chrome bay
#

Because ACharacter is kinematic

#

not a physics sim

#

it's not part of the physics scene

#

Which is also why it's interaction with physics objects is horrible

gleaming niche
#

Ie: physics objects just stop dead when colliding with character capsule

chrome bay
#

Chaos has a rewind API and the new network prediction system is going to interop with that, so the future is bright at least

#

But no indication as to how well it scales etc. yet in the real world

near bison
#

Sorry one more dumb question: What does kinematic mean in the context of movement in games?

chrome bay
waxen socket
#

Dave Ratti said this to me on Youtube last week:

"We are still making progress but its never a straight path. I'm doing ground work on NP root motion / character movement while the physics team works on their end. Things will come together. Hopefully I can make a new video soon but my youtube career is low priority, relatively speaking πŸ™‚"

chrome bay
#

Kinematic means it's not a physics object, you set the transform explicitly. It isn't integrated by the physics engine with all other physics bodies.

#

Character Movement is basically it's own internal simulation that ultimately just sets the position and rotation of the character

#

But as far as the physics engine is concerned, it's an immovable capsule with infinite mass

near bison
#

Got you. This was great

#

Cleared up a lot of my queries!

chrome bay
#

np's

#

Legit in the middle of writing a post on it all πŸ˜„

near bison
#

That's great! Please do share. This stuff is pretty scarce on the internet lol

#

I think it's because Unreal does such a great job with replication of ACharacter, so it's all abstracted away

chrome bay
#

Yeah definitely

#

It's a bit of a shocker for most people when they realise it doesn't just work for anything

near bison
#

But yeah, this was insanely productive. Thanks so much, and do share your article!

I'll get to work on a client authoritative physics object and see how far I can make it

chrome bay
#

Np's

#

Yeah client auth is not too bad, and it looks "okay" for the most part

#

Definitely workable

#

Just need some basic sanity checks

twin juniper
#

Hey I need help with my ue4 multiplayer

#

I have replicated but now I don't know how will I be able to see whether the it's online or not

#

I can see the changes on the screen but how to make online multiplayer I have only replicate till now

rich ridge
#

@twin juniper Please go to multiplayer settings and turn off Run Under Single Process.

signal lance
#

Server authoritative physics are definitely possible, approach RL uses is great, it solves most of the collision issues that come with client side prediction. On a larger project there is no need to simulate the whole physics scene and every single objects, only the objects that are relevant (there is a possibility of interacting with) could be moved to a temporary physics scene to simulate, Physx immediate mode is also worth taking a look at. Nondeterministic nature of Physx can easily be covered up with a good smoothing algorithm and fixed timestep.

twin juniper
#

It now

chrome bay
#

PhysX is for the most part deterministic enough, the real problem is the semi-fixed timestep. That's not going away until Chaos arrives. I've messed with approaches using intermediate mode, spooling up additional scenes etc, but it's far too complicated to be viable most of the time and doesn't scale very well.

#

The rewind API for Chaos will help a lot though, since it essentially handles the issue of replaying group of objects

signal lance
#

yeah I'm very curious about Chaos built in support for rewinding

#

Multiple scene approach currently "works" but it can get complex

chrome bay
#

Yeah definitely not easy to do

near bison
#

A question is also: why would RL bother with server authoritative if they can do client authoritative with validation?

#

And then maybe build an anti cheat

chrome bay
#

I guess because ultimately you can only take validation so far

#

But also because it's a game that needs to be highly responsive

twin juniper
#

that network prediction plugin is huge

chrome bay
#

yeah it's mega. Even the non-physics stuff is an epic improvement over the current stuff

#

all in master branch too if people are feeling brave

near bison
#

Why would client authoritative not be highly responsive? Won't it technically be better

twin juniper
#

really want to see how performant it is. say 100 or so physics objects being resimulated

chrome bay
#

@near bison I guess the other issue is stuff like the ball, you'd constantly be seeing corrections as the ball veers off in different directions

#

Probably not a good fit for a game that's highly competitive like that too

near bison
#

Server authoritative physics are definitely possible, approach RL uses is great, it solves most of the collision issues that come with client side prediction. On a larger project there is no need to simulate the whole physics scene and every single objects, only the objects that are relevant (there is a possibility of interacting with) could be moved to a temporary physics scene to simulate, Physx immediate mode is also worth taking a look at. Nondeterministic nature of Physx can be easily be covered up with a good smoothing algorithm and fixed timestep.
@signal lance do you mean "issues with client authoritative" and not "client side prediction"? Because what RL is using is client side prediction

signal lance
#

I mean client side prediction, with client side prediction one of the most difficult things to solve are collisions and RL approach of rewinding and replaying the whole physics scene solves that

near bison
#

By fixed timestep you mean fixed tickrate right?

chrome bay
#

yeah, Chaos will support that too

#

(finally)

novel hemlock
#

Is there something to convert a client side to server side actor? I will explain better, in a rts the player will choose were to place the building that will probably be client side, when he choose the place the server will create the actual building but then there will be 2.
Is there a built in way or I do it manually by spawning one and once its replicated i delete the client side one?

chrome bay
#

Well you never spawn it client side.

#

You tell the Server to spawn it, then the client receives it via normal replication.

novel hemlock
#

Yes but its a waste

#

the player could stop the building

#

while if the calculation are done client side i think its better

chrome bay
#

That's up to the Server to decide

novel hemlock
#

I mean, I have my checks client side for everything

#

also server side

chrome bay
#

If you want to spawn a network-relevant actor, it must be spawned server-side

#

There's no way around that

novel hemlock
#

but save data

#

Alright

chrome bay
#

And something as significant as placing a building or something should definitely be handled by the Server ultimately

signal lance
#

I heard quite a few reports that Chaos is in the current state around 5x slower than physx if not more, that's a bit worrying
Hopefully that won't be the case when it because fully production ready
The rigid body solver

novel hemlock
#

Ultimately is the goal but not from the beginning

chrome bay
#

You can still do checks client-side, so that you don't pointlessly ask the server to build something you know you can't build.

novel hemlock
#

You can still do checks client-side, so that you don't pointlessly ask the server to build something you know you can't build.
@chrome bay Yup but I want to spawn the building anyway with a green or red material

#

depending if they can build

chrome bay
#

Sure, you might have a preview on the client

#

But that wouldn't be the actual building object

novel hemlock
#

exactly

chrome bay
#

That's how we do it in HLL anyway

#

Client shows a "ghost" actor as a preview and runs all the building checks, then they ask the server to build it.

#

Server runs the same checks, and the actor is either spawned or it isn't

#

99% of the time it is, and the object appears on the client a bit later

novel hemlock
#

Definitly what im looking for but, is there anyway to somehow "wire" the two client and server buildings? Or do i need a RPC call like "Client_OnBuildingSpawned"

chrome bay
#

You don't need to do you?

novel hemlock
#

to make it more automatic, idk if that makes sense

chrome bay
#

All you need to do is say to the server "pls spawn this"

#

and where to spawn it

#

Then the spawned actor is just a replicated actor

novel hemlock
#

but you need to remove yours

#

(client side)

signal lance
#

you never spawn one on the client in the first place

novel hemlock
#

How do you make a ghost building then'

signal lance
#

just have a preview

chrome bay
#

Once the client asks the server to spawn, they just kill the ghost there and then

signal lance
#

spawn 1 for the preview and you could potentially reuse it by hiding it when requesting the server to spawn the real one

novel hemlock
#

Once the client asks the server to spawn, they just kill the ghost there and then
@chrome bay Dont you wait for a response? It might look weird with a bigger latency? idk

chrome bay
#

Nah, works fine

#

Small degree of latency before the real thing appears but it's usually acceptable

signal lance
#

no one is really gonna care about 0.1 seconds delay

novel hemlock
#

I will try without any response

#

ty

#

no one is really gonna care about 0.1 seconds delay
@signal lance 0.1 in the best case

signal lance
#

that's 100ms

novel hemlock
#

i know

chrome bay
#

You can come up with some system that marks the ghost with an ID, and the server notifies the client if that particular spawn request fails

signal lance
#

which is considered already "high" latency, actually the roundtrip time would be 0.2 then

novel hemlock
#

Well i cant expect a 5k ping latency to play the game decently anyway

chrome bay
#

But it's a lot of hassle to hide a tiny gap πŸ˜„

novel hemlock
#

i guess thats the way

#

You can come up with some system that marks the ghost with an ID, and the server notifies the client if that particular spawn request fails
@chrome bay I will try that one depending on the result, thanks

near bison
#

I see bigger problems @novel hemlock

Seems like you're overoptimizing

#

For no real gain

novel hemlock
#

I see bigger problems @novel hemlock

Seems like you're overoptimizing
@near bison Considering you have the replicate also the movement and everything to maybe not even build it

#

and its net code

#

i think its fine

meager spade
#

Fortnite for example (from what i can see playing it), the build is not instant (you feel a slight delay), but your preview is instant.

rich ridge
#

@meager spade can you explain i detail what do you mean by instant preview??

meager spade
#

its like a Ghost wall (Preview Actor)

#

of the shape

#

then when you click to place, it tells the server spawn me this item

#

there is a delay before you see your actual wall tho

rich ridge
#

YES AND I ALWAYS DIE BECAUSE OF DELAY

#

by the time i place walls someone snipes me

kindred widget
#

You can't move in Fortnite when placing things?

meager spade
#

yeh you can

#

oops

#

thats the preview obvs that is instant

#

here is with 280 ping

#

you can see the delay in building

rich ridge
#

Yes this is significant lag

meager spade
#

then with my normal 20ish ping

#

you can see how much more better it is

bronze summit
meager spade
#

NOOO TURN OF HOT RELOAD!

#

also use should use int32 or uint8 not int in RPC

#

and where are you changing the movement speed on the client?

bronze summit
#

Yeah but that shouldnt be the issue of it right?

#

Just under the RPC server call

meager spade
#

so client calls SetMovementSpeed

#

then the RPC runs and also calls it?

bronze summit
#

yes but on server

meager spade
#

so where is client setting it?

#

ah

#

i see in the sprint function

bronze summit
meager spade
#

yeah i missed it my bad πŸ˜„

#

and have you printed the result

#

of the speed?

#

both on client and server?

bronze summit
#

hmmm good one

#

Let me check

#

And why disable hot reload i dont even know what it does lmao

meager spade
#

don't use the compile button in the editor

#

unless you want corrupted blueprints πŸ˜„

#

btw that is 100 percent correction

#

where client is moving different speed to server

#

and be corrected back

bronze summit
#

Yeah it looks like some rubberbanding and authority correcting it

meager spade
#

that is what it is

#

bring up the console

#

and type p.NetShowCorrections 1

#

and it will draw any corrections

bronze summit
#

As i can see now the corrections only happen on state change

meager spade
#

right which means your speeds are not synced

bronze summit
#

Yeah but it only happens once

meager spade
#

try using a break point

#

and see if that function actually gets called

#

ah it does in your video

#

you probably need to compile, close the editor, compile and reload the editor

fossil zinc
#

Hello guys, I'm trying to create a LAN session and creaty it successfully. Once I Look for it (Find session) it finds a not valid session. Any ideas why?

bronze summit
#

@meager spade im starting to think it is something else... The jitter exists before the state has changed on the server

meager spade
#

do you change the speed at all?

#

or have you changed any settings

#

in the CMC?

#

or do you have the skeletal mesh set to replicated?

#

if you set the mesh to replicated then turn that off.

bronze summit
#

I kind off took the out of the box character provided by UE

#

Will look at that

meager spade
#

check Component Replicates on the skeletal mesh

bronze summit
meager spade
#

of the player

#

and is that called on both server and client?

bronze summit
#

yes because i believe MaxWalkSpeed is not replicated

meager spade
#

its not

#

did you check the replication of the skeletal mesh?

#

cause a lot of people turn it on, and get this kinda behaviour

bronze summit
meager spade
#

ok good, we can rule that out

#

open your char blueprint

#

grab the tick node

#

and print the maxwalkspeed from the movement component

#

so you have something like this

#

and see if server version matches the client version

#

when printed

bronze summit
#

yeah i've got it but the values seem replicated

#

600 on jog and 900 on sprint

meager spade
#

is the value the same?

#

both server and client

bronze summit
#

yup

meager spade
#

ok we can rule that out then

#

can you reproduce in a empty project and send me?

#

so i can take a look

bronze summit
#

Will take some time tho

#

Its so weird tho I had fixed this before and now its back somehow

#

Could it be possible a UE engine upgrade may have caused this?

meager spade
#

doubt it

#

we haven't experienced it

bronze summit
#

I've found some info on the forums where some have the same exact issue, ill check those solutions out first

slow bluff
#

Hey, i'm trying to work on a VR Multiplayer game, how would i go about doing that?

#

I already have a character made with the motion controllers fully built in

steel vault
#

I would also like to know how to debug a multiplayer VR game when there is only one headset plugged into the PC and you play as a listen server with another client in the editor. Nothing seems to work correctly. Is this not possible?

#

As a separate question: How do you replicate a static mesh component's size? For instance, I have a projectile that dynamically changes sizes during flight. I tried setting a property on the projectile and replicating the size that way with an OnRep function that changes the actual size of the projectile, but that appears to be choppy and inconsistent. Is there a better way?

winged badger
#

you need to replicate the desired size

#

and interp to it on tick

#

replication does not happen every frame

steel vault
#

Smart. I have the desired size but I was sending back the current server size.

#

Thanks for the quick response

winged badger
#

anything that client knows to do itself

#

should not be replicated

steel vault
#

Well in that case, I would love to not show up an owned projectile on the client, but projectiles are replicated so it shows up

winged badger
#

so if the client has all the information to figure out what size the projectile should be

#

then you shouldn't replicate anything

steel vault
#

I would rather just do the client spawning and launching the projectile

#

But how does the server know about other player projectiles?

meager spade
#

you need to spawn it on the server to replicate it

steel vault
#

Ok so I need the server to still own the projectile but sizing of it can be done locally

winged badger
#

pretty much

meager spade
#

well depends if other clients know what to size it too

#

that is all down to your code

#

if you set all that stuff when you spawn the projectile, then let the clients handle it all locally

winged badger
#

basically, handle locally everything you can get away with

#

and never, ever, replicate the same information twice

steel vault
#

Ok so if my projectile size is based on a timer then I could just hand back that event or timer and start doing local changes?

meager spade
#

you cant replicate a timer

#

you just have the client set its own timer

steel vault
#

Right

winged badger
#

but it changes the size as soon as it spawns and starts flying, no?

#

in a predictable manner

steel vault
#

Yes

#

Very predictable

winged badger
#

so you can just start a timeline on BeginPlay

#

on every client separately

#

resize it from there

#

(assuming its BP, i would definitely nothandle timeline from c++)

steel vault
#

So I guess my question becomes: if the server spawns the projectile and it replicates back to the client owner, how does the client modify its size

#

It's C++

winged badger
#

all machines run BeginPlay

#

all instances

#

so projectile replicates to client, replicated variables are set, it calls BeginPlay

#

on BeginPlay, you start resizing it

#

how it resizes is basically a property of the class default object

#

so clients are very aware of the parameters

#

they run the same BeginPlay/Tick code

steel vault
#

Ok, so then my resize function must just not be working because I have it calling the same resize function on server as it does on client and server works fine but the client does not

#

I'll have to dig deeper then

winged badger
#

your clients is OnRep

#

from what i gathered

steel vault
#

I added an onrep variable to capture the server's size to replicate down to the client

winged badger
#

all you really need to do is something like, Tick

steel vault
#

Due to the fact that the client wasn't sizing it properly

winged badger
#

SetScale(UKismetMathLibrary::VInterpToConst(GetScale(), FinalScale, DeltaTime, ResizeSpeed);

#

and let it run on server and all clients

#

(pseudocode there)

#

FinalScale and ResizeSpeed being constants on the CDO

steel vault
#

Hmmm am I not able to run a timer on a client?

#

I'm wondering if that has something to do with it not working client side

#

Oh ok nevermind it is indeed working client side

#

It's the launch that I'm having issues with. Thanks for the help! I'll check back in if I have another issue with it

low helm
#

Doing what I'm not supposed to be doing - making a multiplayer RTS in UE4. Could use some help improving the bandwidth. Willing to pay a few hundred bucks for a working solution, more if significant time is involved. Watch the short video for a synopsis of the problem.

https://www.youtube.com/watch?v=qv7O9oYjMDU&feature=youtu.be

Movement updates overwhelmed in 3 player coop multiplayer RTS game, currently with non-dedicated servers. Testing with dedicated servers has yielded similar results.

β–Ά Play video
winged badger
#

@low helm dedicated or listen server, CMC for movement?

low helm
#

I'm hoping to do listen servers, though I have some experience setting up dedicated, I want this game to be very easy to maintain after release, so I'm hoping for clients to just host their own.

No character movement component, they are pawns with floating pawn movement, using the standard navigation system, a standard AIcontroller with behavior trees.

winged badger
#

no c++ by the looks of it, blueprint only

low helm
#

Yeah I don't know C++, I can read it alright but only because I've worked so much with BP

winged badger
#

there is more then one thing that can choke replication

#

server has a time limit on the CPU it can spend evaluating Actors for replication

#

btw, NetPriority 500 is crazy

low helm
#

yeah I know I got frustrated

winged badger
#

it would take a minute for a normal Actor to panic enough to get replicated with 300 of those Pawns running around

#

did you run a NetProfiler?

low helm
#

no, I just kinda assumed a netprofiler would tell me the problem I already knew and not the solution, I know the skipping is due to replicated movement being overwhelming. But you're right I'll be a good boy and go lookup how to do that.

winged badger
#

you don't know if you have a bandwidth problem, or you choked your CPU at this point

low helm
#

you sure? server game thread stays above 120

winged badger
#

doesn't matter, it still has a limit on how much time can be spent on evaluating Actors for replication

low helm
#

it kinda sounds like I should be looking for ways to extend the servers allowance for evaluting actors for replication....

winged badger
#

on listen servers, that is generally not a great idea

#

as they have to run the game client as well

#

and don't know what hardware are you using, but 120 FPS on gen 9 Ryzen CPU is not even 40 on a mid range gaming laptop

low helm
#

I will tell my players they just need to download more RAM. Or more accurately, the game SHOULD be pretty light weight beyond this particular concern.

winged badger
#

what do those pawns replicate except movement?

low helm
#

There is a health variable and a team color variable, that's it atm

#

I've tested this with dedicated server chosen and the problem was the same

winged badger
#

reconfiguring maximum bandwidth is easy

#

you just add a couple of lines in DefaultEngine.ini under OSS config

low helm
#

Ok?

winged badger
#
[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName=OnlineSubsystemSteam.SteamNetConnection
bNeverApplyNetworkEmulationSettings=true
MaxClientRate=25000
MaxInternetClientRate=25000
bClampListenServerTickRate=true
NetServerMaxTickRate=30
MaxNetTickRate=30
#

that is ours

low helm
#

Are those steam specific? I prefer to test through direct IP connection

winged badger
#

no

#

its OSS config

#

in our cast its Steam

#

*case

#

having a TeamManager handling the entire team's worth of replication might help

#

but

#

blueprints are a very significant limitation here

#

basically, making a struct inheriting from FFastArraySerializerItem with all the replicated data and a pointer to a single Pawn, and replicating those via FFastArraySErializer

#

none of those are available from BP

#

simple way to test that would be to run a 20 or so of your Pikeman as a single Pawn

low helm
#

So in that setup the pawns would Replicate but not Replicate Movement?

#

and this single actor would replicate all their movement

winged badger
#

its more complicated then that, Pawns wouldn't replicate at all

#

client would spawn them locally with a matching name, override of IsNameSupportedForNetworking would return true

#

so they remain NetAddresable

#

none of it is possible from BP

low helm
#

I see. Well you're welcome to build it for me if you think it'll make a big enough difference, I can't do that myself. Let me know if you're available and I can just send you the whole project. I pay with paypal.

The .ini changes didn't seem to do anything.

#

How do games like WC3 and SC handle unit replication, is it standard server authoritative?

dusty jackal
#

Hmm, hi, I'm just a random person along with TEA. We're trying to make a game and are fairly new to UE4, however...we've been trying to get along with multi user editting, though we've never got it to work no matter what we did.

violet tapir
#

πŸ‘πŸ‘πŸ‘Œ

winged badger
#

not familiar with how starcraft handles replication

foggy idol
#

Anyone good with math

#

Like really good

#

I wanna use line traces for bullets but I'm not sure how many parabolas or even how to go about it

#

I basically want bullet physics but with line traces

fossil spoke
#

Use a curve, sample the curve at different points to determine where you want to place the Traces, perform the traces to each consecutive point until you define a linear falloff. πŸ€·β€β™‚οΈ

#

The more samples, the more accurate the trajectory.

#

But the more expensive.

#

If your game is like CoD, i wouldnt bother doing complex trajectories. The sight lines are way way to small for it to be worth it.

agile lotus
#

Is there anyway to display Null subsystem sessions over net?

random nymph
#

Any idea what could be causing client controller replicatec character rotation to stutter when moving on a even slightly sloped surface? When moving on plane the rotation is perfectly smooth

random nymph
#

And for some reason looks like the rotation rate is a lot faster on sloped surface

#

Yeah just tested it with super slow rotation rate and when moving on slope the character rotates a lot faster and stutters πŸ€”

rose egret
#

is there anyway to launch a headless client ?
I wanna do some server test and I need lots of clients 100+ . each client is taking lots of CPU + Memory already

gleaming niche
#

-nullRHI

#

i think.

stray crescent
zenith wyvern
#

did you package youur game?

stray crescent
#

ya

zenith wyvern
#

actually i think im thinking of the listen server from package trick rather than dedicated

woeful ferry
#

Hi,

When I modify an array, my repnotify doesn't seem to fire.

#

if (InventoryInfo[i].Quantity == 0 && bFoundSlot) { InventoryInfo[i] = ItemToAdd; Success = true; return; }

plain musk
#

is spawning about 30 actors in a frame too many for a networked game?

woeful ferry
#

Depends how often

chrome bay
#

Depends on lots of other things too tbf

#

@woeful ferry If the array replicated?

#

Makes sure the client isn't modifying it, only the server should mess with replicated properties unless you know what you're doing

plain musk
#

haha. well i ask because i'm trying to do kind of like a dynamic fire wall kind of thing, where i do a line trace down to the ground, and if it hits, i spawn a 100x100 actor in that spot. i think at the biggest spot it's up to 32 individual pieces, but when i do it as a listen server, i hitch super hard when they spawn, and if i do it as a client, it takes about 2 seconds before they all come into existence, starting from like 2 instances and then multiplying until it's all 32

#

literally the only thing i'm doing is pressing a key to tell the server i want to use the ability, the server does the 32 line traces, and then spawns the 32 actors

#

and it's incredibly slow, but it doesn't seem like it should be

woeful ferry
#

@chrome bay The array is replicated and ran on server, however right now I'm only trying in singleplayer. And the documentation says it just runs on client, and if I play singleplayer I guess I have authority still and won't fire.

chrome bay
#

yeah they will probably take a while to arrive, def won't all come at the same time

#

Yeah that makes sense, rep notify will only fire when a var is actually replicated to a client

#

So it won't fire in standalone/offline

#

And it won't fire on the Server either

#

Blueprint rep notifies are stupid because they don't follow this

plain musk
#

i see... might be better to maybe do some kind of spreading outward effect to make up for not being able to receive that much info at once then

woeful ferry
#

So how would I go on about making it fire on the server too? I'm using listen server for our game.

plain musk
#

thanks for the help!

chrome bay
#

Just call it directly

#
OnRep_Array();```
#

I do that quite a lot

woeful ferry
#

I'll try and come back in a sec.

chrome bay
#

@plain musk The real trouble is you have no control over what order they arrive it so it'll be quite random

plain musk
#

yeah that's what i've noticed. it looks super patchy when they're coming through

chrome bay
#

You probably want to combine that into one actor instead of 32 unique ones

#

spawning actors isn't cheap, especially in online

plain musk
#

do you think it would be better to have a single actor spawn, let the server create collision boxes and then switch on authority and let the client create all the vfx? the client doesn't really need to know about the hitboxes, right? once they step in the server will tell them they're taking damage anyway

woeful ferry
#

@chrome bay Works like a charm! ^^

chrome bay
#

It's up to you really - but you want to have a few actors as possible and if you can represent that actor in one actor but with more components I'd go about it that way

#

It's hard to judge not knowing what the end result is meant to be ofc

plain musk
#

gotcha. i'll give that a go then. thanks for the insight!

chrome bay
#

(I'm assuming the components wouldn't be replicated btw also)

plain musk
#

i think i can get away with only replicating the actor and then letting everything else get generated without replication

chrome bay
#

What you may need to do is have the actor have all the components by default, then just disable the ones you don't want using a bitfield on the actor or something

#

If you need those components to be network-relevant or characters to walk on them for example

gaunt kestrel
#

hello, guys. where is the best place to insert DestroySession() for dedicated server?

#

right now it is in destructor of GameInstance

#

but i see what it have not enough time for sending request to online system

#

it need a little pause

chrome bay
#

If you want to shutdown cleanly you'd have to call DestroySession long before the game actually stops executing

#

And bind to the callback that confirms it was destroyed

#

All that being said - it's a dedicated server so it doesn't really matter does it?

gaunt kestrel
#

it should unregister in EOS

chrome bay
#

Not used EOS but surely it should timeout

gaunt kestrel
#

13 minutes timeout, yes

chrome bay
#

Bit of a fatal flaw if the server crashes and the OSS doesn't clean itself up

gaunt kestrel
#

and 13 minutes server is in the list of servers

#

not so good

chrome bay
#
    virtual void Shutdown();```
#

Destructor is going to be way too late either way

gaunt kestrel
#

okey, thanks, it could help

chrome bay
#

Shutdown might be reasonable, but no idea

#

Does EOS not allow you to set a lower timeout?

#

13-15 mins is crazy

gaunt kestrel
#

nope

chrome bay
#

urgh

winged badger
#

Dedi cant be shut down by user input

#

So you have some wiggle room

#

Not like it has to cleanup on alt+f4

gaunt kestrel
#

it could be shutdown in testing, by ctrl-c 😸

#

but you are right

soft shell
#

I've a strange issue I've just noticed.. remote players on machines with a low frame per second appear to have their pawn animated at the low fps.. Anyone any idea why this happens?

kindred widget
#

@soft shell By animated, do you mean skeletal mesh animation blueprint type animated?

soft shell
#

Yes, that's running the animations

kindred widget
#

Animblueprints should only update once a frame I think. So if they have low framerate, all animations should look choppy.

#

Or are you meaning that they look choppy on someone else's machine?

soft shell
#

My local machine is fast, 100+ fps and the remote (test) machine is 10fps.. When I look at the other players pawn from my machine, it's update looks like 10fps (not smooth)

kindred widget
#

Probably RPC calls that update the server's values that the faster machine uses. If one machine only changes their control rotation ten times a second, it'll only update on the server ten times a second.

soft shell
#

Yeah; but this is literally looking at the pawn idling.. I would expect the idle animation just to run regardless of any RPC's at the full frame rate of my machine, I've no idea how it's seems like it's running just simple idle animations at the frame rate of the other machine

kindred widget
#

Sounds like an anim blueprint design issue. You're not doing any networking in it, are you? You should only be pulling that client's information for that client's version of the pawn for that animation blueprint.

soft shell
#

There's nothing replicated in there; and the only time it really reaches out it to a pawn to get some information on what's being held (and that's just a get socket transform)

kindred widget
#

That's odd then. A simple idle animation on a 100 fps machine should play just fine at 100fps if the 10fps client isn't doing anything to cause the animation to play. You're polling the pawn for information, not sending information to the animblueprint?

soft shell
#

Yeah; the pawn registers a component with it (what's in the hand), then in the anim BP I just get a socket transform on that component..

kindred widget
#

Unsure then, that's definitely not normal behavior. I could have seen it if your slow client was moving their mouse and it looked choppy on the faster client. But even movement should be mostly smooth with the way the CMC works.

winged badger
#

We noticed the same problem

#

haven't had time to track it down yet

#

it probably has to do with CMC ticking the skeleton directly

#

(which it does)

soft shell
#

CMC is short for?

winged badger
#

character movement component

chrome bay
#

UCharacterMovementComponent::TickCharacterPose(); is the offender

#

It's done so that anim notifies etc. remain in sync with the network movement and such IIRC

winged badger
#

CMC is a black pit of despair 😦

soft shell
#

Ah, ok.. so it's just to be expected (and accepted?)

winged badger
#

we will force ours to behave, but you can't do it from blueprints

soft shell
#

Just move on and hope no players have that bad a machine (or turn down the graphics settings)

winged badger
#

can't declare that the game is on production level until you fix that

chrome bay
#

It's a bit odd that they didn't make it optional tbh... since I'm sure that's the only reason for it

#

Code comments btw:
// If not playing root motion, tick animations after physics. We do this here to keep events, notifies, states and transitions in sync with client updates.

winged badger
#

for us it will be easy fix, as we don't overly care for anim notifies being in sync

#

we use montages for pretty much everything

#

and they are in sync

kindred widget
#

To be fair, if your game is running at 10fps on a machine, it's probably not being ran on a machine for your target audience.

winged badger
#

there is always someone with a gaming laptop from 2004

#

that knows it won't perform well, but is going to try

#

problem is, others see the animation as choppy

#

so game looks like its not performing on other, high end machines as well

chrome bay
#

Yeah it's going to be affected by how often the server is receiving those packets from the client too..

#

Can't wait to see the back of character movement...

winged badger
#

and when everything is smooth except that one guy with laggy animations

#

you can't really see anything except that animation while you're playing

#

it stands out, badly

#

so you can't dismiss it, you have to fix it

chrome bay
#

yeah.. I actually don't know why we don't have this issue now

kindred widget
#

Actually. Speaking of FPS networking stuff. Do either of you know how to force the editor to keep it's FPS up while you're running a second window not in the same process?

#

Since the editor kills it's framerate when it's not focus in any window.

winged badger
#

should be an option for that somewhere

#

but i don't know

chrome bay
#

Yeah it's in the editor settings somewhere

kindred widget
#

Ah, there we go, that's why I couldn't find it. Was looking for FPS or Framerate. "Use less CPU when in Background"

soft shell
#

Nice find, kinda need that myself

kindred widget
#

@soft shell Ah. Thanks to Jambax I at least found the reason I haven't noticed this til now. This issue only applies to the character's default skeletalmesh, which on my character is only owner see(So only the slow client would see it). the mesh others see is a separate component. If you add a separate skeletalmeshcomponent to your character, the animation issue goes away, but the movement is still a bit jumpy.

soft shell
#

Ah interesting! Thanks for the insite

chrome bay
#

The default "Mesh" property in characters is the one you should use for third-person perspective as that's the one that has the positional smoothing etc and such

#

the First-person mesh like arms or something would be a different property

#

Usually the FPP mesh is moved to just project out from the camera too

#

take a look at ShooterGame for the setup

bitter oriole
#

Speaking of seamless travel, is there any way on a client to delay it - to play an animation or something ?

soft shell
#

It's a problem I've to "fix too"; my clients get in too early and are stuck at camera 0,0,0 (before the local controller is created).. why are you wanting to delay it?

limber mortar
#

Hello, I recently upgraded my project to 4.25, from 4.22. My dedicated server won't launch, and I have this dump file, should my game say 4.25 instead of 4.22.3?

soft shell
#

You should be able to dig further by debugging it natively (option that's should be on the top right of the screen, but is cut off)

#

Normally if you can kind your PDB file (VC is want it) then you can see in the call stack where it died

limber mortar
#

oh thanks, I don't use VS much, I made my project in BP

soft shell
#

Are you using plugins? It's possible one of those might need updating

limber mortar
#

oh, let me check

regal drift
#

hey guys, need some help replicating animMontage's , need some advice on RPC's, i tried to figure it out, did on repNotify but none cliets see's and animations are jagged

limber mortar
#

ok I might have found a couple issues, we will see how it goes

#

is that code in the rep notify variable or in a multicast RPC

#

If you only want people in view distance to see it, but not replicate later when people come in, shouldn't it be just a multicast RPC?

#

Or do you want ppl to see the animation though when they come into range at a later time?

#

If this is a pawn, the client could have authority

#

so you would need to go from the pawn, to server, to multicast I think

winged badger
#

@bitter oriole overriding ClientTravel should do the trick

#

you execute the Super after the animation

bitter oriole
#

Cool, thanks

winged badger
#

not sure what's virtual there though

plush wave
#

Why aren't TMaps replicated? I can make a replicated struct that achieves the same functionality pretty easily

winged badger
#

would take some effort to net serialize a tmap in a generic way

strong vapor
#

maps and sets are a no go for replication

plush wave
#

Right, was just curious why, considering maps are so damn useful

winged badger
#

doing it for your specific use case is trivial

#

generatekey/value arrays, (de)serialize those, reassamble map on deserialization

#

in NetSerialize override

#

problems arise if your key is a replicated pointer

#

and NetGUIDs for some of them haven't been resolved on clients

#

then you have a map with duplicate keys upon deserialization

#

which is not good

#

and i don't see a way to solve that particular issue

empty matrix
#

What's up guys, how's it going? I made a pump system, but I did everything on the character. The character who places the bomb can disarm, but another character cannot disarm, only if the bomb is planted by him. I know it's confusing, if you want a video call me, that I send!

limber mortar
#

not much, trying to figure out why my server build is doing 32 bit. When I do development editor it runs 64

#

first time I've encountered the error

buoyant gate
#

Hi all, hope everyone's doing good.

When you connect to a dedicated server, does PlayerState::PlayerName get carried over from client to the server, and then back to other clients? For example, if I have two players logged onto Steam and their names are A and B, once they connect to my server can A see the other player as B and vice versa?

#

@limber mortar hmm random shot in the dark, maybe try adding [SupportedPlatforms("Win64")] before "public class" ?

#

but it would not also be the first time VS decides to do something wonky that you don't want

limber mortar
#

I used BP and am not a dev by trade

#

so could be

#

I'll try to put that in

#

and see what happens

#

same result

#

let me try one more thing

#

ya, same message even with supported platforms in

#

OMG

#

once I see the exe - log run I will do a dance

strong vapor
#

[Question] A virtual function just means that children can override it right? but you can also still do your logic in THAT classes c++ file right?

#

woops

#

wrong chat

limber mortar
#

I was able to launch my dedicated server, then launch my game and join

#

The compilation process is now working like it was in 4.22 thanks for all the help

ripe spoke
#

Does anyone know why 4.24.x and 4.25.x have a lot of network corrections (p.NetShowCorrections 1) when just moving around with a blank project? 4.19, 4.20, 4.21, 4.22 and 4.23 don't have network correction issues. What changed because changes to the character movement component doesn't seem to be the issue? sadcat

twin juniper
#

Not sure, I'm not getting many in 4.25.1

ripe spoke
#

@twin juniper Weird. Creating a new Third Person Template/C++ project using a dedicated server, I can get a lot of corrections just by rotating my character. Didn't happen in 4.19 - 4.23 even with pktlag of 100ms to 500ms.

twin juniper
#

Currently with no simulated lag I actually get zero corrections from basic movement/rotation. Will test with lag

#

600ms lag (clumsy) I get no corrections either

ripe spoke
#

@twin juniper in 4.25.1 you get no corrections just to make sure I understand.

twin juniper
#

Yep 4.25.1 no corrections for basic movement/rotation unless I am alt-tabbing or something. I do get a lot of corrections for some of my custom events but those are an issue on my end

ripe spoke
#

Are you using 'Play As Client' ?

twin juniper
#

yes of course

#

assume my tests are accurate as I can get spammed with corrections when I simulate high packet loss

#

maybe you have a firewall/antivirus issue? idk.

ripe spoke
#

I have firewall and AV off for now. I've replicated it on 3 machines. :/

sweet robin
#

So when I test my game with multiplayer PIE, everything works just fine. But when I do a playtest via Steam (using just Spacewar app ID), I have some really random bugs such as one piece of the UI not showing up. Any ideas where to start debugging? Surely using the default App ID wouldn't have an effect on any of my gameplay code?

ripe spoke
#

@twin juniper Thanks for checking it out. I still don't understand how I get those corrections on 4.24.x and 4.25.x, but not on 4.19.x through 4.23.x It's weird.

limber mortar
#

I'm trying to reproduce this error / message in the editor but I don't see it in the logs. Only when I build a dedicated server. Anyone know how I do this? 😦

#

I don't want to cook, compile, package each time to attempt a fix

fossil zinc
#

Hey guys, anyone know why I recieve some invalid sessions while looking for them but can still join to them regardless?

floral crow
#

My clients are eventually hitting a Reliable Buffer Overflow. My game is far from a completed project, so I was expecting to add way more reliable RPCs in the future. Of course that's not gonna work. Are there any workarounds like increasing the buffer size?

I will start aggressively reducing the amount of Reliable RPCs that already exist in my project, but how can I tell "ok, this is enough reliable things" looking into the future?

#

Is this even a common problem to face? Or I am doing things way too wrong

meager spade
#

well, what RPC's are you sending

#

cause normal UE4 stuff doesn't ever hit the RPC buffer

#

so are you sending reliable RPC's on tick?

#

that would be the only way you would overflow that buffer

floral crow
#

That was another doubt I had. Only realiable RPCs can cause this issue right?

meager spade
#

yes

#

you should not use them for anything Tick related

#

those should be unreliable

floral crow
#

so are you sending reliable RPC's on tick?
@meager spade I'll have to double check. I hope I am, then this problem will become much easier to solve πŸ˜…

#

But from what you say, I understand that this is by no means a common problem to deal with

meager spade
#

i mean you should limit your reliable RPC's to cruicial things that must happen, and you can't afford to miss them

floral crow
#

Yeah, likely someone from the art team did some tick based Reliable RPC thing

#

Do you happen to know how many stacked RPCs are enough to overflow?

#

A vague approximate

#

Is it in the order of 10? 100? 1000?

meager spade
#

you can increase the max rpc per netupdate

#

not sure if that will fix the reliable buffer issue

#
net.MaxRPCPerNetUpdate=10```
limber mortar
#

do you know what log I need to look at, in the editor, to see what a dedicated server would say?

#

I'm trying to troubleshoot a warning I only see once packaged and running

meager spade
#

that is for all RPC's per update

#

not reliable buffer

floral crow
#

Understood

#

Thanks once more @meager spade

limber mortar
#

I'll try some more googles

floral crow
#

@limber mortar You can set the level of warning for different things, if you were not aware maybe it is a good place to start

#

Maybe that log category is disabled by default on everything but packaged buids

limber mortar
#

I'm not necessarily concerned about the warning

#

I just don't know how much it effects my game

#

This function is called multiple times a tick

#

I'd rather eliminate the warning, it wasn't present in 4.22

#

Like if that function is called 200 times per tick, and adds X amount of time figuring out it is improper, how much time is added each second

#

I'll mess with it tomorrow

#

I fixed a hundred other things with going from 4.22 to 4.25 the last few days, I need a break

heavy marlin
#

Have a nap and a twix

bitter oriole
#

Anyone ever saw a Reliable client RPC fail to run in some cases ?

#

I'm calling one on PlayerController from AXXGameMode::RestartPlayer and it sometimes doesn't run on the client

chrome bay
#

Hmm that's odd

#

Possibly the target actor isn't yet available on the client machine?

winged badger
#

whats the scenario @bitter oriole ?

bitter oriole
#

Basically the game mode tells the player controller to read a save file so that the player sends another RPC the other way round

winged badger
#

where are you calling it from?

#

i mean, it could be ridiculously early for an RPC

#

but you do know of an RPC that never fails and is called on very start, its ClientInitializeHUD

#

anything after that, and it shouldn't ever fail

bitter oriole
#

Alright, let me try that. Sorry for the high answer latency here, there is a baby in this place

#

I do think it's just too early to call - right in RestartPlayer in game mode base

winged badger
#

normal call to RestartPlayer happens after that

#

from HandleStartingNewPlayer, which comes just after GenericPlayerInitialization that sends the RPC for the InitHUD

bitter oriole
#

Thanks a bunch

novel hemlock
#

How can i increase and maybe check inside the editor the bandwidth? I tried many settings inside .ini files i found on internet but those don't seem to work for me

empty matrix
#

What's up guys, how are you? I made a bomb system, like CSGO, with line trace, but I did everything on the character. The character who places the bomb can defuse, but another character cannot defuse, only if the bomb is planted by him. I know it's confusing, if you want a video, I send it!

low helm
#

I have a weird one. A pawn is supposed to exist on the server only, and this works fine as intended. Replication obviously off.

However, the moment I spawn an AIcontroller for this pawn, it replicates a version of the pawn down to the clients against my wishes.....

fossil zinc
#

Hey guys, anyone knows why I can find invalid sessions but still be able to joint them? I'm using steam, but it seems weird to me.

twin juniper
#

i want to ask for help in this server,
2 year trying doing it and still i am nowhere , done aws to and to hard for me

i want my game to be simple, maybe with steam

imaggion u as gamer...

u download(steam) <<---example, u install, u create acc/login (with steam) <<--again example , u start at a fixed place in the game - u play u level up u gain items = u exit - u login - u are at same place like last login - there are people to playing that session that is automaticily made, help please
[16:09]
imagen* :p

empty matrix
#

What's up guys, how are you? I made a bomb system, like CSGO, with line trace, but I did everything on the character. The character who places the bomb can defuse, but another character cannot defuse, only if the bomb is planted by him. I know it's confusing, if you want a video, I send it!

low helm
#

@empty matrix how does the second character try to reference the bomb? send a picture of the logic coming right after the line trace

#

it's unclear what you're asking

empty matrix
#

Do you want me to send a video?

low helm
#

k

low helm
#

Ok. How do you know the bomb isn't being defused?

wicked nimbus
#

Do we still need to built the editor from source for a dedicated server build to work?

chrome bay
#

yeah

low helm
#

@wicked nimbus yeah I think that hasn't changed

wicked nimbus
#

Thanks;

low helm
#

Anybody know why my AIController causes its pawn to replicate to clients against my will, even though the pawn has replication off?

meager spade
#

why would you not want the pawn replicated?

low helm
#

Doing a proxy system where pawns are moved around by a single actor replicating an array of vectors

#

for an RTS, saves bandwidth

#

works real nice, but it creates this insane problem where the mere act of spawning a controller causes the pawn to replicate, even though "replicates" remains off

#

I can't even destroy it on client side, because it's replicating

novel hemlock
#

Did you try the method tearoff?

low helm
#

I'm a BP only guy, don't know what that means

novel hemlock
#

actors have tearoff method/function that remove the replication

#

I use it to not replicate a ghost building when i spawn it

chrome bay
#

Doing it that way also means you can't refer to any of those actors through RPC's or replication

#

Since you can't resolve them

low helm
#

Yeah I know they just use integer ID's on a map

#

it's all working really great, way more performant than standard replication

#

but it won't let me run a controller on the server without automatically shoving the pawn down to the client

novel hemlock
#

it's all working really great, way more performant than standard replication
@low helm Would you mind giving me some hints? I'm doing an RTS aswell and its reeealy hard to replicate them all

#

I had to increase the bandwidth to around 80k to replicate 140 actors?

#

but its still not good

chrome bay
#

Use dormancy and lower network update rates

#

And/or use replication graph

novel hemlock
#

Use dormancy and lower network update rates
@chrome bay The problem is that on the client that isnt smooth, if the troops are all on screen

#

Using standard replication on an rts +100 troops its not good at all

chrome bay
#

So what happens when you want a replicted property on one of those actors?

#

You have to route that through your one replicated actor?

low helm
#

Well I don't know about making a super responsive RTS, I'm making something reasonably slow paced so the unit positions will be a little off.

All I'm really doing is multicasting all the unit positions through one array 10 times per second. I use the GameState to do this. Unit's have Integer ID's and are looked up in a Map.

Client's receive this information and instead of setting their actor location to the location receive, they LERP themselves towards the destination they're told to be at. I tried it yesterday with up to 1000 blocks moving smoothly, though that did start to hamper CPU in editor, there were no bandwidth related hitches like you would normally see with Unreal's replication system.

novel hemlock
#

I think properties might be changed directly

#

but movement is the real problem

low helm
#

Yeah any replicated properties need to be sent through the ID system, basically some events on the Game State

#

it's purely experimental for me, I'm only 2 days into this approach, but early testing suggests huge improvements

chrome bay
#

All I'm really doing is multicasting all the unit positions through one array 10 times per second.
@low helm so your basically doing the job of replication but worse...

#

Sending massive amounts of redundant data, and with no ability to prioritise actors

#

Doesn't seem like a very flexible way of working to me. Going to hit a ceiling very quickly

low helm
#

@chrome bay dormancy and net update rates are not solutions to this problem. an RTS has to be able to function with every unit on the map conceivably moving simultaneously, and the very act of determining which actors should be dormant is one of the causes for the hitches in the first place

chrome bay
#

You can do that without having to use the engines replicated movement, quite happily

low helm
#

The ceiling for replicated actors using standard replication is about 40 before bandwidth is overwhelmed

#

Using a centralized movement event, I got it up to 1000

foggy hinge
#

I wouldn't use Unreal's standard replication system to do an RTS of that scale.

chrome bay
#

We've got well over 800 in a 100-player FPS

#

40 replicated actors is not many, but character movement will slow you down a lot

#

and/or any use of physics since the transform changes constantly

low helm
#

All I wanted to do was make an RTS with 120 units total, I was trying to be humble, but the standard replication couldn't even handle that

chrome bay
#

It definitely can

low helm
#

How then, what do you do

#

What is your net update rate

foggy hinge
#

I would probably use simplified, deterministic physics with a lock step sync network setup.

low helm
#

Without physics and with a netupdate rate of 4, I still can't get close to 100

novel hemlock
#

I would probably use simplified, deterministic physics with a lock step sync network setup.
@foggy hinge Not easy at all on UE4

foggy hinge
#

It's not easy, but it is doable.

chrome bay
#

You won't get to 100 easily, but it can be done. But anything is better than multicasting a huge array of data 10 times a second

#

Have you actually profiled it to see what's taking up the time?

foggy hinge
#

Other RTS engines like Starcraft, Warcraft, Age of Empires do the above. Instead of replicating individual unit positions, you replicate player commands instead. Since the game is lock stepped and synchronised, you don't get terrible problems.

empty matrix
#

Ok. How do you know the bomb isn't being defused?
@low helm I will send a video

chrome bay
foggy hinge
#

You can still do it the UE4 way if you really want; but I wouldn't try to make a Supreme Commander doing it that way πŸ™‚

low helm
#

I'm basically a one man team, lock stepping is out of the question.

#

Would be nice if Epic deigned to release some generalized support for RTS in the engine

chrome bay
#

RTS movement is usually quite simple right? If a unit moves, replicate the path points and the "time" the move started

#

Then have clients interp the objects along the path points from that time

low helm
#

That doesn't work because of collisions, unless you have no collisions

chrome bay
#

IDK there's probably a few things to try, but I'm willing to bet there be dragons trying to have non-replicated replicated actors

#

Blueprint has maybe <30% of the good stuff when it comes to Multiplayer unfortunately

foggy hinge
#

Last time I made an RTS, I made the units have no collision

chrome bay
#

RTS is always hard-mode multiplayer

novel hemlock
#

Ye probably without collision between each other is better

foggy hinge
#

It was just annoying, you can get that behaviour by using some flocking with ROI for units

#

And then improve the path finding for units

#

Since you never directly control the movement of units, it would look like they had collision by avoiding things instead

empty matrix
stoic nimbus
#

Saw someone talk about the new prediction plugin earlier, anyone played with it already ?

low helm
#

@novel hemlock hory shet, tear off is an actual node. I'm sorry I overlooked your genius. Tearoff on the pawn at beginplay seemed to work, thanks

#

I was looking for it as a property

novel hemlock
#

@novel hemlock hory shet, tear off is an actual node. I'm sorry I overlooked your genius. Tearoff on the pawn at beginplay seemed to work, thanks
@low helm Lmao ye I was not joking, I use it right after spawning my building

polar wing
#

Hey! I heard Epic are making some pretty significant changes to the character movement RPC system from a pull request I've been following. "Thank you for submitting your pull request, however, a refactor of character network RPCs went out in 4.26 which does this already, as well as fixing some RPC ordering issues."
Anyone know what's up? It'll likely be way better than my custom solution ( it works for me, but I'm keen for an official update!).

#

Basically refers to extending the amount of info you send via the server move functions and whatnot, due to the current flags system being kinda limited in size . Kinda forced you to create your own methods to achieve more advanced movement.

rich ridge
#

@polar wing i think they made some signification progress in NetworkPrediction and its coming very early than what I predicted.

thick shale
#

@rich ridge does that mean NetworkPrediction may be coming in 4.26?

rich ridge
#

as per the @polar wing comments it seems like that only

#

and 4.26 is delayed for indefinite time.

#

by this time epic should have relased preview of 4,26

thick shale
#

oh, I thought it was coming out before the end of the year

rich ridge
#

UE5 maybe in 2022

thick shale
#

ah well, that's a little disappointing

#

I've been having replication issues with movement since 4.24 and I was hoping 4.26 would solve it

twin juniper
rich ridge
#

yes i have been following the same when NetworkPrediction was announced

polar wing
#

can't wait for network prediction, really hoping that's coming in 4.26. They will likely keep CMC going for backwards compat too, hence the improvements (my best guess).

fossil zinc
#

Anyone knows why I get invalid sessions while looking for them but can still join regardless?

rain ledge
#

Hi, i watch the Unreal multiplayer Master tutorials from game dev.tv and i am at the end of the puzzle tutorials, but im Not really happy with the result, the moving Platform is very laggy on the Client and smoothly on server. If i command out the if(authority() in tick, its smoother on Client but allways a little laggy. One year ago i had a little bit the Same issue, by a jump ability the location on server and the location on Client was Not the Same so the server try to override the location every tick and a laggy jump was the result, now after my programming break i cant remember how i solve it πŸ˜• and i think its kinda like the same Problem here, can anyone help, maybe i am also wrong with my thesis?... Sorry for Bad english hope you All can understand what i mean πŸ˜… i read some about role simulated proxy, so the movement would extrapolate from the velocity, so i Set it up but it dosnt habe the Effekt. i am New to multiplayer programming πŸ₯Ί

meager spade
#

use a screenshot tool 😦

#

that is so hard to read

novel hemlock
#

The photos are decent tho

blissful gust
#

guys, how can I configure the editor to run two users, one has authority (server) and the others are remote (clients). Without exporting the game all the time

twin juniper
#

set net mode to Listen Server and add more than 1 player

blissful gust
#

ah shit that was easy, so the first one is the server and the rest are clients. Thanks @twin juniper ! ❀️

fossil zinc
#

Hey guys, anyone has used the Advanced Sessions plugin? I'm trying to use the extra settings and get and empty Extra settings array. Can join normally to the session tho.

gilded vapor
#

Can anyone give me an overview of when to override FSavedMove_Character and FNetworkPredictionData_Character (and what the advantages of doing so are)

(or even just some documentation is good, haven't had much luck with google)

polar wing
#

@gilded vapor You typically have to do it for every movement ability you want to implement (well, you override it once and then just keep adding stuff to it, but it has its limitations), such as sprinting, dashes, etc, to keep things silky smooth between the server and clients. Here's a great vid that will get you started. It's the one I usually point people to. https://youtu.be/Of8SGBa3WvU

There are improvements coming that will make things better, but the release date is unknown. This is all we have for now, but luckily your actual functionality is reusable, even if you switch over to the improved movement replication system later.

In this video I show the proper way to make movement abilities for your characters. This is done by creating a Custom CharacterMovementComponent.

We start from scratch with a third person BP project, but here is the completed project you can copy code from: https://drive.go...

β–Ά Play video
gilded vapor
#

@polar wing awesome thankyou that's just what I've been looking for!

polar wing
#

glad to help! Starting off with MP in UE4 can be a little confusing. It feels like there's a lot of secret sauce that people aren't willing to share 🀣 .

gilded vapor
#

Definately, I googled what does FNetwork_Prediction do and the first link is a post asking "does anyone have any documentation for FNetwork_Prediction" without any responses haha

winged badger
#

chat history of this channel makes a pretty complete, albeit unordered, network docs

steel vault
#

If I spawn an actor on the server (projectile) and I want to set a property on a local client to that server spawned actor how do I go about doing so?

meager spade
#

make it replicated and set it OwnerOnly?

steel vault
#

Hmm, so if I spawn an actor on the server and it's replicated, it will show on all clients no matter what correct? If I then assign that actor to say a property on a character that is Replicated and DOREPLIFETIME_CONDITION is set to say SimulatedOnly then it won't be shown to all clients?

#

Or in the case of what you said, OwnerOnly, then it will only replicate to the owner and not all clients?

#

I guess what I'm trying to figure out is what is the best practice for spawning a replicated projectile. Should I be spawning them on the server for all proxies but for the owning client I do my own local version?

#

Right now I have it set up to spawn the projectile on the server and when I launch it I call launch on the server as well, but I don't hear the launch sounds on the client probably because it's only calling launch on the server. Does that mean I need to separate the sounds logic out and make sure that gets called no matter what on both server and client but the projectile movement is the only thing getting called on the server?

meager spade
#

you need to do as much client side as possible

#

or multicast the sounds

#

i use the ability system

#

so client side i play the spawn cue, then server plays spawn cue which replicates to all clients

steel vault
#

I have done research online from someone saying multicast should be very limited, so I was trying to not use it as much as possible

meager spade
#

same as muzzle flash, etc

#

this is the perfect use for a multicast tho

#

multicast are for one off things

#

and should be used for things like that

#

don't listen to the nonsense

steel vault
#

But as you just said, you could get away with playing the sound locally and then telling the server to do it as well

meager spade
#

probably same people that say, "Don't ever use tick"

#

yes but other players (simulated) won't hear the sound

#

so you will need to multicast that

#

or they will just get shot by a projectile and never hear it fire

steel vault
#

Oh really? I thought that when I started a sound on the server, my client was picking up on it

meager spade
#

sound is not replicated by default

steel vault
#

Right, but if you have an actor which is set to replicate and it has say an audio component and you call audiocomponent->PlaySound() that wouldn't replicate? For some reason my server side character presses the charge button and i go to client and I hear the charge sound

#

And nothing is multicasted

meager spade
#

that is not possible

#

test it in standalone not PIE

#

you won't hear it as a client

steel vault
#

I'll give it a test. So you're saying every single sound needs to be a multicast then?

meager spade
#

or via a client rpc or a replicated property, yes

#

same as particle

#

unless you play the sound on BeginPlay

#

of the projectile

#

then clients will hear it

#

as BeginPlay is called on all

steel vault
#

Ahh that is why I hear it then

#

When you said you play the cue client side and then server side multicast to all

#

Wouldn't that double the sound to owning client?

meager spade
#

no

#

Gameplay Cues don't go back to owning client on predicted abilities

#

theres a check in the Multicast to prevent it

#

so the client hears the firing sound and muzzle flash instantly

steel vault
#

Ok. I was just reading that some senior networking programmer was saying to try and avoid multicast unless he was sending say some server message to all clients. He was saying to use OnReplicated callbacks and just set bools for events instead.

meager spade
#

OnRep/RepNotify is for state things

#

multicast should be for one time things

#

if it was that much of an issue, then why does Fortnite use them so much?

#

as they use Multicast for most effects (including weapon shots and muzzle flashes/sounds)

steel vault
#

Ahh ok interesting

#

So do you happen to know then how to launch a projectile? If I spawn it on the server and call a server RPC to launch it on the server, should I also be calling a multicast to call launch on the client as well?

meager spade
#

no

#

you just spawn it replicated

#

and client will see it

steel vault
#

But if you have lag then you will click and no projectile will come out for however many seconds that way?

#

I would think you would want to spawn a local version for owning clients and not show the replicated one so you could shoot your client side version

#

Just as you said you play a local sound and then the other clients get the multicast one

meager spade
#

i just smoke and mirror it

#

i don't bother with local client projectile

#

just hide it behind the muzzle flash lol

steel vault
#

Ok. So if I’m the client and I call a server RPC, spawn the projectile, and then want to call some functions on that spawned projectile from the client, how can I set the owning actor’s projectile property to the server spawned actor?

#

Meaning the non server client needs a reference to the server replicated projectile. Am I good to just say property = spawned actor when the RPC calls and then make sure that property is replicated?

#

I'm sorry for all of these questions I'm just trying to wrap my head around actor replication and actions and you're helping me a lot so thank you in advance.

#

So basically what I think I'm hearing is that I should break out my sound calls into a single multicast RPC called from the server, change the projectile velocity on the server itself and then do nothing client side?

low helm
#

@steel vault The client basically doesn't get word of the creation of the object until it gets first replicated to the client, and for that you're looking at the Begin Play of the object

Isn't the owner of a replicated actor replicated to clients? If so, and if the client really needs to access this object, then I would probably have the object register itself at begin play with a gate before like Get Owner = Player Controller ---> If True, register myself as the projectile being sent variable with whatever client sided object was trying to keep track of me.

steel vault
#

I'm sorry, I'm a little lost with what you are saying.

twin juniper
#

I'm 90% sure you can simply send the newly spawned projectile as a parameter in an RPC from the server to client, right after you spawn it

#

such as: ```c++
if (GetLocalRole() == Role_Authority)
{
AActor* BulletProjectile = GetWorld()->SpawnActor();
ClientDoSomethingRPC(BulletProjectile);
}

#

assuming everything lines of reliably (untested)

steel vault
#

So you're saying to multicast it? Usually RPC's go from client to server unless it's a multicast I thought.

twin juniper
#

I believe in UE 'RPC' is the base term for remote functions and Client/Server/NetMulticast are different categories of RPC

steel vault
#

Ahh yes I see now. What was said earlier about BeginPlay being called on all clients, I would think that is the perfect place to assign it to the character's property, but I don't think it was working that way

#

Like spawn actor on server, set character property to actor, but I was getting nullptr for the property on the client side I believe. Will have to try again tomorrow morning.

vale ermine
#

is it ok to use json to communicate with item database to load player inventories

verbal gust
#

is it possible to make rpc calls for dispatcher events?

strong vapor
#

i do not know... but so far i just feed my rpc's into a dispatcher.. either on the server or client or multicast.. right when it comes out of the rpc.. it triggers an event dispatcher

verbal gust
#

@strong vapor if you dont mind can you show me how you set up your blueprint with a image?

strong vapor
#

sure

#

i've been debating on changing my death logic to being from a replicated variable.. but that's how its set up now

#

and then all the clients have stuff that binds to that event

verbal gust
#

ty, yeup thats basically how i set it up. the only difference is my that my dispatcher binds assigned in the level bp. maybe that is bad design?

strong vapor
#

i mean.. if your game is single player.. i dont see why it would be bad?

gleaming niche
#

if you're doing singleplayer, why are yo doing rpcs?

novel hemlock
#

How do I understand in NetSerialize method in struct if I'm receiving data or sending?
Or It's just to send/pack data?

gleaming niche
#

ar.isLoading() and ar.IsSaving() ?

novel hemlock
#

I saw those while I watched at some struct like the movement rep or rotation etc..

#

But I don't know, many don't have a clear distinction, its not a if(isLoading), it seems like they compress anyway and eventually decompess data

#

Damn so hard to find informations on UE4, I miss Unity just for that

chrome bay
#

IsLoading() means it's being deserialized, IsSaving() means it's being serialized

#

Saving = being sent, loading = being received

#

Sometimes you can follow the same code path for both due to the way the serialize methods work

#

or if it's just more convenient

novel hemlock
#

Sometimes you can follow the same code path for both due to the way the serialize methods work
@chrome bay isnt there any overhead to do both every time you need to performe one of the 2 actions?

chrome bay
#

Nah internally some of the operators and such know if the archive is saving and loading and writes/reads accordingly

#

Like the << operator overloads

#

Of if you look internally at what SerializeBits() does etc.

novel hemlock
#

Oh cool, I will look into that

wicked nimbus
#

does anyone have a tutorial about how to use the OnlineFramework plugin or how to use lobby/party beacons? Actually any information would help.

polar wing
#

@meager spade Haha, had no idea multicast was used so liberally in Fortnite. Might need to rethink how I handle my stuff.

steel vault
#

Here’s an interesting problem. If you spawn a server side actor so it automatically replicates its position to clients and then send it off at a high velocity say 2000 in a direction, the server sees it better because it seems to update the position more often/more frames but the client sees it less frames and it looks skippy almost. Is there a fix for this by increasing server tick rate or is the proper fix to multicast the spawning of the actor so the clients own their own version?

#

And then maybe just replicate only the position of the actor i stead of the entire thing and interp the client side position to match the server one?

winged badger
#

if the velocity is predictable at the time of spawning

#

you put a replicated vector with velocity as a replicated variable

#

do not replicate the actors position in any way

meager spade
#

projectile movement works fine for me i don't even do that

winged badger
#

and just launchn it with velocity on clients/server separately

meager spade
#

unless you want to dynamically adjust the velocity, just mark it replicated, (expose on spawn if its a bp node), spawn it deffered, set the velocity, then call finishspawning