#multiplayer

1 messages Β· Page 52 of 1

thin stratus
#

Epic: "WELL, whatever..."

twilit radish
#

πŸ˜‚

verbal tendon
#

I've got a ton of stuff I want to open-source when I have the time

#

But I'm working 80h weeks atm ... and just don't have the time 😦
Something something startup life

thin stratus
#

I'm too afraid to burn out and also kinda want to have time to live :D

#

Doesn't surprise me

verbal tendon
#

:d

thin stratus
#

Ah, says the person who just said they are working 80+ hours a week. :D *jk

#

"Burned out from 120+ hours of work per week"

verbal tendon
#

I had 4h sleep between days during the week, collapsed on my bed on Sundays

fresh cloud
#

that feels very β€œwe want a rock star that can work in our fast paced environment”

#

OOF

verbal tendon
#

And then it was like a truck going at 120kmh into a wall, my body just stopped

thin stratus
#

"We offer dynamic work hours" aka "You can choose during which 4 hours to sleep."

limber gyro
#

i have no idea how people function on less than 9h of sleep per day

thin stratus
#

Although, I probably said the same to employees during hiring process >.>

formal path
limber gyro
#

i mean, i did that like 15 years ago and i just slept in class so...

thin stratus
#

Idk, the only people I know of that do that either nap during the day or crash on the weekends

formal path
#

i just need a shock bracelet that zaps me awake when compilation finishes

limber gyro
#

life is not about just making games, sometimes you have to play them...

thin stratus
#

So this partially works. It stops the "push away from each other" stuff, but the characters aren't able to walk anymore as they are now stuck. Hmpf

#

Maybe I just have to return true instead of false, indicating it was resolved

#

NOPE, still stuck

woeful ferry
#

Hi,

We're currently running into an issue where a replicated component is not replicating a TArray of vectors to new clients. The array only gets replicated when a new entry has been added, while the client is connected, they don't get the updates from the array when they join.

However, the new entry is replicating correctly to clients, but all the old indices that were added before the client has joined are 0,0,0.

prisma snow
thin stratus
# thin stratus So this partially works. It stops the "push away from each other" stuff, but the...

So, the reason this doesn't work is that in a lot of other places, the Characters are still blocking each other. E.g. when finding the floor it still traces the other character and stuff like that.

Setting them to IgnoreWhenMoving obviously works, but I also noticed multiple other issues, like "What if they are ignored due to something else?" and even if I keep a custom list etc., I still have issues like "What if an Ability causes a player to land in another? I don't have a way to identify those targets ahead of time (player could be running there while the other is still in the air), so I can't really set them to IgnoreWhileMoving.
Means i would need to make them only overlap pawns during that time and then figure out afterwards if they are overlapping someone and then ignore them while moving.

What an annoying feature

thin stratus
woeful ferry
#

On the server

thin stratus
#

And where is that code located?

woeful ferry
#

In the component

thin stratus
#

Which one

woeful ferry
#

that we're replicating

thin stratus
#

Just overall a bit more info would really help narrowing down what could cause this :P

#

What Actor, what Component, how is the Variable Declared, when is this being called. etc.

woeful ferry
# thin stratus What Actor, what Component, how is the Variable Declared, when is this being cal...

It's on a replicated actor that is set to always relevant. It's being called when you interact with foliage to remove a HISM instance to replace with an actor.

    TArray<FInstanceInfo> RemovedInstances;```

```void UOGHierarchicalInstancedStaticMeshComponent::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
    Super::GetLifetimeReplicatedProps(OutLifetimeProps);
    DOREPLIFETIME(ThisClass, RemovedInstances);
}```
#
    if (GetOwner()->HasAuthority())
    {
        RemovedInstances.Add(InstanceIndex);
        OnRep_RemovedInstances();
    }```

So this is getting called on the server, when we replace the instance with an actor. So the client can remove the HISM too.
#

The HISM component is what is replicating this array

thin stratus
#

That's indeed strange

#

Can you show me the FInstanceInfo struct definition

woeful ferry
thin stratus
#

If you think the Component itself is at fault, then I would suggest moving the Array to the Actor and checking if that makes a difference

#

Just for testing of course

#

Since you say it's stably named, I assume you runtime spawn this on Server?

woeful ferry
#

That we replicate

#

But yea, once you play, the array replicated as it should. Just the initial update of old indices that are screwed up

#

But I’m gonna try put the same type of array in the actor to test it first

thin stratus
#

If that works, you could alter your Struct to contain a pointer to the Comp it is targeting to make the entry unique again

#

But yeah, less than ideal

woeful ferry
#

Yea, unfortunately it replicates as it should in the actor.

woeful ferry
#

I asked in UDN aswell, maybe can get some clarification πŸ˜„

opal fox
#

this might be a multiplayer problem idk . it doesnt print hello

chrome bay
#

Could be a side-effect of whatever procedural system you have

rocky topaz
#

what's the best way to implement input pause while waiting for the race to start?

woeful ferry
rocky topaz
#

I see the GameMode already has something similar but I can't find how it works exactly

chrome bay
woeful ferry
rocky topaz
#

AGameMode::StartMatch seems to be doing nothing?

chrome bay
woeful ferry
chrome bay
#

Yeah ok that's what I meant RE proceduralism

woeful ferry
#

What can cause it

#

Because the client never receives updates when they join until a new index has been added

chrome bay
#

Can't think of anything off the top of my head, I can't see any reson why server wouldn't send hose values - so my guess would be that the client receives them before it's spawned the object

#

And client has no object to mapped the data too

#

Sometime later it gets the update about the new element

#

But it would be worth figuring out if the Server is even sending them first

rocky topaz
#

from FindPlayerStart lol :

AActor* BestStart = ChoosePlayerStart(Player);
    if (BestStart == nullptr)
    {
        // No player start found
        UE_LOG(LogGameMode, Log, TEXT("FindPlayerStart: PATHS NOT DEFINED or NO PLAYERSTART with positive rating"));

        // This is a bit odd, but there was a complex chunk of code that in the end always resulted in this, so we may as well just 
        // short cut it down to this.  Basically we are saying spawn at 0,0,0 if we didn't find a proper player start
        BestStart = World->GetWorldSettings();
    }

    return BestStart;```
#

// This is a bit odd, but there was a complex chunk of code that in the end always resulted in this, so we may as well just
// short cut it down to this. Basically we are saying spawn at 0,0,0 if we didn't find a proper player start

chrome bay
#

The object being stably named means the network system will just assume the object can be reached via it's outer (which is probably the level)

woeful ferry
chrome bay
#

Just check the logs first to see if there's anything untoward (turning on some verbose logging may help also). You could either a) run a network profile and see what is outgoing or b) drop a breakpoint somewhere in UReplicationDriver::ServerReplicateActors to see what it's sending

#

Probably an easier way but can't think of it atm

#

Oh sorry UNetDriver::ServerReplicateActors is the one you want

#

If the server actually is sending the data, it's probably a race condition between server sending it and client spawning the object to receive it.

#

But because it's stably-named (possibly fully stably named) - the client won't do anything about it I imagine

woeful ferry
#

I'll check these out, thank you! πŸ˜„

opal fox
#

when server looks down it looks down on clients screen but when client looks down it doesnt show up on servers screen

#

is there a fix to it

woeful ferry
#

Send the client's rotation to server

opal fox
#

in blueprintss right?

#

caould you show where and how?

woeful ferry
opal fox
#

bp

#

thanks in advance

#

can anyone help

blazing spruce
# opal fox can anyone help

I had this in an old character class i did ages ago, not sure if its the 'correct' way of doing it but it worked for me

opal fox
#

k tysm

#

ill try it

blazing spruce
#

again, old class no idea if its the correct way to do it lmao

opal fox
#

k ty2

#

ill give it a try

pallid mesa
#

iirc eXi, UT implements this in some shape I believe

#

holy crap, the syndrome of not scrolling down -

quasi tide
#

I always scroll down at least a little bit to see if something was answered

acoustic moth
#

oh i needed help with the launch character. i have this issue where the first client launches fine, but when running on a server the 2nd client does the animation but the launch character is done on the first client. is there a way to fix it. im doing the blueprints in a GAS ability.

thin stratus
still wraith
#

I have a replication question for you gurus that I cant seem to wrap my head around. I have a pickup that I want to display a UMG widget on. But I only want it to be visible for the 'owner' of the object. I am a bit confused, but this will only work on the server, the owning client (and other clients) will not see it. What am I missing
*screenshot of pickup BP

thin stratus
#

I currently ended up on just having the Character in question be marked as Overlap for Pawns until they don't overlap any other Paw, and that's it. Not ideal cause that means they could walk through a series of Players before collision is restored.

still wraith
thin stratus
#

Cause if it's just the overlap then all you have to do is cast the OtherActor to your Character and check if it's locally controlled

#

No need for setting ownership or rpcs

still wraith
#

oh

thin stratus
#

Ownership will also not work if someone else overlaps afterwards. So that would be flawed anyway

still wraith
#

Interesting. Ok, let me try that! Thanks

#

yep that worked! Much appreciated.

dark edge
#

Overlap -> Cast to your pawn class -> is locally controlled? -> show widget

#

That might break down for AIControlled pawns on the server if it's listen server but that'll get you closer

#

The accurate test might be
Overlap -> Cast to Pawn or YourPawn -> Get controller -> is equal to Player0's Controller? -> Show widget

fathom aspen
dark edge
#

ah yup im the blind one

#

Not sure if an AI controlled pawn would trigger that, not sure if they pass IsLocallyControlled or not on server

fathom aspen
#

I guess AI are locally controlled on server

#

But I didn't catch up with the full context and the OP's goal

blazing spruce
#

Hi, anyone have any experience with making a main menu party system?
I'm trying to work on a proper party system that allows players to connect to a 'party host' while on the main menu and then the party host can find a session which all members of the party join (the party host in this scenario isn't the host of the session that they all join however), once the session is over I want it to take the party host and all party members back to the main menu again with all party members staying connected
I've realised you cant do this through hosting sessions but I've stumbled across some info pointing towards the OnlineBeaconHostObject & OnlineBeaconClient classes or the PartyBeaconHost & PartyBeaconClient classes OR there is also a IOnlinePartySystem interface
Info on all these is a bit sparse so first of all I'm wondering out of all of these, which is actually the correct way of doing it and secondly, can this only be achieved through c++? cause so far that's all I've seen

pallid mesa
#

Can't remember where but if you boot UT you can try to put one character inside another and you'll notice something

thin stratus
#

Alright will have a look on Monday, thanks!

young spoke
#

anyone have a good reference document on ability system replication?

#

trying to get an understanding of how it's handled underneath the hood for Autonomous vs. Simulated

#

or if you understand it well, lets talk

twin juniper
#

Question-
Is there a way to determine which player is the local one? Scenario, making an interaction component that needs to fire events for the local player only and not any of the replicated players. I figured I could check for local controller as the owner. But is there a better way? Perhaps checking the local role?

sinful tree
twin juniper
sinful tree
#

If its local then you can still do the same just without the RPCs.

#

ie. You press "E" button all logic that stems from that will only execute on the local client until you happen to call a client -> server RPC.

twin juniper
#

Here let me rewrite this. So I have a component that is on all player characters. This component runs logic on tick. In a game with 4 players I dont want each of the 4 characters running this logic. Only the local player (the one doing the controlling) do I want to run this logic.

arctic minnow
#

Why are these montages not working network replicated the other client cant see me do them?

sinful tree
rocky topaz
#

are RepNotifies called when an actor's value changes before the client joins the game?

#

I guess not

fathom aspen
fathom aspen
rocky topaz
# fathom aspen If there is no client, who will they be fired to

I meant like if something changes in GameState before an actor finishes logging in they will have the new value directly but would that mean they would fire OnRep as soon as they receive it since the value isn't the same as the one constructed by default or would it ignore the fact that it changed?

fathom aspen
#

They will get the latest set value on the server

#

So no, it won't be ignored

rose torrent
#

where should i handle a loading screen in the transition map? on the level blueprint?

weary mason
#

LogNetPackageMap: Warning: InternalLoadObject: Unable to resolve object. FullNetGUIDPath: [241]NOT_IN_CACHE
LogScript: Warning: UGameplayStatics::BeginSpawningActorFromClass: can not spawn an actor from a NULL class

#

spawning a replicated actor on the server does not spawn it on client ?

rose torrent
short arrow
#

I've never done it before, but I'm pretty sure that's what Easy RPG kit does and it works just fine

#

It costing $350 and forces people to rate 5 stars in order to get access to their discord... So I assume it's the right way to do it kekw

glad escarp
#

I don't know if this is a question for this channel or for online subsystens. There's some overlap in my mind so let me know if I need to bring this to another channel please.

If I want to have earned or purchased cosmetic items for my characters, what's the most common way devs use to achieve this? Would I have like a data table of items for instance, that could be unlocked, and then a corresponding cloud variable that gets checked on the online platform after authentication? I'm having trouble finding any resources for learning this. Probably not using the right key words. Or if that's not clear, I guess I'm just wondering what the best practice is for securely storing player inventory and unlockable abilities/items in a multiplayer game?

weary mason
#

net.AllowClientRemapCacheObject fix your caching problems after map travel ?

real ridge
#

guys what I should use for character as replication movement? I know character CMC is default replicated but I dont see move when I use this Add actor local rotation should I use something else?

jaunty panther
#

it rubberbands back wether its client, server or multicast

thin stratus
#

It might have?

obsidian cargo
#

Does an AController and APlayerState get instantiated and replicated for every AI agent? I'm thinking this could get costly for swarms of AI controlled entities such as zombies or ambient wildlife.

dawn ledge
#

AIControllers are server only, and it has a flag bWantsPlayerState for whether each controller should have its own player state

obsidian cargo
dawn ledge
#

I wouldnt think so

#

they should be replicated like any other player state

fathom aspen
#

It's not safe. By default it's replicated and always relevant

obsidian cargo
#

Do controllers own the player states?

#

So does that mean the AI's PlayerState just replicates as a state not owned by any controller?

fathom aspen
#

Replicates and owned by AIController, otherwise the βœ… would be awkward

obsidian cargo
#
class AController* GetOwningController() const;```
#

Oh I see

#

I think I understand. Thanks for helping me with the knowledge gap!

dry pebble
#

When is the best time to take down a loading screen after connecting to a dedicated server and your character being spawned? Currently I tried taking it down on Begin Play of the character but it's too early and the map is frozen until eventually the player is standing and ready to move.

woven basin
#

no idea if thats good practice or not though - so /shrug

#

if that doesnt work - then it would imply that you are still replicating in assets from the server? In which case you'd need to track what is still left to bring across and poll until all state is done.

twin juniper
#

Playing as listen server, I have an actor not replicated. Why does it say Role = None on the client. Even when the actor is spawned in the level and not replicated. Shouldnt each instance be the authority over its own actor?

#

When spawned by the client its role = authority. (Non replicated actor).
When actor exists in a level its role = None on client (Non replicated actor).
Shouldnt non replicated actors not have to be NetLoadOnClient ?

dry pebble
cloud stirrup
#

is it possible for one server to controll multiple levels. so id be able to run 1 dedi server and when people are "online" in that server i can then hop them between levels/areas without them needing to go to a different running server instance. unless obvs 1 instance didnt cut it in respect to performance.

#

or would it be that the server would have to also go between the levels with the player so impossible.

midnight steeple
#

Hello, i try to start an EQS but if i'm not the authority i have this error :

#

Has anyone experienced this before?

pallid mesa
#

IE: world completely loaded, Asc created, inventory fully replicated...

real ridge
#

i tried add movement input but it was really weird movement hehe

thin stratus
#

ControlRotation is part of the Controller but there are accessors in Pawns/Characters for it. E.g. Add Control Pitch

#

The CMC uses the Control Rotation for its movement

weary mason
thin stratus
#

The issue that originally fixed was that actors weren't being spawned on the client side anymore.

#

As in, the actor spawned on the server didnt spawn after it was replicated cause the client failed to find the matching class or something like that

weary mason
#

exactly

thin stratus
#

This was highly technical

#

Had nothing to do with GameInstance

#

GameInstance should never hold an array of actors to begin with

weary mason
#

i'm saying to store ref

#

so how would one fix this issue ?

thin stratus
#

What issue exactly? Are you trying to save an actor to the GameInstance before traveling to a new map?

weary mason
#

i'm not i have replicated actors, Character weapons to be more precise i have the server spawn them at runtime on the char

#

they do not require saving

thin stratus
#

So you spawn them freshly whenever you arrive at the new map?

#

I'm unsure what your GameInstance comment was about then

weary mason
#

everytime a char respawns yes

#

was suggesting if it would fix the issue

#

LogNetPackageMap: Warning: InternalLoadObject: Unable to resolve object. FullNetGUIDPath: [241]NOT_IN_CACHE
LogScript: Warning: UGameplayStatics::BeginSpawningActorFromClass: can not spawn an actor from a NULL class

thin stratus
#

Does it spawn on the Server?

weary mason
#

yes reliable

thin stratus
#

And randomly not on the client after traveling?

weary mason
#

and the actors are replicated

#

some random client have this issue some dont

thin stratus
#

What engine version do you use?

weary mason
#

latest ue4 my hand are tight to physiX

thin stratus
#

Hm

#

We had that issue in 4.26 or so on The Ascent

#

All the info about it is locked behind a private udn thread

#

Despite what I posted here

#

I assumed epic fixed it back then

weary mason
#

engine bug ?

thin stratus
#

Yeah I think it was an engine bug

#

The console variable basically being a workaround

weary mason
#

so having a controller set net.AllowClientRemapCacheObject 1 would fix the problem ?

thin stratus
#

It's been like 2 or so years since I dealt with it. I'm half sure it fixed it. But you want to just enable that by default on your game

weary mason
#

could it be a .cpp fix i could apply to the engine miself ?

thin stratus
#

I don't know. If this was fixed by Epic in later versions/UE5 then yes, but it could be more involved than some CPP file. Also no idea where to find that specific commit if it exists

#

I can't see the UDN post anymore. That's property of Neon Giant

shy gust
#

hey all im using Smooth sync to replicate my vehicles movement , and im not sure how to replicate the Z rotations of my wheels, ive turned on Comp Replicates on each wheel and all the other objects up the chain but nothing happens. im a bit new to networking in Unreal but in Unity id just sync the child objects transform same way but i dont see the option in Smooth sync for UE.

weary mason
thin stratus
#

@weary mason yes that sounds pretty much like what I discovered back then

#

:D anything but fun to figure that out

#

TargetFix 5.0

#

Makes sense you still experience it

weary mason
#

yeah il apply the fixes to my engine version,

thin stratus
#

πŸ‘

weary mason
#

thx if it weren't for you i would probably never had figure this one out

thin stratus
#

No worries. (:

real ridge
thin stratus
#

And then the character needs to have "Use control yaw" etc ticked

#

Or the CMC. One of the two should have those settings

real ridge
#

super nice thanks I didn't know this where I can read little bit about? + do I have to tick flying in movement? because my plane is flying even it's ticked or not

#

so i am confused hrhe

#

i mean it's not falling maybe because I put gravity to 0

thin stratus
shy gust
real ridge
# thin stratus CMC requires AddMovementInput and AddControlPitch/Roll/Yaw

also for this I got idea when I am trying to tell my plane that it should fly forward I have function called update position its calculating from gravity, speed etc position where it will be and I am using there Add Actor world location and this one is replicating its bit strange should it not work?

thin stratus
#

No I literally just told you that you need to use the AddMovementInput node

real ridge
#

Yes I know but why then this add actor world offset works?and it's replicated

shy gust
#

I was gonna say that but i didnt wanna be wrong if you want the vehicle to move at a specific speed youd change that in the CMC im pretty sure

real ridge
#

without rpc

shy gust
#

because youre just changing the position in the world , which should already work naturally if its replicated

#

the CMC just has its own fancy ways of apply movement with acceleration and other various things

#

for example in my game im using Add force to apply movement in a physics based scenario

thin stratus
#

It works but this is not predicted

#

It will just result in teleporting

#

You need to use the Movement node cause that supplies the CMC with an Acceleration that does all the rest for you

shy gust
# thin stratus It works but this is not predicted

btw do you know anything about replicating component transforms? for my static mesh wheels im trying to figure out how to send the Z rotations over. im not sure if its as simple as ticking "comp replicate" but ive enabled it for the other comps in the hierarchy as well and nothing happens.

real ridge
real ridge
#

atleast about CMC

real ridge
thin stratus
#

So this is totally fine and correct

thin stratus
real ridge
#

i understand what is inheriting etc.....

thin stratus
#

Because your camera or its spring arm is probably set to use control rotation

#

Check the settings of them

real ridge
#

yes it was it, now I propably need to tick same for skeletal mesh as its not moving

#

this should be ticked for character

#

right?

#

yea its working wow

#

woooooooooooooooooooooooooooow

#

wohohoho

shy gust
real ridge
#

movement is now working, roll, yaw,pitch last thing I need find out is flying forward

#

only thing i need also find out is why i cant turn 360degress + like around myself it will stop me at 180 degrees

#

in every direction

#

thats wrong

#

ah ok its stoping me only with pitch + roll

near granite
#

Is it possible to chage the world coordinate of persistant level after loading or during loading that?

thin stratus
#

Haven't had to deal with that in a while. I fell back to using Quaternions last time, but that's out of question in Blueprints

limber gyro
#

i need to set a a bool "firstWinOfTheDay" after the match is over, doing it on the gamemode wont work i assume since gamemode doesnt exist on the client, gameinstance is not replicated and i use a different gamemode for the lobby so i dont think i can use the player state or gamestate(not sure on this), where would the best place be to put that variable?

thin stratus
#

Hm, what is that variable for?

#

Because "firstWinOfTheDay" sounds heavily like a game feature that rewards you currency or so

limber gyro
#

ye it is

thin stratus
#

Is this a competitive game?

limber gyro
#

but it needs to be set on the server

#

ye

thin stratus
#

That variable would not exist in UE then

#

but in your backend

limber gyro
thin stratus
#

Then don't make a competitive game

limber gyro
#

working with steam stuff is a pain

thin stratus
#

You need to store this away from the Player and somewhere persistent

#

That is also not a variable to put into steam

limber gyro
#

im using steam as my backend

thin stratus
#

Steam doesn't have a Database, neither can it execute code though

limber gyro
#

well it can store variables per user

#

like MMR and stuff

thin stratus
#

You mean via Steam Cloud?

limber gyro
#

isnt there a way to do this localy?

thin stratus
#

Sure but then people can cheat

limber gyro
#

im not sure if its in the steam cloud

#

gime a sec i will get u print screen

thin stratus
#

From what I know, Steam can't handle this for you

#

Which is why users code their own or use expensive third party services

#

Like Playfab

#

and shit like that

limber gyro
#

ive used playfab, didnt like it, steam can store some stuff

#

its not as complete as playfab

shy gust
#

i havent experimented much with save data in UE but i imagine you could just read the real date and check for a different date from the last and lazily call it that way

limber gyro
#

but at least is not a rest api

civic kite
#

check firebase

thin stratus
#

Well

#

Steam's Stats aren't really meant as persistent user data

#

They are meant to store some int or float values to progress achievements

limber gyro
#

i dont think thats true, the steam docs specificly mention MMR if i remember correctly

#

they make a destinction for stats and achievements

thin stratus
#

That's fair

#

That's cause they provide matchmaking

#

But "first win of the day"

#

And "currency" stuff is not really a steam thing

#

And we originally talked about first win of the day and currency :<

limber gyro
#

well i could probably get away with a bool in the steam stats but i rly dont wanna make call to get just a bool, the worst that can happen is that instead of a player playing a game or 2 to get the reward they just login and get the reward

#

so going the unsafe route, where would be the best place to put that var?

#

yes u did mention currency haha

thin stratus
#
  • Storing it on the Game Server means it'll be gone once that Server restarts after the match.
  • Storing it on the Client means it can be (and will be) cheated
limber gyro
#

im going with lootboxed tho haha

thin stratus
#

And storing it as a SaveGame on the Game Server would mean you need some shared drive and control read/write

#

Yeah all I can tell you is that without a system like PlayFab, you will either have to live with cheating or not do this at all

limber gyro
#

im gonna do it with the risk of cheating

#

its not a serious issue

thin stratus
#

Β―_(ツ)_/Β―

limber gyro
#

i just need to know the best place to put it

#

can we replicate in the game instace?

thin stratus
#

No

limber gyro
#

so what are my options?

thin stratus
#

If you don't care about cheating, tell the Client that they won a Game

#

And save that locally in a SaveGame for them

limber gyro
#

i rly didnt want to add another class just for this fml

#

haha

#

ok you cant replicate in the gmaeinstance but you could call a RPC and get the game instance locally no?

#

throug the gameState

#

?

thin stratus
#

A Multicast in the GameState, yes

limber gyro
#

ye thats probably what im gonna do

plush wave
#

Where do I get replicated input?

#

I need the server to see the input that the client player controller is making

#

Character->GetCharacterMovement()->GetLastInputVector() doesn't work

#

Character->GetLastMovementInputVector() doesn't replicate either

real ridge
#

to use full turn in every direction

#

also I noticed it is always using centered X Y Z what is not ideal even I am rolled left and push S or W I am moving in centered X not in that rolled X... Shiet

plush wave
#

Somehow acceleration is actually input

#

Smh

unkempt wing
#

My logs have just vomited up the following message a bunch of times before not letting my clients in:

LogNet: Warning: PacketHandler isn't fully initialized and also didn't fully consume a packet! This will cause the net connection to try to send a packet before the initial packet sequence has been established. Ignoring.

#

What causes this and how can I fix it?

#

Temporary fix: removing OnlineSubsystemSteam.SteamAuthComponentModuleInterface from [PacketHandlerComponents] in DefaultEngine.ini got rid of the problem but I do need to root out the problem as that's a necessary component

real ridge
glad escarp
#

Hey smart people. I'm wondering what the best practice is for securely storing player inventory and unlockable abilities/items in a multiplayer game? Would I have like a data table of items for instance, that could be unlocked, and then a corresponding cloud variable that gets checked on the online platform after authentication? I'm having trouble finding any resources for learning this. Probably not using the right key words when I search.

limber gyro
#

if its very important then u do it on the backend

#

if not u can store it wherever rly

#

the way steam tells you to do things is to have a "copy" of ur database in game and then u can check against it

#

its not really a copy u can just store whatever is nescessary

#

it is as you said mostly but it depends on your back end

#

the way i did it, i just keep a copy of the database and then fetch my inventory in the server

glad escarp
limber gyro
#

you can use that yes, or you can use the inventory directly

#

you could probably even use achievements

glad escarp
#

Hmmm. Interesting idea. What do you mean the inventory? Steam Inventory? Haven't looked into it as I've been using EOS via the Redpoint interface.

limber gyro
#

have you played cs:go?

#

its exactly like that

#

im not sure if its even possible to make EOS work with steam inventory tho

#

with steam inventory u basicly give your players items that stay in the inventory and then u can use them in game by fetching ur players inventory

#

theres the added benefit of your players being able to sell those items on the community market and u get a share of that sale

#

When i make a session and leave and then try to create another session it doenst let me, i assume i have to destroy the previous one before making a new one is that correct?

#

if yes, would something like this cause problems?

twin juniper
#

Hey, i have a multiplayer project set up with session hosting and joining but the players arent visible to each other. I'm using the default ue4 pawn class. Replication options seem to be ticked for the pawns but still no luck, how do i fix this?

limber gyro
#

are you using c++?

twin juniper
glad escarp
azure cape
#

hey, a lot of the unreal doc says that unreal networking is server authoritative
is there any way to write client-authoritative code regardless of that?
in my case, I want each player's inventory to be managed entirely client side (picking up items, equipping or unequipping gear, etc), but still networked so other players can at least see the content of each player's inventory
I wanna also be able to save that inventory when the player leaves but that's a whole other problem I imagine

#

also I know this means player can cheat by giving themselves whatever items they want but I'm fine with that

#

thanks
if I try to set a replicated variable client-side, won't it just ignore the changes by default? I could RPC that stuff to the server but it'd be less responsive I imagine

prisma snow
#

I don't think I have ever replicated from client to server directly, dunno if it's possible

azure cape
#

the other problem with RPCs is that since I'm only replicating changes instead of the current state of the inventory, other players joining mid game wouldn't see player 1's inventory

prisma snow
azure cape
#

I know, that's why I'd like to use variables

#

I'm thinking of using a replicated variable with Skip Owner and to have the owner both set it locally and RPC the change to the variable to the server

#

even if that works it's hella roundabout

#

really dislike the whole "enforced server authority" thing, completely disregards the real reason most peoples want to do client authoritative stuff in the first place

plain torrent
#

Hey all, has anyone here worked with large scale chaos replication? How viable is that in practice with default systems, or would I be better suited going the voxel route?

azure cape
#

is it possible to make a blueprint event that runs both on the server and the client when called from the client? without making duplicates of the event

#

as in it tells the server to run the function server side, but also immediately runs it client side without waiting for the server to tell it to do so

quasi tide
#

Client calls a Run On Server event
That event then calls a multicast

quasi tide
#

As long as the client owns the actor, it'll be fine.

#

Of course there may be some server corrections, depending on what you are doing.

azure cape
#

yes but I want what I'm doing in that function to also happen on the server, at least partially

quasi tide
#

Then call it on the server as well

#
  1. Client calls run on server event
  2. run on server event calls the function
  3. Client also calls the function locally
azure cape
#

how would I do that in a blueprint? as far as I can tell, events can only be called from client but run on server, or be called from server but run on client

quasi tide
#

Not at all

azure cape
#

I don't see any way to call a single event and have it immediately run client side but also server side

quasi tide
#

I literally just told you

hushed rain
#

Wouldn't something like a button press immediately run client side?

quasi tide
#

Button as in UI, or button as in controller?

hushed rain
#

Input

quasi tide
#

Yes. How else would it be done?

#

The client is the one physically pressing the input

hushed rain
#

That's what im saying lol

azure cape
quasi tide
hushed rain
#

ya, all inputs happen locally so idk why hes struggling haha

azure cape
#

so it's impossible to do in 1 function then?

quasi tide
#

Of course

azure cape
#

okay, thanks
prolly not gonna be very clean but if there's no better way to do it

quasi tide
#

It makes sense once you understand the flow of communication

hushed rain
#

I suggest watching some replication videos

azure cape
#

I know how the information flows, it's just annoying that there's no shorthand for "run function on client and server in 1 event"

hushed rain
#

isn't a run on server event called from a client automatically "1 event"

azure cape
#

yes but won't it not run on the client?

hushed rain
#

but doesn't it run locally?

quasi tide
#

No

#

Run on Server is the client telling the server to run the function on the server

azure cape
#

yeah

#

there's no "run on client and server"

hushed rain
#

yea then u gotta relay the info back to client right

#

run on client and server, isnt that a multicast?

quasi tide
#

It is, but they want the function to be ran immediately locally

latent heart
#

No, that's run on all clients and server

quasi tide
#

So multicast doesn't fit their desires

hushed rain
#

Ahh

azure cape
#

multicast is telling the server to tell all clients to run a function

latent heart
#

Sort of. As long as you don't mean "It's a client telling the server to.."

#

The server has to invoke those methods itself.

azure cape
#

right, sorry

#

so we're in agreement this is the best way to do it then?

#

I'm pretty sure it doesn't even work

quasi tide
#

Well - for one, the server event is not a Run on Server

azure cape
#

oh lmao I forgot to set it yeah

#

still doesn't work I think, the variable gets replicated to the client anyway
that or the notify gets called when it's set locally

quasi tide
#

It'll be called in both instances because it is BP

#

The notify function is called every time the variable is set when done in BP

azure cape
#

okay, thanks

crystal crag
#

One thing I don't understand about Lyra is there choice to make everything have a player state. They tout it as being able to be used for any type of project, but isn't it problematic to build an ARPG where you have tons of AI characters that all have PS?

#

PlayerStates are always relevant, so they're always replicating / taking up computations, even if the players are all the way across the world.

azure cape
#

I think you're supposed to use the replication graph in cases like these

crystal crag
#

In which case, having them all have their own player state is not as big of a deal?

#

Obviously the answer depends on how big of a world / type of game you are making and its requirements, but just generally speaking, does that drastically cut down the concern?

azure cape
#

presumably, as you'd use it to configure how often if at all different things get replicated to different players, based on distance among other things

crystal crag
#

Ok

#

Thanks

#

I've never worked with replication graph and have always used the traditional (maybe now old-school) replication model. I wonder how hard it is to implement.

#

addtionally, there is some new buzz word floating around called Iris, which maybe will replace even the replication graph?

dry pebble
# pallid mesa Hey Meags take a look at Lyra, their loading screen is pretty neat and it has be...

Ohh thanks Vori!! I will have to look into. I realized my problem is I was running the game from an external hard drive so even though the map finished loading and the character was ready, it was frozen on the map until something in the background was intiialized. Running from an SSD was very fast, but on an internal HHD about 2 seconds of the frozen map thing. Any ideas if Lyra can help with that or if there's any callback functions to tap into when the map is officially ready? (not just onpostloaded etc.)

pallid mesa
#

iirc Lyra's loading screen hooks itself to a map load delegate, it also has a setting to extend some seconds or so the loading screen in case you need some more extra time for texture streaming... There's no delegate in the engine that triggers when texture streaming and vegetation are ready so that's why sometimes you might want to extend the loading for a couple of seconds

#

@dry pebble

graceful flame
#

Also on the subject of loading I recently made a BP_Preloader which spawns all of the particle systems that can possibly exist on the level or gamemode or character ... etc and hide it underneath the map. This way they all fire at once when the map first loads so there's no hitching when they have to load for the first time during gameplay. Not sure if this is the proper way to do things but it seems to be working so far.

graceful flame
#

I wish there was some list of all the classic things like that.

#

Stuff that a well experienced dev would say something like "ya...duh that's how its always been since forever"

pallid mesa
#

Yeah.. well I guess you can learn some of this stuff by watching some dissections of classic games.. there are some interesting podcasts and YouTube channels you can follow for that.. but yeah it's quite sparse

graceful flame
#

I'm hopeful for a compact list of dense tips instead of sifting through hours and hours of post mortems

pallid mesa
#

I specially enjoy the devs react to speedrun, they sometimes share cool development stories and stuff

graceful flame
#

Yea those are fun to watch every now and then

azure cape
#

Hey, does the unreal doc have an entry level tutorial on starting, finding and connecting to online sessions? There's a quick start tutorial on the actual gameplay but not on that, and the "managing session" category only has stuff about travel
Ultimately I'd like to learn to use EOS / online subsystems but their respective docs assume you already know the basics about managing sessions so I'm stumped

pallid mesa
#

It depends on what you want to do... there's IsNetRelevantFor to cut replication from connections

pallid mesa
#

ah no.. then you dont want that

#

Bad preset everywhere is btw very terrible

#

still terrible

#

its like 600ms in total, right?

#

times two

#

thats just half the rtt iirc

#

either way check if you want a replication condition in which you just skip the owner

eternal anchor
#

is there actually any advantage of seamless travel if I don't want to persist any data between map travels ?

#

at least not persist it default way that is (;

#

right now, when keeping quite a bit of things on PlayerState it actually seems to be more trouble than it is worth it

hollow eagle
#

Having control over the loading screen I guess

#

like if you want to display something beyond simple slate widgets

#

can't really think of a reason otherwise

eternal anchor
#

thinking about it I can't think about what I would like to display on UI that would require me persisting player states.
Thanks. Guess I'm going to disable it.

#

nothing but small issues poping all around when you use player state for more gameplay thingies

#

heh out of curiosity checked Lyra, and yeah Seamless travel is disabled

#

seems it was causing exactly the same issues as I have run into

#

complex init process + ASC on PlayerState + Experiences do not mesh with keeping actors alive when chaging maps

shy gust
#

Im not sure if there's something im just not fundamentally understanding with replication or if there's something else wrong with my project but despite having all replication turned off , the client (right) still has a copy of of the server player. Im guessing the server(left) has a copy of the client because its the server and spawns the player pawn for each player regardless? but this has me really confused as I dont think the client should be spawning the server player?

#

also not sure if its related but I cant spawn anymore then 2 players, the third players pawn doesnt spawn despite being set to always spawn. if anyone has any insight id deeply appreciate it

fathom aspen
#

Reason is that the engine force pawns to replicate when possessed

#

So if you want to change that you want to override APawn::PossessedBy and change that behavior

shy gust
fathom aspen
#

Not really. The engine by default spawns pawns for you and possesses them

#

Besides that's, it replicates the pawns for you

#

If the pawn is not possessed then that usually means that you can't control it (i.e. a PlayerController hasn't possessed it)

shy gust
#

i see , thats really strange , thanks tho, im still not sure why my 3rd and 4th players wont spawn even with all the replications turned on

fathom aspen
#

Sometimes that happens because they spawn too close to each other, so the engine freaks out

#

Good to look in the output log for such warnings

shy gust
#

ah! right i forgot to set it to always spawn on the pawn itself , i had "always spawn" on the playerstart. that fixed it.

shy gust
# fathom aspen Sometimes that happens because they spawn too close to each other, so the engine...

I dont wanna take up all your time but one thing i havent been able to find information on is replicating component transforms, for context im trying to show the Z rotation of wheels for all players, but i dont want it to be server authoritive, im aware i could tell the server to rotate the wheels and rotate locally but with how i understand replication works itd adjust the clients wheels to where they are on the server which would lag handling in my physics based set up. hopefully that makes sense

fathom aspen
#

Well I'm not the movement guy to give you the answer you desire and it's better if you ask here without pinging and I will make sure to answer if I know/want.

For component transform replication, I know that OnRep_Transform exists as part of USceneComponent, but no idea how that works. The way I would do it is probably make the client locally rotate them, and then send that to the server so it simulates to other players. That's basically how movement in general is done at a very abstract level.

shy gust
#

ah, my apologies ,thanks tho I appreciate the insight.

plush wave
#

What’s the best way to handle networked timers?

#

A reliable RPC on trigger?

#

Or replicating start time and having the clients trigger when expired?

woven basin
#

Probably depends on what the timer is triggering.

If there is a chance the server could cancel it, then you would want the server to just do the timer on its end, and then fire an RPC when the timer is defintely ready to be done. Or if the timer results in something been spawned, then it has to be the server anyway.

If its a 'set and forget' type thing - i.e. display an effect after 3 seconds - then the server can RPC at the time of the event, and each client can handle the final step.

plush wave
#

My use case is suffocation damage. The client needs to play a sound effect and display a hurt indicator on the hud every 3 seconds the character is underwater. The heath float is already replicated. So the question is how to handle the damage notification. A RPC call works but seems like maybe a waste of bandwidth if I can sync up the timers on the client and server?

short arrow
plush wave
#

Hmm

#

Even though it's more of an aesthetic thing?

short arrow
#

If it's not important then by all means go ahead. I was just answering the question I seen

#

Timers are the most unreliably "synced" things

plush wave
#

Ok, good to know. Thank you πŸ™‚

woven basin
# plush wave Even though it's more of an aesthetic thing?

its not an aesthetic thing, is it. Its a damage event, because on the server you are deducting health. Plus what if that final tick is the 'death' tick, the client wont know for sure what to do, especially if they were nearly getting out of the water, and the server thinks they are in, client thinks they are out etc.

So to me the event is timer -> server_damage_event -> fire damage notification RPC

thin stratus
#

Second pinned post has a net synced time

#

That you can use for timestamps to driver synced timers for

plush wave
pallid mesa
#

yeah its just a matter to substract the delta difference in the timer's time when it gets to your client

#

yes, that one

plush wave
#

Wonder why unreal doesn't do that by default, pretty logical

thin stratus
#

No need I guess

plush wave
#

Hmm

pallid mesa
#

the gamestate replicated time can work for some stuff

plush wave
#

So with a more accurate networked synced clock

#

Is the idea that you replicate the timer start time?

#

Then have the client fire off the event?

thin stratus
#

Depends on what you are doing

#

Can also replicate start and duration and have the client check that on tick or so.

plush wave
#

Hmm right makes sense

#

Sad that this networked synced clock doesn't work for late joins

#

Technically isn't any join a "late" join?

plush wave
#

Why does he sort the RTTCircularBuffer?

#

To get rid of "outliers" maybe?

thin stratus
#

E.g. some info about some timer in an OnRep already being there when someone joins

#

VS it being set and replicate when everyone joined originally

plush wave
thin stratus
#

It's not about inaccuracy

pallid mesa
pallid mesa
#

@plush wave let me know what gave you the impression that the synced clock from the article doesn't work for late joiners so plox

#

I might need to edit the article to clarify that it does work for late joiners

#

otherwise it'd be pointless

plush wave
#

But I see it just meant at the time of joining

pallid mesa
#

yeah, really, any

#

not even the gamestate one

#

as fluff needs time to replicate

#

mh...

#

That bit is important, but probably not very well written

#

because you often want to access the synced clock right when you join in your onreps

#

and that's not recommended

plush wave
#

Right but it will sync pretty quickly afterwards

pallid mesa
#

yes

forest estuary
#

Hi
Anyone know how I can make the MoveComponentTo function replicated?
I have this setup right here but the characters are jittery and when I turn p.NetShowCorrections on, you can see that the server is trying to correct the client position on every frame..
I would really appreciate any help!

pallid mesa
#

but still you need to halt your onreps

plush wave
#

Why?

#

I don't understand how Jambax's NetworkEventSubsystem does the halting

pallid mesa
#

because it you access the clock in your onrep it might not have updated yet

#

you can hook-delegate your onrep actions to the initer

plush wave
pallid mesa
#

ie: you can know when the clock is ready client side

pallid mesa
#

you need to wait for it to be ready

plush wave
#

Hmm ok

pallid mesa
#

gamestate might not even be ready by the time your onrep fires

plush wave
#

I'll keep going through Jambax's code, still not sure how it causes the delay or where in here I need to modify to resume OnRep calls after the clock syncs.

pallid mesa
#

you'd need to modify jambax code to add one extra condition

#

you need gamestate, pawn, controller... etc + the clock to be ready in order to call the client world initialized

plush wave
#

A condition in the subsystem I assume? Which function?

pallid mesa
#

I dont have the code by hand rn

#

but this subsystem basically calls a delegate when all is reasy

#

what u want to do is to subscribe to this delegate

plush wave
#

I'm looking at it right now. Probably CheckNetworkGameReady()?

pallid mesa
#

yes likely

#

so when the delegate gets called u know all fluff is ready

#

there are other ways to do this

#

but so far that's the most elegant one i know

plush wave
pallid mesa
#

in order to "consider" the client world initialized

#

sorry haha

#

call - not as in - function call - as in "considering"

plush wave
#

Right, but the delegate Jambax calls is his own, not an unreal one

pallid mesa
#

correct

#

thats the one u need to subscribe to

plush wave
#

So then there is still a missing piece, where do I subscribe to this?

#

From the game state?

pallid mesa
#

no

#

in your actors

#

or in the hud

#

depends where u gonna do the logic

plush wave
#

Ok so every actor subscribes to this, and has to check some condition before preforming an OnRep?

pallid mesa
#

correct

#

subsystem is accessible everywhere so there's no biggie

plush wave
#

Seems like a lot of code to have a condition for every OnRep

pallid mesa
#

not for every onrep

#

you subscribe per actor

#

essentially it is client side signaling handled by a subsystem

plush wave
#

Right

#

Would be nice if you could just stop the entire network driver from doing anything until the game clock was synced, which would avoid actor subscriptions

#

But I see how this works now

#

Thanks for explaining it

pallid mesa
plush wave
#

I don't mean literally, I mean like stop all calls other than the specified time sync call

#

But yeah lol

#

That would likely take engine modification

pallid mesa
#

this is selectively doing that will prevent you from accessing the playerstate until its ready

#

I hope James can write soon about the net event subsystem, it is quite interesting

plush wave
#

Net Event System?

pallid mesa
#

yes the subsystem we are talking about

plush wave
#

Ah

#

The one he wrote

prisma snow
prisma snow
plush wave
#

Yo could conceivably do this time stuff in some other actor instead of the player controller right?

#

It just has to be owned by the local player so that RPC work?

woven basin
#

so to confirm from what I just read in the code; its a subsystem - and its basically just setting a bunch of stuff to false. As each system (player state, network etc) is ready - its tells the subsystem and the subsystem sets that variable to true.

You can easily add as many things here that you care about for your game and have each of those things advise when its ready?

once all vars are true - the subsystem broadcasts "hey - I'm ready" - and then anything that wanted to know (i.e. HUD class I'm guessing) - can do its thing?

Maybe this is a good place to remove the loading screen too?

plush wave
#

Can I create an AutonomousProxy actor that is not a Player Controller?

pallid mesa
#

re: loading screen, usually you'd like to & more stuff to the condition set of the loading screen

prisma snow
#

nice usage of a subsystem

agile loom
#

Try this
For Pawn class

dreamy scarab
jovial dawn
#

Hello everyone, I have questions about the possibility of making an mmo in TopView and I'm afraid for
performance and how to manage it with unreal, for example a player who has a limited GPU and one who has
high perf GPU... I can't adjust the FOV because whoever has the most powerful GPU will see the enemies first
or the one with the base-end GPU will see some players shoot into the void because they won't see the mobs.

my logical conclusion is to evaluate the performance of each player and according to a certain number of players in a region,
decrease the amount of mobs spawn to reach an acceptable average FPS.... but this would affect the playability of the one
which has a high performance GPU.

TopViews games generate more triangles than third person games because third person only sees what is in front of them.

#

exemple here, I have 30mob approx, with one player, I got 35fps with a RTX 3070ti

#

so imagine a mmo with multiple players with a lot of mob and spell etc....

#

the only method will be to ajust the LOD of each mesh and spawn mobs uppon player quantity in a close region

prisma snow
#

MMO as in World or Warcraft?

jovial dawn
#

kindof

#

but in TopView, Diablo like

prisma snow
jovial dawn
#

what is MassEntity ?

prisma snow
#

However afaik MMOs are notably difficult to make in Unreal (and in general), handling so many players in multiplayer is very difficult

prisma snow
jovial dawn
#

I know in what I get in, not simple, only few mmo are made in TopView... but I like this challenge.

#

I don't like thirdperson game

prisma snow
jovial dawn
#

Thank you Max πŸ™‚

#

I prefer Unreal than Unity or other engine outthere

#

do you know if WorldPartition is mature anouggt to be use in mmo ? or it's not possible

#

I just got back and saw 5.1 so I'm asking if anyone is using it in multiplayer

#

I hear that nanite is not so a big deal for foliage.... the gain of performance is good for large number of foliage at distant , but close... it's the same fps

#

pretty impressive

prisma snow
# jovial dawn pretty impressive

yeah, I build a demo boid simulation with Mass with 20k boids, it's on my Github, it's a fork of MassSample. Just take into account that it is a 5.0 project and I don't plan to upgrade it

jovial dawn
#

I just don't know if MassEntity will work in multiplayer mode

pallid mesa
#

not yetℒ️

prisma snow
#

It works in multiplayer but needs manual setup

#

as in, nothing will be multiplayer out of the box

azure cape
#

is there any official tutorial on creating & joining multiplayer sessions in unreal? for some reason the one part of the doc that says it has such a tutorial doesn't

dusky yoke
#

How do I respawn dead players?

arctic minnow
#

I have a problem where this montage dose not work network replicated on client in a big map? but it works in a small map?

young cargo
#

Can anybody tell me if what I'm trying to do is supported by unreal?

I want the client to start in a LoginMenuMap and I want the server to start in a MainGameMap.

When the client successfully authenticates I want the client to travel/connect/open the MainGameMap that the server is on.

The problem I'm having is despite setting the Default Server Map in my project settings to the MainGameMap, the dedicated server seems to be loading the LoginMenuMap.

#

I'm trying to avoid sessions if possible. It seems this should be possible to have a sort of "offline" main menu map that then connects to the server map.

hollow bridge
young cargo
# dusky yoke How do I respawn dead players?

What defines a "dead" state in your game? AFAIK unreal doesn't have a concept of killing/death/respawn, so likely you would need to do something like:

  1. Restore player back to a fully restored state (e.g. reset HP back to full on server)
  2. Set Actor's location to wherever your respawn location is in the game world
hollow bridge
glass orchid
#

When i change an actor's capsule collision's objecttype, do i have to multicast that change to all the other clients?

#

could i just set the capsule to replicate, or would that cause issues?

thin stratus
#

ObjectType is a State, you would use a RepNotify variable and the OnRep function to set the ObjectType then

#

Otherwise late joiners and peeps that are out of relevancy at the time of the RPC would not get the correct value

glass orchid
#

alright, i'll try that

glass orchid
robust oriole
#

I'm kinda new to this, so bear with me please!^^
I want to create a multiplayer game where the players game file data is saved locally, but players can join others game worlds. The problem im currently facing is that i cant pass the server a transient object, since that object wont exist on server side (unlike passing asset or actor references). Currently im converting my save game data into a struct, i pass that to the server, the server then manages that data, and when the client wants to save the game it requests the save game data from the server.

The problem i found with that approach is that, whenever i want to load, for example, the players inventory, i'd have to either send a request for the entire current game file data to the server (unneccessary), or i'd have to write separate functions for every aspect of the game file data id like to request independently (not very scalable).

Would it instead be possible to create a transient object at runtime on the server side which is replicated to the client(s) (at least the client that owns the game data, but possibly all connected clients) and that i can use on client side to read data / call RPCs?

radiant cypress
#

Hey guys !
Someone told me to use ZeroTier.com to test my game with some friends in "false" LAN.
If i get it right :
I need to create a network on the website, and then open the app myself to enter the network ? And then my friend does the same ?
And then i need to setup my UE sessions nodes to "Use LAN" ?
Am I getting this right ?

trail rock
#

Which are the top recommended cloud providers for dedicated servers?

trail rock
#

I wonder which instance to pick. Gamethread is the most expensive thing in my server. Does UE dedicated server benefit from many vCPUs?

#

Yeah that what I thought. I wanted to try the AWS Graviton3 servers but Steamworks doesn't support LinuxArm64

near granite
#

after opening new level, Tick Code only runs on server not client..😾

#

Client1 : level A --> level B

               pawn 1 --> pawn 2

​Client2: level A --> level C

             pawn1 --> pawn2
midnight steeple
#

Hello, i try to join my session when i find it but my player is not traveled to the server's map :c

#

after many seconds, an other level is loaded but not the server map

winged crow
#

Hey all I'm getting a "fatal error" message in my Steam multiplayer game when the host attempts to server travel to a new map - does anybody know what might be causing it?

#

The destination map is correct and included in the package, and it works fine when playing single player but crashes when connected online with friends

#

I should also note that server travel executes correctly ONCE when playing online, but crashes on the next subsequent attempt

#

Any advice or suggestions are greatly appreciated thanks

gloomy tiger
#

Saved/Logs

winged crow
#

Taking a look now

#

gosh there's so much stuff in here

#

lol

#

I'll have to do a new playtest and take a look right after the error

peak sentinel
winged crow
#

omg eren

#

we meet again

#

πŸ˜†

gloomy tiger
winged crow
#

He is an angel, I can confirm

#

Nothing returns for "fatal error" or even "fatal"

peak sentinel
#

I'm not used to flattery PandaOhNo

winged crow
#

I am going to run another test and see if it shows up

gloomy tiger
# winged crow I am going to run another test and see if it shows up

A tip: once the fatal happens, go to your latest log file and it should be one of the last things that happened. Maybe it does not explicitly mentions fatal (I really dunno), but you're going to see some crazy stuff that smells like fatal. Also, if you still can't find a thing, try to share I dunno, the last couple lines of your log here w us?

gloomy tiger
#

You using it?

peak sentinel
# gloomy tiger You using it?

I really want to, but it's too late for me at this point πŸ˜” I already built most of the stuff so lost the chance before I heard about AS
But in the future I'll kill myself if I dont use it πŸ˜„

winged crow
#

yes thank you I will try this now

#

If I am playing through the Steam launcher do you know where the output logs go?

#

I just did a test but I can't see a log from today

gloomy tiger
#

Is your game deployed to Steam or you just pointing it to your built game?

winged crow
#

It's uploaded as a build and depot etc on steam and I am launching it through the Steam library interface

gloomy tiger
#

B/C if it's deployed to Steam, then it would be

C:\Program Files (x86)\Steam\steamapps\common\YOURGAME\YOURGAME\Saved

winged crow
#

I am in program files > Steam > steamapps > common > MyGameTitle > etc.. Saved/Logs

gloomy tiger
#

Maybe the engine folder? πŸ€”

#

Pretty sure it's not there but I don't have a deployed version myself so...

peak sentinel
#

Doesn't it crash?

gloomy tiger
peak sentinel
#

What kind of "fatal error" you are seeing?

winged crow
#

Yes it crashed

#

Let me show

#

Fatal error!

Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000000

0x00007ff64e866ba5 RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff6506b5614 RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff6506a0515 RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff650ce89e0 RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff64ef1adcb RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff64ef1f147 RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff650ceff70 RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff650cf1b97 RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff6509ed065 RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff6509063ad RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff64e84bec1 RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff64e85285f RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff64e8528da RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff64e854024 RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff64e85cc64 RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ff6516c436e RRM4-Win64-Shipping.exe!UnknownFunction []
0x00007ffd00d37614 KERNEL32.DLL!UnknownFunction []
0x00007ffd02bc26a1 ntdll.dll!UnknownFunction []

#

I just attempted to screensnip my screen and got this

#

No idea what happened or if that was a mistake

#

This is what turns up

#

On the host

#

And a black screen on the client

gloomy tiger
winged crow
#

lol

#

yikes

gloomy tiger
#

The logs?

winged crow
#

I used shift+start+s to screensnip on windows and somehow it copied text instead of the screen

#

I think that's what happened anyway

gloomy tiger
#

OK so

winged crow
#

Confused me when I went to paste into discord

gloomy tiger
#

You can't see a Saved/Logs folder, right? In your Steam's game folder..

winged crow
#

I have one but they're all old logs

#

Let me show

gloomy tiger
winged crow
#

The most recent log is from yesterday which is odd

gloomy tiger
#

Hm. This is UE4, right?

winged crow
#

4.27.2

gloomy tiger
#

This is weird, indeed. Have you tried checking at the Engine Folder, inside the latter RRM4 folder?

#

I mean, if you find any Saved folder.

winged crow
#

No saved folder

#

No ideas?

#

πŸ˜†

peak sentinel
#

EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000000

#

nullptr access

gloomy tiger
#

I don't remember, but do shipping builds create logs?

#

cc Eren

gloomy tiger
winged crow
#

Perhaps not

gloomy tiger
#

You had logs yesterday, but not today

winged crow
#

That's correct

peak sentinel
#

It should be creating logs

gloomy tiger
#

Yes

#

That's what's weird

peak sentinel
#

and see where its accessing a nullptr

formal path
winged crow
#

Eren I don't understand what you mean

gloomy tiger
#

You can choose which type of build you're going to output

#

Shipping, Debug, etc.

winged crow
#

Right

gloomy tiger
#

I guess Eren is suggesting you to build it as Debug and deploy it to Steam as such.

#

But

winged crow
#

i.e. the last checkbox

gloomy tiger
#

This one

#

But even so... logs should be generated for your Shipping build

winged crow
#

I see

#

Yeah

#

It's weird

peak sentinel
#

discord is broken today - cant seem to be able to send images

#

huh finally

peak sentinel
winged crow
#

So shipping build configuration and then include debug files checked?

gloomy tiger
winged crow
#

They're not relevant

gloomy tiger
#

Oh yeah my bad - I'm still at 15/01 lol

peak sentinel
#

Even if you get the logs it wont provide much

#

You need to debug with Visual Studio or Rider or any other IDE

#

to see why its crashing exactly

#

and to do that you need debug files

winged crow
#

Have either of you had a similar crash when server travelling?

winged crow
#

Can you have a shot in the dark at what it could be?

gloomy tiger
#

The exactly same issue, the exactly same context.

winged crow
#

It works once and then not the second time

gloomy tiger
#

Ok, let's break this down

#

The destination map is correct and included in the package, and it works fine when playing single player but crashes when connected online with friends
I should also note that server travel executes correctly ONCE when playing online, but crashes on the next subsequent attempt

winged crow
#

Correct

gloomy tiger
#

By "ONCE", you mean...?

#

One client gets connected

#

A second one, doesn't... is that it?

winged crow
#

Host opens listen server map
Invite friends via steam overlay
Up to 4 players can run around in the listen server map just fine
Host can enter an overlap which server travels to a new map
Server travel functions as expected
Host enters a new overlap to server travel back to the lobby map
"Fatal error"

gloomy tiger
#

Up to 4 players can run around in the listen server map just fine

Run around in the Lobby map, correct?

winged crow
#

All players server travel successfully the first time it is called, and can play a full game inside the new map, but then when the host attempts to server travel again they get the error

#

Yes correct

gloomy tiger
#

Your calling ServerTravel from BP or C++?

winged crow
#

BP on the host

gloomy tiger
#

Can I see the node that would travel them back to the lobby?

winged crow
#

called inside the player controller on the server

gloomy tiger
#

Can I see a little bit more?

#

What happens after server travel

winged crow
#

Nothing

gloomy tiger
#

And before

#

πŸ€”

plush wave
#

Ok so can subsystems be replicated?

winged crow
#

yeah it's just a macro

peak sentinel
#

Log InURL and add a branch to Return Value - maybe its failing and you're doing something that you should not do

#

best way to identify the error is debugging tbh, you cant solve this with this amount of mysteries

gloomy tiger
plush wave
#

Or can subsystems not be replicated since they spawn in for clients too?

gloomy tiger
#

He can't debug that solo

#

And since it's on Steam, it requires aa second client connected

peak sentinel
winged crow
#

I can test it with a laptop but it means repackaging and transfering the project each time which is a hassle

gloomy tiger
#

Yes, I feel you

#

OK so

winged crow
#

Somebody has suggested I just don't use server travelle and instead just disconnect and reconnect the clients

gloomy tiger
#

You tried Standaalone?

winged crow
#

Which I might just do

#

Because this is insane and I'm at the end of my rope

#

Lol

#

that game looks cool, good job

peak sentinel
winged crow
#

I think they can save the blueprint session before disconnecting

peak sentinel
#

Print String before calling travel and be sure Print to Log is checked

winged crow
#

Oh sure

#

Yeah it's correct

gloomy tiger
# winged crow that game looks cool, good job

I just shared it because as I mentioned, this issue is really familiar to me due to the same nature: lobby -> gameplay -> lobby. I really remember the profane Fatal Error popping up.

#

What I'd suggest you to do is Standalone Play.

#

Have you tried it?

plush wave
#

My use case would be a world subsystem. Just replicate like normal and block local spawning?

gloomy tiger
#

Also, as far as I remember, we used to Open Level instead of Server Travel.

peak sentinel
#

use an actor instead

#

derive from AInfo
make a static getter function for it
its nothing different than any world subsystem at that point anyway

winged crow
gloomy tiger
#

Deploy to Steam

#

So you can debug it locally

#

I'm using UE5, but it should be similar in UE4.

peak sentinel
#

Didnt Jackson said its happening with clients? thingken

winged crow
#

It works fine in editor and in a packaged build when single player

#

It only ever doesn't work when connected to other clients

gloomy tiger
#

But that's what I'm suggesting

#

Standalone Game w 2 players

peak sentinel
#

Ah, I see now

#

but wouldnt work either I guess, it seems to be working at editor

peak sentinel
#

oh yeah

winged crow
#

Open Level disconnects them right?

gloomy tiger
#

Ha

#

We did a hack back then

winged crow
#

Lol

gloomy tiger
#

Wait, no

#

I'm confused. I mean, it's like 1 year since the last time I touched that project.

#

I guess I'm mistaken. I guess we used Server Travel.

#

But before discussing this

#

Try Standalone Game 2 clients

#

Or rather, Listen Server

peak sentinel
#

both

gloomy tiger
winged crow
#

Not errors

#

No errors

peak sentinel
winged crow
#

sure

#

ok it crashed on startup

gloomy tiger
#

For multiplayer connection/travels etc

#

PIE is not safe to test your stuff

#

When travelling, the most accurate you can get is through Standalone

#

Of course, not as accurate as actually deploying to Steam but you get it

winged crow
#

THe standalone games crash instantly

gloomy tiger
winged crow
#

Lol

#

nasty scent

gloomy tiger
#

I mean, you get Fatal Error right away?

peak sentinel
winged crow
#

Hang on let me check

peak sentinel
#

you need debugging symbols though

#

i guess

#

otherwise logs wont be different

winged crow
peak sentinel
#

no Saved/Logs

winged crow
#

ok

gloomy tiger
#

In your project's folder

#

Not the steam one

#

(Just fwiw)

winged crow
#

ok there's several

gloomy tiger
#

Most recent one (very likely)

#

If in doubt, share a pic of the files in the folder w us

winged crow
gloomy tiger
#

I believe htis is the one youre looking for

#

And brace yourself, it's going to be a ride lol

#

(geez its 10 PM here, you in Australia? lol)

winged crow
#

Yeah 12pm here

peak sentinel
#

4am WojakBadTrip

winged crow
#

yes melbourne

#

lmfao eren

#

nothing has changed I see

#

πŸ˜†

gloomy tiger
#

you guys are in the future 😦 still 1/15 (or 15/1) here lol

winged crow
#

I have no idea what I'm looking for in this log

gloomy tiger
#

It's fine.

#

Scroll all the way down.

#

The last lines should be what you're after

peak sentinel
winged crow
#

it doesn't tell me anything interesting as far as I can tell

peak sentinel
#

access violation error

winged crow
#

I don't see it

peak sentinel
#

try checking this instead

#

did you open with 4 players

winged crow
#

2

#

but did it twice

peak sentinel
#

ok

#

check latest one

winged crow
#

I don't even know what to look for

gloomy tiger
#

OK.

winged crow
#

No

peak sentinel
#

Unhandled Exception

#

search for this

#

its global keyword for any crash

#

it should be one of the any 4 log file

winged crow
#

no

#

nothing

gloomy tiger
#

This is getting curious lol

#

Alright so

winged crow
#

ok found one

gloomy tiger
#

OH good

#

So this is the instance it's crashing

winged crow
gloomy tiger
#

You don't see the Unhandled Exception because probably only crashed in 1 instance

#

COOL

#

Now!

#

A little before these lines might dwell your culprit

#

[2023.01.16-00.57.04:085][570]LogWindows: Error: === Critical error: ===

This is the very first line of the error you shared

#

You want to look before this line

peak sentinel
#

0x00007ffc9c2f2542 UE4Editor-CoreUObject.dll!UnknownFunction

peak sentinel
#

Until you download debugging symbols

#

it'll be stay as unknown function

winged crow
#

How do I do that

peak sentinel
#

otherwise you cant know which function error is happening at

gloomy tiger
#

But wait

peak sentinel
gloomy tiger
#

Share w us like 20-30 lines before this:

[2023.01.16-00.57.04:085][570]LogWindows: Error: === Critical error: ===

winged crow
#

Not sure that's helpful

#

just invalid actors

#

let me check the other instances

gloomy tiger
#

The other instances haven't crashed

#

This is exactly what happened in production/Steam

#

One instance crashes, the other stays black

winged crow
#

It's the server when playing in steam

gloomy tiger
#

Yep.

#

Now, you can brute force (my favorite approach b/c I don't like debugging sh*t - unoptimal)

#

Or Eren's approach (which is way more rational)

#

BUT

#

I'd say

gloomy tiger
#

By "disable" I mean, unlink it

#

And see if it's going to crash

peak sentinel
#

LogScript: Warning: Accessed None trying to read property ChildActor
is this normal blobsweat

winged crow
#

Yeah dw about that

gloomy tiger
peak sentinel
#

might not be relevant, but still πŸ˜„