#multiplayer

1 messages ยท Page 166 of 1

half iris
#

Now it starts to make sense, thank you very much ๐Ÿ˜„

dark parcel
#

Yup, if u need to tell server something, server rpc away

half iris
#
bReliable = True```
#

Then nothing can go wrong ๐Ÿ˜Ž /s

dark parcel
#

When dealing with networking you want to be lightweight as possible

#

Only send data that you need to send

#

Sometime it's also compressed

half iris
#

Yea that makes sense, I shall be careful

lament flax
#

depends of what you want to do

#

yeah xD

#

im still curious about that

hoary spear
half iris
hoary spear
#

Yeppyepp

opal shore
#

any1 know what this does?

quasi tide
lament flax
#

Okay ty

#

But code is still running ?

#

Is there events called when an actor is rendered/not rendered

lost inlet
vagrant grail
#

Did that and still only works on the host but not on the client ๐Ÿ˜ฌ

hoary spear
#

And have you derived a new child from pc_core?

vagrant grail
vagrant grail
hoary spear
#

Do you happen to override the events there ?

vagrant grail
hoary spear
#

And child class is ofc set to replicate

vagrant grail
hoary spear
#

Should be, yes, just making sure ๐Ÿ™‚

vagrant grail
#

that's why I'm so confused as I never encountered somethind like this ๐Ÿ˜„

#

Hold on a sec

hoary spear
#

So whats being triggered?

#

Are the onreps fired in the first place?

vagrant grail
vagrant grail
hoary spear
#

๐Ÿ˜†

vagrant grail
# hoary spear ๐Ÿ˜†

Pressing the button si doing this, I guess it's not working because only the server can call the "servertravel" command ? ๐Ÿค”

lament flax
vagrant grail
#

can widgets communicate with "gamemode" through an RPC ?

lament flax
hoary spear
#

No

vagrant grail
#

๐Ÿคฃ

hoary spear
#

Not on the widget itself.

#

Through a client owned actor, yes

vagrant grail
hoary spear
#

GetGamemode returns null on anyone not server

#

As it doesnt exist for them

lament flax
#

Yeah you cant get GM on widget

#

It existe only on server side

vagrant grail
# hoary spear Through a client owned actor, yes

so how should I do that ? Like something like this ? GetController > Cast to "PC_Lobby" > Call Event "Start Game"
And inside Start Game of PC_Lobby > Get the Gamemode > Cast to GM_MainMenu > Call Event Start Game > Execute Console Command "servertravel Mansion_Level ?

hoary spear
#

Get owning controller*

#

Start game is run on server. Then rest is ok

vagrant grail
hoary spear
#

Not sure id discriminate amyways but

#

If you do, dedicates servers dont work f.ex.

vagrant grail
#

true

hoary spear
#

Any progress?

vagrant grail
hoary spear
#

Something is really messed up with your controller it seems

#

Are the casts succeeding ?

#

Add prints on each step

vagrant grail
#

Let me fix that

#

Now it's being called no issue but still no travel to the game level ๐Ÿ˜ฌ

hoary spear
#

Did you forget the space?

#

And suffix ?Listen some forum post suggest (doesnt make sense to me but idk)

vagrant grail
vagrant grail
hoary spear
#

try appending "?Listen" to the end of the console command for servertravel

#

so its servertravel Mansion_Level?Listen

vagrant grail
hoary spear
#

any errors in the log?

vagrant grail
hoary spear
hoary spear
vagrant grail
hoary spear
#

Part of the process

vagrant grail
# hoary spear Part of the process

Found this but eXi says to uncheck the bool called "Auto Connect to server" but I don't have that in the advanced settings, do you know by any chance where I can find that or if its name changed to something else ? https://forums.unrealengine.com/t/4-14-servertravel-with-more-than-the-server-doesnt-work-in-pie/376392

Epic Developer Community Forums

This is not PREVIEW anymore, it is release version of 4.14! Hey there! I updated my Marketplace Project from 4.13 to 4.14. Following stuff happens in PIE! Remember, starting Multiplayer in PIE connects the Server and Clients already! Even in the MainMenu! After starting the project with one Listen Server and one Client, I host a new โ€œServer...

vagrant grail
# hoary spear Part of the process

I already have this Error Handling setup but no error appears on the screen and in the log not details / name of the error is given so it's impossible for me to debug ๐Ÿ˜ฆ

hoary spear
#

can't you just test in standalone?

#

to verify ?

vagrant grail
hoary spear
#

erh, packaged*

#

is what i ment

vagrant grail
#

so that means there's an issue with "New Editor Window (PIE)"

vagrant grail
rose prawn
#

Hi everyone, I'm profiling the network using Unreal Network Insights, and I'm new to this. I've noticed some points where the total size of packages reaches 1,008 bytes. Currently, we're testing two-player multiplayer. These spikes occur when a new player joins, as there are plenty of things being loaded.

My question is, at what point should I be concerned about the total size or the network usage? Is it around 1,000 bytes or 10,000 bytes? What are considered normal ranges for multiplayer? Just to provide some context, I'm working on a 4-player co-op game.

vagrant grail
#

What the heck, why do I have 4 characters in standalone game when in the settings I chose 2 players

lament flax
#

standalone doesnt use PIE settings (its the whole point of standalone, being "detched" from the editor)

#

there is probably 4 players because its somewhere else in settings

vagrant grail
dark edge
rose prawn
dark edge
#

I just know it is a thing, if it works as is then it's probably fine, but if it becomes a problem then probably investigate the fast array replication

rose prawn
#

Thanks! I will probably end up using it for building struct and maybe for the inventory. Currently I haven't experienced any issues but I'm looking for some reference point for the limits when it comes to packet size.

formal solar
#

I want to use UGameInstance::GetFirstLocalPlayerController function in blueprint to reliably get the local controller on listen server, problem is I am extremely poorly versed in C++,is there a way to duplicate this function into a blueprint function library (I have created a custom one in my project) and flag it as blueprint implementable?

fossil spoke
formal solar
#

If client connects faster than host

fossil spoke
#

Sure, but UGameInstance::GetFirstLocalPlayerController uses the same functionality.

#

Eitherway, what you can do

#

In your BlueprintFunction Library in C++

#

Create a new function

formal solar
#

The guide says that the game instance version is reliable

fossil spoke
#

That has the same signature

#

And just return the result of UGameInstance::GetFirstLocalPlayerController

formal solar
#

Im totally new to C++ and I'm confused by the engine code

fossil spoke
#

Dont worry about the engine code

#

Just focus on making a new function in your function library class

formal solar
#

I have

#

But Im not sure on syntax and such

fossil spoke
#

Can you paste what you have so far

#

Make sure to use the code block tags

formal solar
#

My header for the blueprint function library I created, I know to add BlueprintCallable (or should it be BlueprintImplementable) but not after that

fossil spoke
#

Ehhh

formal solar
#

what I think is the function I need but Im confused by the lack of UFUNCTION()

fossil spoke
#

Add this to the header instead

#
    /** Returns the first locally controlled player controller. */
    UFUNCTION(BlueprintPure, Category="Game", meta=(WorldContext="WorldContextObject"))
    static class APlayerController* GetFirstLocalPlayerController(const UObject* WorldContextObject);
formal solar
#

thank you, do I need anything else in my 'include' list? Like World or such

fossil spoke
#

No

#

Add this to the cpp

#
class APlayerController* UCustomBPFL::GetFirstLocalPlayerController(const UObject* WorldContextObject) 
{
    if (UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject, EGetWorldErrorMode::LogAndReturnNull))
    {
        return World->GetGameInstance()->GetFirstLocalPlayerController(World);
    }
    return nullptr;
}
formal solar
#

Thanks I will try that

fossil spoke
#

You may need to add this include to the cpp

#

#include "GameFramework/PlayerController.h"

#

I just edited the above code to include your specific class name in the definition

formal solar
#

still got the warning

fossil spoke
#

What do you mean warning?

#

Warnings wont stop compilation.

#

Errors do.

#

There is no point saying "Ive got a warning".

#

Paste the actual issue so we can help.

#

We cant see your computer.

formal solar
#

Ok

formal solar
fossil spoke
#

Yes

#

Show us the code mate.

formal solar
fossil spoke
#

Ok first up

#

Ignore the Error Tab

#

It is useless

#

Actually compile the code

#

The Output Tab will tell you if compilation failed

#

You can then read the actual reason why it failed in that log.

formal solar
#

is compile same as build?

fossil spoke
#

Yes

indigo brook
#

Quick question: How would I hide widget component in the player character. OnlyNoSee isn't working. Any tips? Only for the owning player that is

formal solar
indigo brook
#

Right, but I'd have to find out if it's the owner, then HiddenInGame, how would I find out which players owns the widget?

fossil spoke
formal solar
#

yeah stupid me

indigo brook
#

Yes! I'll try that!

formal solar
#

syntax error I think

indigo brook
fossil spoke
#

Thats really unhelpful.

#

Paste the entire log

formal solar
sinful tree
fossil spoke
#

Can you show your code for the cpp file?

formal solar
vagrant grail
formal solar
#

I need an extra } I see in the C++ file

fossil spoke
formal solar
#

no my mistake

#

default 'build solution' will build all windows you have open yes?

#

Thank you for the help hugely appreciated, my C++ is embarassing compared to my knowledge of blueprints

fossil spoke
#

You should learn it though.

formal solar
#

Yes more transferable skill if anything

indigo brook
#

Next question: How do I get a projectile to ignore owning actor?

formal solar
#

do you mean as in net ownership

indigo brook
#

I figured it out! I had to pass the investigator in the spawn. All good!

pine cedar
#

I have an issue with there being a small delay after attacking another player while on client. Anyway to predict damage on client?

dark edge
# indigo brook

Are you purposely multicasting the spawning of this projectile and not just spawning a replicated projectile?

dark edge
#

it's not automagic

pine cedar
dark edge
# pine cedar How?

however you want.
Right now I'm assuming you detect the hit on the server, do the damage, then the client eventually finds out right?

#

There's nothing stopping you from also doing the hit on a client and predicting whatever the hit does

#

Make no mistake, prediction is INSANELY COMPLICATED

pine cedar
#

I'm pretty much using the gameplay ability system to replicate the montages and attacks hit boxes. The only issue I'm having is the delay between the player being attacked and the attack hitting on client. Not sure if this is a gameplay ability system issue or a multiplayer issue

#

should I take this to the gameplay ability system chat? or is it a multiplayer issue?

dark edge
#

that's GAS chat land tho

indigo brook
dark edge
#

that's the typical approach

#

if you need prediction that's a whole other can of worms

indigo brook
dark edge
#

RPCing shots CAN be valid, that's what I do

#

but you have to expect that not everyone will agree on where that bullet is going

#

whether or not that matters, depends

heady python
#

i have an issue with IsNetRelevantFor. The resturn value is being printed out for both clients. When the players are too far from eachother, they arent relevant to eachother. The function returns the right value, but the clients stay replicated for a few seconds after, which shouldnt happen. when the result is false, the function gets called a lot more, why is this?

ruby lodge
#

How does unreal know which asset to show in multiplayer? Apparently it's not just about the uasset name, it's more like an ID or something inside of an asset I guess?

#

I am trying to replicate an asset which was mounted at runtime like a chair so it was not there in the initial build. At the moment the client does indeed see that something was created and the collisions of the blueprint work and stuff but it cannot actually see the asset ie. the content that was mounted. The blueprint was already in the build, it just had empty references and got filled from the player who mounted something

#

Even after mounting the same chair by the other player, he still can't see the one of the server player although he can see his own mounted chair which is the same.

#

that's why I think it's deeper than only uasset names that unreal relies on to recognize which asset to show

#

otherwise it would see the connection there and show all chairs of that type when mounted by everyone

crude finch
#

hello! i was wondering how i could go about replicating the left hand IK on a player, everything I try only lets it show on that players end but nobody elses

supple junco
#

Hey is anyone using the common session subsystem from Lyra? It seems to me that the lobby attributes are hardcoded as part of this subsystem and I can't modify or add my own lobby attributes? Since all the variables are set in UCommonSessionSubsystem::CreateOnlineSessionInternalOSSv1

dark parcel
mild lynx
#

On my main Player Pawn, I have a Widget Component with Text that is suppose to Display a Name. I use a Rep Notify to get the name and update it for everybody which works great on a Text Render Component. Inside my Rep Notify, the Widget always fails to Cast. I was wondering how I should go about setting the Widget Text since this is happening.

dark edge
#

print the value of theat Get User Widget Object, what is it on all the machiens?

mild lynx
#

3 players on Listen Server

mild lynx
#

The widget class is also already set to the Widget for the Name Tag

vagrant grail
dark parcel
#

@mild lynx looks like a rat race. There are times it's empty and times it prints value

#

Make sure u set the variable before accessing it

mild lynx
dark parcel
#

U are getting empty object at some point, that's when the cast failed

mild lynx
#

Okay, I'll just try a Valid check and run it through a timer a few times to see if it updates at all then. Thanks for the help anyway.

#

It seems to just not be Valid for the first tick, but Delay until Next Tick got it working, along with a Timer check for backup.

sinful tree
mild lynx
dark edge
mild lynx
dark edge
dark edge
mild lynx
#

Okay then. I'll try that out sometime, thanks for the Info.

dark edge
#

or, do the same thing you're doing in the repnotify also in the actor's begin play

#

that way you keep the references flowing one way

#

Race conditions, welcome to multiplayer

shrewd carbon
#

My host seems to recreate its player controller whenever a client joins my networked lobby is this normal behavior or am I messing something up.

hoary spear
#

Are you sure its not just creating its version of the new players PC?

#

Server + owning client gets one

shrewd carbon
#

Refactoring it around, it looks like my set view target with blend just seems to be getting reset(?)
I have a lobby where the camera moves around for option menus. Whenever a client joins the lobby, the viewtarget seems to snap back to the original position

hoary spear
#

And you're not doing GetPlayerX(index) i hope ๐Ÿ˜…

shrewd carbon
#

I have camera actors at the like anchor positions that are tagged,

hoary spear
#

Theres likely on of your issues

#

You generally shouldnt use GetPlayerX

shrewd carbon
#

What should I use?

hoary spear
#

A proper reference to the correct playerController

shrewd carbon
#

my understanding was that getplayercontroller(0) would get the local player

hoary spear
#

Its not guaranteed afaik

shrewd carbon
#

I guess then what would a proper reference to the correct player controller look like, this is meant to be a client side operation as each client should be able to independently move about the lobby options

hoary spear
#

I guees this is triggered on some beginplay?

hoary spear
shrewd carbon
#

yea it is on a begin play :c this specific one is supposed to be the first little landing animation

hoary spear
#

Which actors beginplay?

#

(Dont say levelBP)

shrewd carbon
#

i've tried it in multiple places.

#

This specific desperate iteration is indeed in the LevelBP, but I also have tried it in the menu widget blueprint itself.

hoary spear
#

๐Ÿ˜ฆ

shrewd carbon
#

The only reason its in the LevelBP was becasue I was unsure if it was a replication issue

hoary spear
#

What about in the pc?

shrewd carbon
#

The playercontroller gets recreated each time a client joins, which eludes to my first question

hoary spear
#

Im sure it doesnt

#

Each new plauer gets their ownn

#

And server gets a copy of it

#

So with 4 players:
Server - 4 controllers
Clients - 1 controller each

shrewd carbon
#

I'll try it again, maybe i didn't properly set it up.

hoary spear
#

On beginplay you cam bramch "IsLocallyControlled"

shrewd carbon
#

oh neat ill try that right now

#

it still seems to happen in the player controller :c

hoary spear
#

Did you remove the old code everywhere?

shrewd carbon
#

yes ๐Ÿ™‚

hoary spear
#

Wait wait

#

Are they all sharing the same camera? ๐Ÿ˜…

#

Viewtarget*

dark edge
#

that shouldn't matter right?

hoary spear
#

Not for it resetting i guess

shrewd carbon
#

I dont know what you mean by sharing the same viewtarget. Its my understanding that the playercameramanager is local to the client itself and not replicated.

dark edge
shrewd carbon
#

Create my lobby ui

#

I ll remove it to make sure there's no conflict there.

hoary spear
#

Wheres the logic for moving the view target actor?

#

Or do you lerp between different cameras?

dark edge
# shrewd carbon

As long as this is the ONLY thing setting view target right now I see no reason why it wouldn't work

#

it should start -> delay -> blend towards MenuCamera

#

does menucamera move or is it completely static?

shrewd carbon
#

menucamera is intended to just be a static anchor camera since blendview target requires an actor at least was my understanding

dark edge
#

does it actually move or do you just not have the camera moving around part hooked up?

#

are you intending that "Camera moves around" = "view target jumps between different cameras with different tags"
or
"Camera moves around" = "View target is always Camera which is actually moving"

shrewd carbon
#

Here is a video to kind of document the issue

#

As soon as a client joins, the viewtargets seem to reset to their starting point

#

The only thing that should be manipulating the viewtarget is this playercontroller blueprint that ive shown above

dark edge
#

maybe it's calling RestartPlayer on everyone due to gamemode shenanigans

#

don't think so but just thinking out loud

sinful tree
#

That may be a play-in-editor "feature"

dark edge
hoary spear
dark edge
thin stratus
#

The Boolean for auto manage viewtarget is off though, right?

shrewd carbon
#

Listen

dark edge
#

when 2nd player joins does it do 2 prints or 1

#

I'd test with launching

#

not sure how you launch as listen but do that 2x then join one to the other

#

console -> open localhost should do it I think

hoary spear
#

Its a setting under the play menu

#

You can select servertype

dark edge
#

i mean launching, independent from editor

shrewd carbon
shrewd carbon
thin stratus
#

It's a Boolean on the PlayerController iirc

#

It's meant to automatically manage the ViewTarget for possessing etc

hoary spear
#

Wierd.. 2 server prints + client print

shrewd carbon
#

It was not off, but turning it off seems to not alleviate the issue

thin stratus
#

Ultimately you don't really want to change your ViewTarget if there is already a pawn or similar that you possess. At that point you would keep the ViewTarget and simply use the PlayerCameraManager to offset the camera to where you want it

#

If you have no pawn etc yet then it's fine though

#

I can't see the video on my phone. Did it print twice?

hoary spear
#

3 times

#

2 on the server and 1 on client

#

For some odd reason

thin stratus
#

The second server print came when the client joined?

hoary spear
#

Initially it prints twice aswell

shrewd carbon
#

no thats a different print

#

Server printed once

hoary spear
#

Oh

shrewd carbon
#

client joined, sever printed for client

dark edge
#

Show the actual log

thin stratus
#

Hm would need to see the whole code, including where it's called from etc. too much unknown about the setup

dark edge
#

not the millisecond it's on the screen

#

also is Use Single Process unchecked in PIE settings?

thin stratus
#

Can only check later. Need to get up first ๐Ÿ˜…

hoary spear
#

Somethings wrong here

#

Yellowprint is from that event

dark edge
shrewd carbon
#

yellow is from that event

#

in begin play

dark edge
#

show the entire chain from whatever event is automatic to that event

shrewd carbon
#

is there a way to clear the log

dark edge
#

yes

#

right click

shrewd carbon
#

excellent ty

dark edge
#

Hm, is view target a thing that is ever replicated or otherwise server managed? Could be a forced replication?

shrewd carbon
#
LogBlueprintUserMessages: [BP_LobbyGM_C_0] Server: BP_LobbyPlayerController_C_0
LogBlueprintUserMessages: [BP_LobbyPlayerController_C_0] Server: BlendToView called: BP_LobbyPlayerController0
LogBlueprintUserMessages: [BP_LobbyGM_C_0] Server: BP_LobbyPlayerController0
LogBlueprintUserMessages: [BP_LobbyGM_C_0] Server: BP_LobbyPlayerController_C_1
LogBlueprintUserMessages: [BP_LobbyPlayerController_C_0] Client 1: BlendToView called: BP_LobbyPlayerController0
LogBlueprintUserMessages: [BP_LobbyGM_C_0] Server: BP_LobbyPlayerController_C_1

I changed the text because i cant find that other print statement so blentoview is appended to the print

dark edge
#

the gamemode printing isn't helping

shrewd carbon
#

ohhhh

#

it shows you where it is, let me remove that

#
LogBlueprintUserMessages: [BP_LobbyPlayerController_C_0] Server: BlendToView called: BP_LobbyPlayerController0
LogBlueprintUserMessages: [BP_LobbyPlayerController_C_0] Client 1: BlendToView called: BP_LobbyPlayerController0
dark edge
#

show all code paths that can call ClientsideSetup though

dark edge
#

or just the moment 2nd client joins

#

why is the server printing

#

oh nvm that's the listen server

shrewd carbon
hoary spear
#

But that function is not the culprit

#

Our code runs only on thenowning client

#

There's something else going on

dark edge
shrewd carbon
#

yes

dark edge
#

why is it the same object both times then

shrewd carbon
#

I'm not sure

dark edge
#

sec, trying to replicate

shrewd carbon
dark edge
shrewd carbon
#

this happens in shipping builds as well so i can confirm the behavior is not PIE

#

They're errors from removing my UI

dark edge
#

how do you have the add client button?

shrewd carbon
#

you can enable it in earlier 5.x versions in editor properties and "allow late join"

dark edge
#

yeah i just replicated

#

wtf

thin stratus
#

One of the reasons DisplayName isn't meant for Gameplay

sinful tree
#

I'm not getting the same behavior in 5.2

#

Default Pawn set to None.

#

Server (host) joins the game, camera blends to a camera actor in the level after 2 seconds.
I click the "Join Late" button, client window pops up, and after 2 seconds, blends to the same camera actor. Server view unaffected.

thin stratus
#

The camera movement in the video is solely by the view blend, right? It's not some camera track on top of that?

dark edge
shrewd carbon
#

Nope just blendview

#

Even after the blend it snaps back to original position

sinful tree
thin stratus
#

Hm, but Adriel can reproduce it?

#

Interesting

dark edge
#

video in a second

#

ok it appears with delay it's fine

#

without delay, the client misses it

shrewd carbon
#

when my lobby pawn class is set to none it works fine

sinful tree
#

Then it's a possession timing problem.

shrewd carbon
#

what in pawn is causing this to snap back..

sinful tree
#

The possession overrides the blending to the new camera.

#

But I'm not sure why that would influence the server....

hoary spear
#

But why would that happen for the server ?

#

Yeah

dark edge
#

I thought maybe I did at first but I can't replicate that

shrewd carbon
#

I seem to be making progress,

dark edge
shrewd carbon
#

at the very least im on parity with you guys

#

my server no longer does it

hoary spear
#

So you and Datura got the same result then

shrewd carbon
#

my lobbypawn had manipulated my camera, i removbed that and now just the client snaps back

sinful tree
#

Yeah same - mine doesn't effect the server snap back, but if there is a default pawn set up then the client doesn't see the blend, it just snaps to their pawn.

shrewd carbon
#

Should I just do this in the pawns begin play so that there's no snap back?

#

like a local function on the pawn so that this only happens after possession

hoary spear
#

So youd want the evnt connected to onpossess

dark edge
#

you want what to happen in the lobby

sinful tree
hoary spear
#

Perhaps

dark edge
#

on possess is clientside anyway right?

hoary spear
#

Depends on where the k2 event is chained

dark edge
#

er serverside

hoary spear
#

Id expect last&^

shrewd carbon
#

the bug at hand was that each time a new client connected, the lobby would snap back, for all players.

#

ideally each new connected client wouldn't snap back those who were already there, that may be fixed now with making parity with you all

hoary spear
#

Generally Beginplay + multiplayer is a bucket of worms

dark edge
shrewd carbon
#

but also that the new joining client has the transition

#

probably, but the benefit to blendview was that I assumed this function was for this purpose of blending between camera views.

#

so I was hoping to use it for this usecase.

thin stratus
#

But the possession ViewTarget stuff comes from the PlayerController Boolean iirc

#

If that is false then the pawn shouldn't matter

shrewd carbon
#

whoa

#

Thats it

#

unchecking the boolean on pc fixes it

dark edge
#

I had it off but still was missing the blend

shrewd carbon
#

๐Ÿ˜ญ

dark edge
#

I'd sit at default cam -> snap to final when blend time was over with nothing in between

thin stratus
#

There might be more at hand, but if there is anything resetting ViewTarget then it's that Boolean

dark edge
#

maybe default cam wasn't set up yet so it had nowhere to blend from

shrewd carbon
#

that fixed it for me

thin stratus
#

If it's in the level then it should be available

shrewd carbon
thin stratus
#

I can't stress enough that I would use the camera manager for this stuff

shrewd carbon
dark edge
shrewd carbon
thin stratus
#

So both sides now work fine for you? Client and Server?@shrewd carbon

shrewd carbon
#

Yes

thin stratus
#

And solution was no Pawn + Boolean to false?

hoary spear
shrewd carbon
#

Unticking automanage and then fixing my lobby pawn from attempting to snap the camera fixed it

thin stratus
hoary spear
#

Made you move the logic back to pc lol ๐Ÿ˜‚

shrewd carbon
#

My lobby pawn had a bug which was causing the server camera to snap by attempting to snap

thin stratus
#

Probably better to get yourself some ancient Oracle to read the stars for you than hoping there some everything is ready event

dark edge
#

How do Real Gamesโ„ข๏ธ do it?

sinful tree
shrewd carbon
#

Once that was fixed it was the automanager that was set to true -> false that fixed everything

thin stratus
shrewd carbon
#

yes yes. Thank you

thin stratus
#

If you have a race condition you gotta solve it by checking both ways

hoary spear
#

hello there playerArray

thin stratus
#

Lyra I think tried to cover this a bit

dark edge
#

What would the player camera manager approach look like? Do you still get the blending functionality?

#

or are you having to reinvent blending

shrewd carbon
#

I'm also curious to know what camera manager would look like

thin stratus
shrewd carbon
#

the whole point was to avoid reinventing blending as im not sure i could do it better.

thin stratus
#

Fwiw even with custom curves etc

#

Depends on the effort you want to put into

hoary spear
#

Theres one bp event for doing this

#

But id recommend doing it natively

thin stratus
#

In c++ you can probably just use the existing blending logic fwiw

#

But blending isn't really difficult tbh

dark edge
#

So now the question is, why isn't the blending functionality in the camera manager to begin with

shrewd carbon
#

i imagine its not just a linear blend between values

hoary spear
#

Depends, id say

thin stratus
#

The benefit of keeping the ViewTarget on the Pawn

#

Cause some logic in UE somewhat requires that

dark edge
#

which is hilarious

thin stratus
#

I found that out the hard way when having a second actor for the camera years ago

#

E.g. OnlyOwnerSee etc stops functioning

hoary spear
#

Brave soul, you have

dark edge
#

I'd go back to the subscription model for an Unreal Engine 5 Lite

thin stratus
#

Yeah that was like 6 to 8 years

shrewd carbon
#

Well. Regardless, I appreciate the help

thin stratus
shrewd carbon
#

this was really confusing my players :sob

dark edge
#

Hey at least you got players, that's better than most of us here.

thin stratus
#

The blend logic is not more than the PC telling the PCM (iirc) that it wants a blend. And then it just blends over time to the actor you specified.

dark edge
thin stratus
#

Would need to check. Guess is PCM

dark edge
#

If that's the case then it's not as insane as I thought, that's the PCM doing the blend and the PC just commanding it

thin stratus
#

Yeah

shrewd carbon
#

I saw that in cpp, i didn't know if i should mess with calling it directly.

thin stratus
#

Don't ask me why the function is on the pc

hoary spear
#

I thought that was already how it worked

thin stratus
#

I would think potentially for possession etc.

hoary spear
#

Pc just had a forwarder function...

shrewd carbon
#

ima sleep so good tonight this was driving me crazy. such a small thing too in the grand scheme.

rocky kestrel
#

Hello, I have lots of actors in my level that are not important for game. I want those actors be only locally loaded so server would not know about those. Those are like level design actors so those are already in level. What is correct way to remove those from dedicated server?

#

And those are small collectable robots. I have over 1k of those on level and I don't want to use server cpu at all for those

lament flax
#

why do you want your server to not know about those collectable robots ?

thin stratus
#

Has anyone done Steam Stat based Achievements in C++? I looked at what people did in BPs, and checked the WriteLeaderboards node, but doing the (at least I believe I do the same), doesn't seem to work. It fails finding a Leaderboard (does one need to set up a Leaderboard on steamworks too?) and then the Steam Task stuff kinda hangs up.

chrome bay
#

Been a really long time since I did anything with it but IIRC, the default Steam OSS implementation requires that you setup a leaderboard for every accumulation based achievement on the steam backend. Either that or a user stat, can't remember which.

thin stratus
#

I will ask them to set one up.

hoary spear
#

for the additional button

tardy fossil
#

question: setting a replicated variable to COND_InitialOnly will take it off the list of replicated variables that need to be checked and save some performance right? if i have some replicated variables that change ONLY due to server events, would it be more optimal to set that variable set to COND_InitialOnly and update its value with a RPC multicast?

chrome bay
#

Unless you have an obscenely expensive comparison to perform then the difference will likely be utterly unmeasurable

#

If you want to save performance then drop the update frequency of the actor and reduce the number of replicated objects you have

tardy fossil
#

yeah i kinda figured that was the case.. i think the right answer is to utilize dormancy and force net updates

chrome bay
#

dormancy is certainly an option if it's changing very infrequently

vagrant grail
#

@sinful tree Do you have any solution please ? ๐Ÿ™ โ˜๏ธ

thin stratus
vagrant grail
vagrant grail
thin stratus
vagrant grail
visual mountain
#

How would one assign a player controller to a player in unreal engine blueprint. I have a listen server and both players start with an initial controller, but ive made 2 of my own controllers. to better be identified for turn rotation.

#

currently the players possess the pawns I want them to, but im not sure, nor is the internet being very helpful atm for explaining how to assign other Player Controllers in blueprint.

visual mountain
#

ha literally just read that. thanks for the reply. Though now i question how the unreal devs make an array of player controllers for multiplayer.

visual mountain
#

last thing, is this a valid alternative for identifying the players? can i just use these tags ive made and derive the player controllers from them

#

apparently unreal makes a player controller array and assigns the controller to the player as they start, or possibly during some level transition, im not sure.

#

as long as ive got a valid means to identify a controller in blueprint im good.

elfin holly
#

Hey.

For some reason the WidgetInteraction component breaks whenever a client joins. I'm assuming its because of the pointer index or the virtual user index However I've so far failed to assign the player index to those values and get it working. Any tips suggestions? thanks ๐Ÿ™‚

half iris
#

So at what point do we stop executing functionality on the server after a Run on Server RPC? Is it until we call a run on owning client RPC in the same line of execution? Or do we just break the line of execution with a custom event at some point?

upbeat basin
half iris
upbeat basin
#

The functionality inside the client RPC you implement will run on the client only

half iris
#

Right, so instead of my earlier example;

Server RPC 1 -> Some functionality (this happens on server) -> Run on Owning client RPC 1 -> Some functionality (this happens on server).

Event Run on Owning Client RPC 1 -> Some functionality (This happens on the owning client).

upbeat basin
#

Yep, that's it

half iris
#

Right gotcha, that makes sense now. Thanks for the clear explanation!

vagrant grail
#

why does this not apply to the client ?

ruby lodge
#

Good day, I am trying to understand how unreal handles references and knows what to display exactly because apparently it's not the asset names. First a bit of context, I am trying to replicate a pak mounted chair which was mounted by server and client. It is the same pak file so if references were built upon asset names, then it would have worked but apparently each asset has a serialization ID and a GUID? Now when mounting the pak on server and client the assets apparently have different IDs and thus the engine doesn't know that these are actually the same assets. Right now, the chair does get spawned on the server but is invisible to the client. The client does recognize that there was a blueprint spawned and sees it's other functionalities but the assets inside the pak which were mounted like the static mesh, textures etc are invisible to him although he mounted it as well.

hoary spear
#

Can be hard to juggle it all at times

#

Ugly as they might be, they help me a ton

half iris
quasi tide
hoary spear
#

If only something in the engine could map this outm..

#

Editor toool hmmmmmmm

vagrant grail
hoary spear
#

wth ๐Ÿ˜ฎ

#
IgnoreMoveInput = FMath::Max(IgnoreMoveInput + (bNewMoveInput ? +1 : -1), 0);
#

so there's a stack of ignore move xD

#

Sorry Diversity, I'm stuck debugging my own stuff ๐Ÿ˜›

#

race conditions are fun

vagrant grail
hoary spear
#

gotta get used to finding the way, there's a lot of hurdles coming your way xD

vagrant grail
hoary spear
#

Its usually not about trying everything, but understanding whats going on

vagrant grail
hoary spear
#

so, move input is not ignored?

#

or are you using something else than move input? ๐Ÿ˜›

vagrant grail
vagrant grail
#

I tried doing that through a RepNotify variable, didn't work. Tried directly calling "Ignore Move Input" and "ignore Look Input" it doesn't work either.

maiden flame
#

If you print string, is Event BeginPlay called on the client? @vagrant grail

hoary spear
#

after your beginplay event?

vagrant grail
hoary spear
#

Which one are we troubleshotting ๐Ÿซ 

hoary spear
vagrant grail
hoary spear
#

Pc_werewolf

vagrant grail
hoary spear
#

whats in the parents beginplay ? do you have anything else modifying move input?

#

add on event tick -> IsMoveInputIgnored()?

wanton bear
#

what is the proper way to make the player control rotation set to the pawns rotation on possession?

#

setting control rotation directly using event receive restarted and event possessed with a rep notify ends up with a frame where the rotation is the wrong direction before then being changed

vagrant grail
lament flax
hoary spear
#

Yes, specifically just following function calls across rpc's and whatnotn

#

So a chart could show if you're on server or not

#

Or perhaps the Exec lines indicate

lament flax
#

that would be cool

hoary spear
#

Wether you are server/Client or both

lament flax
#

its a bit like visual scripting but a bigger point of view

hoary spear
#

Yepp, zoom out a step

lament flax
#

thats a thing i would love to dev

#

if i knew how to dev graphs in custom editor windows

lament flax
#

whats your issue Diversity

#

so i can try to help you

vagrant grail
# lament flax whats your issue Diversity

I'm trying to disable movement and look input for players when they join the Mansion_Level. It does work on the host player but not on the client joining and i don't understand why

lament flax
#

okay

#

you are trying to disable it from where ?

#

or what do you prefer

vagrant grail
lament flax
#

what target do you need when disable movement ?

#

Character Component ?

vagrant grail
lament flax
#

okay

#

can you get the player states array in game mode ?

#

try to type something like "get players"

vagrant grail
lament flax
#

to see if you can get the players from GM

vagrant grail
#

Like I already have an array of player controllers

lament flax
#

i couldnt guess that

#

so, you tried to run on server an event to disable movement from those refs ?

vagrant grail
vagrant grail
lament flax
#

maybe this has to be run on client and not server

vagrant grail
lament flax
vagrant grail
wanton bear
lament flax
vagrant grail
lament flax
#

can you move ?

vagrant grail
lament flax
#

where is this called

dark parcel
#

@wanton bear onAcknowledgePossesion runs on client

#

You can set control rotation there

wanton bear
#

thanks summer

vagrant grail
snow trail
vagrant grail
jolly nymph
#

Hi guys maybe some one know, about a Videogame or software or pluggin or blueprint that let me connect one or more virtual reality device to a PC, the PC is the server and VR are the clients?

vagrant grail
#

@lament flax @hoary spear I fixed the issue ๐Ÿ˜ค

hoary spear
#

What was it

vagrant grail
hoary spear
#

Lol ๐Ÿ˜…

vagrant grail
opal shore
#

Can we rep notify custom structs/types?requires setup?

hoary spear
#

Can usually, yes

#

Maps and sets dont replicate

#

Bpndoesnt give you per var control (and all bp structs should be replaced by sane c++ ones)

obtuse field
#

What is the difference between FInternetAddr and FIPv4Endpoint?

fossil spoke
#

Whereas IPv4 does not.

#

Which makes sense.

obtuse field
fossil spoke
#

Ah, my bad

#

I misread.

obtuse field
#

happens

#

Both have support for port and address, and hence my confusion

fossil spoke
#

InternetAddr is likely there to support either v4 and/or v6 addresses

#

๐Ÿคท

vagrant grail
#

Is there an event or something that gives a signal to say that all the player from the previous level were all transferred ?

fossil stag
#

maybe some one know, about a VR Videogame or software or pluggin or blueprint that let me connect one or more virtual reality device to a PC? , the PC is the server and VR de ices are the clients

glad robin
#

I don't have the best understanding with, but say if I had:
UPROPERTY(ReplicatedUsing=OnRep_Number) int Number; and the associated OnRep_Number().
If a client changes this value the OnRep_Number() will not be called on everyone whereas if server sets it then other clients will run, am I correct?

fossil spoke
#

The server side code must manually call OnRep in C++

glad robin
#

Ok I was correct in my understanding then thanks aha

maiden flame
sinful tree
#

Not sure if this is the proper solution, but maybe have the constructor call an event/function similar to like how Begin Play works, and then check if it's running on the client? From that begin play you can have your object locate and communicate with whatever you want it to. The alternative that I can think of is holding an OnRep reference you set in whatever is creating the object, assuming it is replicated. I believe the OnRep will fire when the object is successfully created on the client giving the client a valid reference.

native tapir
#

During Seamless Travel, the owner of the Inventory Object changed (because Controller is changed.) Despite changing the Outer in the SeamlessTravelTo function, does anyone know why the replication of the Inventory Object does not work?

lament flax
lament flax
#

mh

#

maybe UE does a specia lthing that make the client not updating its value from server

#

is your inventory a variable , struct ? ACBP ?

native tapir
lament flax
#

so inside this UObject, you got vars ?

#

to store your items and stuff

native tapir
lament flax
#

maybe set them to repnotify

#

and test travel

native tapir
#

repnotify is not triggering and Inventory is just null

lament flax
#

maybe the inventory is build before client, so when server sets the inventory vars, he got no clients to replicate to

native tapir
#

But I don't know how to set client's inventory that doesn't constructed? Controller yet. (Because PlayerController has InventoryComponent)

lament flax
#

i would try this :

after travel :

client side :

  • on beginplay, ask server for inventory data

server side :

  • event : return data

--
this would be a fix to get back data after travel, but you would need to check if after the travel, if you update your inventory, if the clients get updates by its own with replication

lament flax
#

im not a MP pro, but this is the only idea i got rn

upbeat basin
chilly haven
#

Hi,
Do dev teams generally split up code into modules (Server, Client, Shared), or folders?

#

I'm leaning towards modules

upbeat basin
#

I think it's more common to name your modules for your mechanics/systems

hoary spear
#

InventoryCore, InventoryEditor

upbeat basin
#

Like you can have an inventory module (I mean basically folders by modules) where you can have your Inventory component to add to your player, your Actor class that can represent actors in the world that can get into your inventory (I would prefer another component here but just giving an example) and your widget which would display on owning client to show your inventory content

#

All in a single module/folder which includes all server and client side code

#

At least that's what I would do

hoary spear
#

Bp separation/clear intent can be improved by decorating your ndoes with BlueprintAuthorityOnly and BlueprintCosmeticOnly

#

For the networking part ^

chilly haven
#

In my case I am plannng on supporting only dedicated server and dedicated client, i.e. no listen server.
So I don't want the server or client to contain any network code that is not shared.
So maximizing the separattion has a lot of appeal.

lament flax
#

well you cant really "split", for example, your BP PlayerCharacter will be 1 asset, and server and client side code will be inside

but you can create subgraph for server only stuff and client only stuff

chilly haven
#

That's a shared module. But there is also server-only code, client-only code.

lament flax
#

personally, i like adding "On Client" and "On Server" at the end of my interfaces/events/functions names so i can clearly see what is used where

chilly haven
#

Ideally you don't expose code that is not needed

lament flax
#

yes

#

but you canr create a BP PlayerCharacter for server, and another PlayerCharacter for client

#

it will be the same PlayerCharacter for both, but each server and client will have an instance

chilly haven
#

For example, since I am not supporting single player or listen server, I can move the gamemode class into a server module

lament flax
#

GameMode is always server only anyways

#

its not replicated to clients

chilly haven
#

I'm talking about exposing your code to players. Don't even put it in the exe.

lament flax
#

i think im misunderstanding what you call a "server module"

chilly haven
#

oh maybe. I mean the uproject segregation

#

"UE modules" as opposed to code modules

lament flax
#

i see now

#

not my thing so forget all i said previously, i dont want to tell you mistakes

chilly haven
#

haha np

lament flax
#

im a BP only dev so modules arent something i touch on a daily basics

chilly haven
#

Most people support single-player or listen servers, so they don't have the option to not ship server-only code

lament flax
#

im working on a dedicated only game to, but maybe adding support for self hosting depending on the project plan

chilly haven
#

ideally you decide in advance, because ideally you would do things differently

#

If only dedicated server, you can make it more secure (less hackable) and simpler code

dark edge
lament flax
#

for now im doing great with BP only, i will have to dive in cpp at some point

chilly haven
#

I'm the opposite, avoid BP as much as i can!

lament flax
#

ofc im not talking about the security part

#

im still new to MP

chilly haven
#

Yeah most secure is if the server code is not shipped to the players

lament flax
#

i prefer having dedicated server; and player can create sessions on it
a bit like creating private matchs of FPS

#

its a fake "self hosted" server

chilly haven
#

yup if you can bear the hosting cost

lament flax
#

but on project launch, when i'll see the costs of servers, i might do a beta launch with support of self hosting server using steam API

#

and if its going great, level up to dedicated servers

chilly haven
#

Self-hosting means code is more complicated because you have to support the case of a server that is also a client. Kinda a PITA.

lament flax
#

yes

#

more work for me

chilly haven
#

I'm already supporting listen servers and dedi but thinking of dropping listen

lament flax
#

but, if i can avoir paying a ton of money each months for dedicated servers, why not

#

its only a money decision for me

#

if i have infinite budget i'll go dedicated

chilly haven
#

self hosting still means players must tackle port forwarding etc

lament flax
#

steam already handles that right ?

#

any player can easily create a session and invite friends

chilly haven
#

Hmmm not sure. Normally done on your router

lament flax
#

hosted on player host machine

#

and steam API help with the server replication

chilly haven
#

unless all the network traffic passes through a central hub?

lament flax
chilly haven
#

me too lol

lament flax
#

from memory, there is not cost when using listen server on steam API

#

*no money cost

#

its the big advantage of steam

chilly haven
#

ima ask chatgpt

lament flax
#

its why small devs do listen servers games, because they have no fees with hosting

chilly haven
#

I think AWS has a free tier? to get you started

lament flax
#

yes but its a temp free

#

like a year free

chilly haven
#

oh. well 1 year to make your game succeed ๐Ÿ™‚

#

I thought it was size based

#

So chatgpt says Unreal has no built-in support for port forwarding

lament flax
#

mh

#

there is marketplace plugins for STEAM API

#

maybe they have some solutions

lament flax
chilly haven
#

looks like steam has some functionality to faciltate player hosting

#

player-hosted servers are always second best though

lament flax
chilly haven
#

Perhaps take a look at Playfab for dedi hosting. Also has a free tier. Supposed to make it simpler.

lament flax
#

seems great, ty

chilly haven
#

or AWS GameLift. Something similar I think

#

I suspect playfab preferred for small teams.

#

ChatGPT: "PlayFab has an official plugin available on the Unreal Marketplace"

#

BTW most dedis are linux, usually cheaper. More work to support.

maiden flame
chilly haven
#

Oh probably via the server/client defines

tardy fossil
#

yeah you've gotta build the dedicated server seperately

#

so it can strip out all the unneeded stuff the dedicated server wont use

chilly haven
#

@tardy fossil what do you think of the idea of splitting code into Client, Server, Shared UE modules?

#

to keep stuff as independent as possible

lost inlet
#

it's the whole reason the online subsystem abstraction exists

lament flax
#

i understand

tardy fossil
chilly haven
#

Yeah I meant for classes that exist on dedi or client or both. For shared classes you still need branching logic.

#

I tend to have GameMode create various manager classes, which are all dedi only

#

Guess I will try splitting it this way, see how it turns out

lost inlet
#

I've had client and server only game modules on a project before but they didn't get that much use

chilly haven
#

It's nice to be clear about which classes exist in which contexts. A looser option is folders.

tardy fossil
#

id say it depends a lot on the type of game too, like if your server does a lot of server only logic that doesn't exist on clients then yea it makes sense to split that up

lost inlet
#

yes, which is achievable through runtime conditions, but once you start having things like BP references that rely on client and server only modules, it can be more trouble than it's worth

chilly haven
#

Most of the backend stuff will probably be on the server too

chilly haven
lost inlet
#

well you should be because even data only BPs are a critical part of unreal workflow

#

on that previous project, the split modules had the voice chat implementation since for Vivox the client and server were doing very different things

hardy turtle
#

hey guys does anybody know if i can set the gamemode i'm in "listen" without reloading it?

chilly haven
#

I think I prefer ini files for data rather than BP variables

#

for many cases

quasi wyvern
#

whats the easiest way to retrieve the local ip adress via blueprint?

lost inlet
#

I'd be very surprised if that's readily exposed to BP, why?

true stream
#

is replicating movement expensive?

#

it would solve a few things, but I can work around it if it is. (many actors)

upbeat basin
true stream
upbeat basin
#

I don't know the answer of if it is or how much it is. But I use it without consideration to be honest. I have many actors that can be added to inventory, which requires to replicate the movement due to add/drop operations, so anyone can add the item to their inventory again. Didn't have any problems so far but I don't know if there is a risk in the future

true stream
#

right, in my case the game Im making its a sort of RTS so the units move every tick.

#

so I imagine it might have some overhead

upbeat basin
#

Hmm I'm not using it for that kind of movement

true stream
#

also, if you know, how can I profile these kind of things?

#

so I can check if Im abusing the network

#

or if you know of a guide of sorts

upbeat basin
true stream
#

oh cool Ill check it out

gloomy tiger
#

How do I get the final packet size a struct gets after serialization? Been trying FArchive's TotalSize(), but it seems it returns me -1 regardless (its implementation seems to be a INDEX_NONE)

muted reef
#

Anyone worked before on sitting movement ?

sonic obsidian
#

Hey all I'm working on a multiplayer project and I found out about the replication graph and was wondering if I would need it I'm going to have 30 people in each server (dedicated server) and how important is network bandwidth in a mp game I also heard somewhere that rep notifys should be used as much as possible instead of RPC's is this true?

limpid parcel
dusty void
#

^

hoary spear
#

^

dusty void
#

also yeah rep notifies should be used where it can be implemented but it ONLY replicates variable value changes from server to client, not the other way around, so if you need to implement some sort of client prediction/server correcting to make the game feel responsive, rpc's would be the way for it, there's a lot more to it tbh & hopefully someone with a whole lot more experience can correct me if i said anything wrong

lost inlet
#

though rep graph will be old hat by the time Iris is more stable

hoary spear
#

Is the gains that significant tho.

dusty void
#

it's what fortnite uses for their battle royale so it looks pretty significant considering fortnite is a very competitive game where that kind of optimization is important

hoary spear
#

I suppose they havnt shared any stats about its perf in fortnite ?

dusty void
#

not too sure, im just glad it works with the current replication system in projects rn

hoary spear
#

Surely its not just flipping a switch?

lost inlet
#

just the CPU load of the current replication system can get out of hand pretty quickly

sonic obsidian
#

Appreciate all the advice guys I'll start learning about the replication graph also heard about significance manager seams interesting too thanks once again.

hoary spear
#

Right, makes sense so far. But have they released any numbers on it ? Sureley fortnite managed with rep graph(?) And switching to iris didnt increase their playercount so...

#

Makes me wonder

lost inlet
#

but the motivation is likely to increase server density not player count

hoary spear
#

Fair enough, tho a stresstest would be cool

ruby ruin
#

Is there something special I need to do to get ENetDormancy::DormantAll to work?

ENetDormancy::Initial seems to work, but after flushing the net dormancy I would like to return back to dormant which won't work with Initial, and DormantAll seems to be the way for this to work, however, it does nothing. If I have an actor as DormantAll it will continue to replicate normally. Anyone know what's up with that?

fierce egret
#

In Begin Play, I attach an armour to AI_Enemy and set Leader Pose with multicast. Since the client is late in the game, Leader Pose with multicast does not work on the client, armor only attaches to the socket. If I use Delay, the problem goes away, but this is not the solution. How can I prevent this?
(first screenshot is server,
second screenshot is client which joins game late)

hoary spear
#

Repnotify is your friend.

#

Beginplay and network is not, at all

#

And rpc's doesnt reach late joiners

#

They only reach those who are already there, and relevant

fierce egret
#

How can I use Repnotify in this situation? Should I create a array called Attached Meshes and use attach functions in it?

hoary spear
#

Thats one way, Yes

#

You need a variable for the mesh(es)

#

And update this on the server

#

Mark it as rep notify

#

Then in the function you set the mesh to the variable mesh, and set leader pose comp

#

Test it first with single skel mesh ref, and go from there ๐Ÿ™‚

half iris
#

If I am doing physics simulation for an actor on the server side, I can disable physics on the client side right? On BeginPlay do a Switch has Authority, and set physics sim based on that?

hoary spear
#

Afaik physics simulation is... troublesome

#

Undetermimistic and such(?)

half iris
#

Yea I have been hearing that from more people ๐Ÿ˜…

hoary spear
#

So your best bet is prob server simulation with clients simply interpolating transforms or smth

half iris
#

Yea that is what I am doing at the moment, but then I realised that at the moment the client is still simulating physics (because it is default true for this actor). So if i on beginplay check if this actor is running on the client, and then turn off physics for it, it should be fine right?

#

Oh my, I just tested it, and it works like a charm ๐Ÿคฉ

#

Aside from the small bit of rubberbanding because of the delay between server and client, it looks much smoother now that the clients dont care about physics at all

hoary spear
#

You can likely add some prediction

#

To avoid most of the rubberbanding

fierce egret
#

It triggers only when i set array

hoary spear
#

Yes

#

๐Ÿ˜•

#

I prefer regular vars when its just a few

#

It doesnt support delta replication either i've heard so...

gloomy tiger
chrome bay
hoary spear
#

You positive about that? Not the first time ive heard one gotta set the array to trigger it

#

This is bp land

chrome bay
#

BP RepNotifies are a massive shitty hack so that doesn't shock me

#

But yea, I guess if it's Blueprint, you aren't modifying the array FProperty directly so it won't give you that fake "rep notify" callback that isn't even a rep notify callback.

#

How do people do anything multiplayer in Blueprint honestly

cursive steeple
hoary spear
#

Is it enough to set it to self ?

chrome bay
#

Blueprint networking is a meme.

hoary spear
#

Here i was planning my full blown rts in bp

cursive steeple
cinder quartz
# chrome bay Blueprint networking is a meme.

It is a meme mostly because it begs for C++ for everything. Though singleplayer games are fine being mostly BPs, I don't think any game can function decently with 100% BPs if they have multiplayer.

hoary spear
#

Depends om the game

#

Some multiplayer card game is probably working just fine

gloomy tiger
#

I have some bIsPushedBased = true; properties and would like to run some cleanup just after they got sent to clients (I don't care when they received them, just want to run this cleanup on the server after the server has done its task of dispatching these properties via the network). That said, is there any way I can "intercept" the replication frame? (Talking about some kind of OnPostReplicated)

ruby ruin
#

Is there something special I need to do to get ENetDormancy::DormantAll to work?

ENetDormancy::Initial seems to work, but after flushing the net dormancy I would like to return back to dormant which won't work with Initial, and DormantAll seems to be the way for this to work, however, it does nothing. If I have an actor as DormantAll it will continue to replicate normally as if it were set to Awake. Anyone know what's up with that?

half iris
hoary spear
#

something like that, yeah

half iris
hoary spear
#

thats the sane way to go about it ๐Ÿ˜›

#

try with some emulated lag

half iris
hoary spear
#

xD

#

no

half iris
#

๐Ÿ˜ฎ

#

Very cool

#

Gonna forget about my current task and look at this instead

hoary spear
#

haha

#

Is it ok with logic inside GetLifetimeReplicatedProps ?

#

feels like there shouldnt be any, but I kinda need there to be

#

Perhaps I should just subclass it and override for the specific one...

#

Sounds cleaner that way

maiden flame
#

It's not bad imo

maiden flame
halcyon totem
#

is itbad practce to cast to the game mode from the player controller so to get game modes enums for spawn? I wanted to just add a varible to the event but it gets access none so I figure casting to the game mode to get the actual game mode would help?

gloomy tiger
halcyon totem
#

thanks

#

is casting to the game state and player state in the player cotnroller also ok?

fossil spoke
lament flax
#

what would be the best way for the game state to update a blackboard key ?

fossil spoke
lament flax
#

well, idk if MP changes something so i wanted to ask here first

#

for instances, can a client change a BB key ?

fossil spoke
#

It doesnt? Behavior Trees are run on the Server.

lament flax
#

does the BB keys have same rules than replicated BP vars

lament flax
fossil spoke
#

No

lament flax
#

like, if i try to get a ref, will it be null or valid ?

fossil spoke
#

How would you though?

#

Think about what class executes a Behavior Tree

lament flax
#

you mean its only existing on server ?

fossil spoke
#

Sure, so then to access a BT you need access to the AI Controller, right?

lament flax
#

okay so yeah no clients can get the BB

fossil spoke
#

Clients dont have access to AI Controllers, because they only exist on the Server.

#

Therefore, Clients have no access to the BTs

lament flax
#

i understand your point now

fossil spoke
#

Awesome.

lament flax
#

didnt knew that AIC was not replicated to client

#

(which makes sens)

fossil spoke
#

The only controller type that exists for a Client

#

Is that Clients PlayerController

#

No other controller is Client side

wary marsh
#

Anyone know if the GMC plug-in would be useful for someone with limited MP experience to make a kind of fighting game? Not exactly a classic fighting game but something that would require pretty fast input response. Or would looking into something more along the lines of snap net be good.

For a bit more context, I'm currently replicating a root motion montage of a forward roll in a mostly BP project, and with simulated average lag is pretty terrible looking.

So I've been looking into other paths I might take.

Also maybe it's fine to use unreal default systems and I'm just doing it wrong?

opal shore
#

Is it possible to save the state of a game before the listen server leaves so they can resume later or this is not possiblr?

#

W sessions

fossil spoke
#

You would probably just initiate a save before the leave operation is executed?

#

Given that typically a "leave" is initiated by some sort of button press, you have control over when the leave actually occurs.

#

The "Leave" button would really be a Save + Leave operation

#

The Leave part would only happen after the Save was complete.

dark parcel
#

If u already have rubber banding at 0 ms, I would have doubts if it work at all in real settings

dark parcel
rare compass
#

Random question, I'm not sure where else to ask this. I'm using Steam for multiplayer, and on the server browser someone has created a server called "Kill all J***". Obviously that's extremely offensive, and potentially even illegal in terms of hate speech, but what on earth can I do about it?

Obviously I can't terminate the session because it's between the host and Steam's servers, and I have no visibility of the host's SteamID. Is this something I have to report to Steam? Has anyone else had to deal with this sort of thing? Thanks ๐Ÿ™‚

fossil spoke
#

Periodic saves?

#

You can only do so much

dark parcel
#

Is there something we can run before client is booted from the map when listen server leave?

fossil spoke
#

Potentially.

dark parcel
snow trail
#

hello, what alternatives do i have to Steam's online subsystem to make players be able to join other player's listen servers without having them port forwarded?

rare compass
dark parcel
#

I would worry more about putting my time for the gameplay

snow trail
#

the entire point is im broke so i cant afford to publish to any major online store lol
ill probably go for itch.io

dark parcel
#

@snow trail u r missing most of your audience already if you don't use the big platform

snow trail
#

im aware of that, but not sure i can do too much about it

dark parcel
#

Just publish on steam?

#

How much do you think it cost

snow trail
#

that requires money though

#

its 100โ‚ฌ

dark parcel
#

Right , if u can't afford that. Use their default app id

#

Then do a crowd funding maybe

snow trail
dark parcel
#

I mean to publish requires you to pay that $100

#

But just for testing and playing with friends, that's completely free

snow trail
#

i see

#

ill look into it then, thanks

fossil spoke
#

Are you the developer of the game?

icy jetty
hoary spear
#

Feels like I'm doing something illegal here

void UInventoryComponent::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
  Super::GetLifetimeReplicatedProps(OutLifetimeProps);
  if (bReplicateOwnerOnly)
  {
    DOREPLIFETIME_CONDITION(UInventoryComponent, Inventory, COND_OwnerOnly);
    DOREPLIFETIME_CONDITION(UInventoryComponent, InventorySize, COND_OwnerOnly);
  }
  else
  {
    DOREPLIFETIME(UInventoryComponent, Inventory);
    DOREPLIFETIME(UInventoryComponent, InventorySize);
  }
}
soft flare
#

Guys the "on owning client" node doesnt really work, isnt that supposed to do something only for yourself and nobody else can see it? i am trying to play a camera shake on my client but it keeps shaking for the server aswell

hoary spear
#

depends if you're doing it correctly or not

soft flare
#

Idk i have it followed to a multicast that plays my animation

soft flare
#

i tried it to put it behind a "run on server" but same thing

hoary spear
#

Who's the owner

soft flare
#

Wait i send the code

hoary spear
#

still gotta answer me that

#

who's the owner of the actor that holds the code

soft flare
#

the actor itself

#

or wym

#

I have 2 players and they play the shake in their code

#

after attacking

#

I have it on a montage notify

#

I cant fkn screenshot

#

it wont fire off for some reason

hoary spear
#

is it a player owned actor ?

soft flare
#

yes

hoary spear
#

or an unowned one?

soft flare
#

nono the player does it

#

in his own code

hoary spear
#

so which actor is it ?

#

Character?

soft flare
#

yes

hoary spear
#

kk

#

then play on owning client should work just fine

soft flare
#

finally

#

The owning client thing is behind the multicast so i think that messes it up

#

i tried to put it behind "notify begin" but same thing there

#

the only thing ive learned is i do variables on the server and animations and mesh changes on the multicast

#

but idk how to play things only for the owning player

hoary spear
#

you gotta clean up this mess

soft flare
#

its part of the function it takes all variables from the inventory

#

thats why its so filled

hoary spear
#

you can still clean it up

#

its an event graph

#

you got like 60 options