#multiplayer

1 messages · Page 215 of 1

vagrant grail
#

I still don't understand that as Fortnite succeeded doing that 🤔 So I'm really confused on why Epic can do that, and why wouldn't I be able to do that too 🤔

dark parcel
#

most systems are cattered to project specific

thin stratus
#

Fortnite is also still adding tons of basic features that native UE can already create.

dark parcel
#

a friend asked to make a map together, so we got to explore verse.
Not too happy with the syntax

#

especially for one designed to be "beginner friendly"

vagrant grail
# dark parcel I only print hello world in fortnite yesterday. Not fammiliar but maybe your use...

here's the example of the Object (Item) Spawner to see how it works, and that's what I am aiming for and how they achieve to make it work with any gamemode https://youtu.be/H57d_eGP1UE

How to Create Item/Gun Spawner in Fortnite Creative (Full Guide)
Learn how to set up item and gun spawners in Fortnite Creative mode with this comprehensive tutorial. Master the art of customizing spawn pads, selecting weapons, and optimizing your creative island. #FortniteCreative #SpawnPads #ItemSpawner #GunSpawner #FortniteTutorial

▶ Play video
vagrant grail
thin stratus
#

Not sure waht you mean with "any gamemode".

#

Like, a spawner that can spawn anything isn't that difficult

dark parcel
vagrant grail
dark parcel
#

the video is just an object that spawn items that is registered to it

#

what are you exactly struggling with?

#

looks pretty easy to do

vagrant grail
# thin stratus Not sure waht you mean with "any gamemode".

Like for example this Object Spawner would work for a :

  • Battle Royal where it can spawn weapons or objects on the floor for player to pick up
  • Platformer where the spawner could spawn pickable objects like Coins or Objects to use (Abilities)
  • Adventure game where the player can pickup a Sword in the beginning of the game to fight monsters for instance
thin stratus
#

Yeah, you need to stay modular with said spawner then

#

Use DataAssets for the Object.
Use Interfaces to grab info from the DataAsset depending on what you need (e.g. a preview mesh).
Use InstancedObjects and similar to plug and play certain logic (e.g. how to spawn something).
Make child classes of the Spawner for more specific cases.

vagrant grail
# dark parcel what are you exactly struggling with?

My question is about the best way of doing that in terms of optimization and scalibility. Like above we were discussing about making the spawner give items (Coins) per client, meaning if a Client picks up a Coin, it disappears only for him but not for other players, other players can come and pick up that coin too.

So we were discussing what's the best thing between an array variable on the Object Spawner saving a ref of each player who picked the coin
or
Save on the Player Controller references of Object Spawners from which the player picked up coins

Like which one is better in term of Networking and scalability ?

thin stratus
#

Barely a difference tbh

vagrant grail
#

Like if you were Epic Games and would create that Object Spawner for Fortnite Creative, what way would you go for ?

thin stratus
#

I would probably save the Player on the Spawner

vagrant grail
thin stratus
#

Yeah but that goes both ways

vagrant grail
#

Like when an array is replicated, does it replicate only the changed / new value or does it replicate everything including the non changed elements ?

vagrant grail
dark parcel
#

only the delta afaik, could be wrong tho

thin stratus
#

Saving 50 Spawners on 50 Player, or saving 50 Players on 50 Spawners is the same, or not?

thin stratus
#

Only thing that could make the "Save on Player" thing the better option is that it only replicates to that Player

#

There is also the point of relevancy.

#

Another option is to save the mapping on an Manager.

#

Ultimately I would pick one, go with it, and profile later.

vagrant grail
#

the mapping ?

surreal fox
#

hey, I want to lerp an actor replicated to all the player without having laggy move
As I know to do it we should update the value on server and then replicate.
But I don't know the correct way of doing it. I tried doing it as you can see in the first image if there is a better way please let me know
The second image is what I used to do and I think is wrong

mystic estuary
# surreal fox hey, I want to lerp an actor replicated to all the player without having laggy m...

It depends on what you're trying to move. If you're trying to move a character, then CMC is going to fight with you, if not, then there are multiple solutions. If your object doesn't have any collision (or its movement can't be interrupted in general), then you can entirely predict the movement. Notify the fact that you want to start your movement, and start doing your times locally. Note that you will need to fix desync with any irrelevant client, it might be a player that's too far away or a late joiner

plucky pewter
#

Concerning Replication...if OnPosses() is only called on the server. And that Possession is replicated down via the player controller. Do I still need to do anything for the client controller and Character?
So is the client controller possessing anything client side?
Or is the character they are controlling just...Need a lil more clarity.

jade scroll
#

hey

#

i wanna show the icon only ony the right team

#

but it didnt work -.-

#

here is the whole project

plucky pewter
#

Sorry I guess what I was just a little confused about is data flow from local engine to server engine and then back again. Whatever that flow is...for replication. Data goes out on what? And where? And then updates to that data come from Where?

verbal ice
#

You don't have to do anything on the client

jade scroll
#

can someone help me shoe the icon only on the right team?

#

only visible for the team ...

plucky pewter
# verbal ice The server possesses the pawn, that replicates to the owning client which also t...

My lack of underdstanding was more related to data flow and how references were updated during replication:
Client Copy of game
Server copy of game

The client player controller sends the request.
The Server grants or rejects that request.
OnPosess is called on the server.
The updated reference comes back via the playerstate.
Likewise with any properties about the character. Position rotation etc etc?
Unless I'm still wrong.

#

But OnPosess() is never called on clients.

sinful tree
# plucky pewter My lack of underdstanding was more related to data flow and how references were ...

Replication is always from Server -> Clients and typically happens through the actor that the replicated properties or RPCs are set up on.
Clients can only send an RPC to the server with or without additional data to then have the server do something.

Possession is only handled on the server and basically is a means of redirecting inputs from the PlayerController to the possessed pawn. When the server possesses the pawn with a PlayerController, the PlayerController receives a replicated reference to their controlled pawn and automatically sets itself up to route the inputs to that pawn, and sets its own reference to know that pawn is its possessed pawn. So now, when you press inputs, those inputs are directed to that pawn, and in which case, you can have that pawn send RPCs or uses movement components that send RPCs to the server. When you unpossess it, or possess a different pawn, the PlayerController receives the new reference and stops routing its inputs to the previous possessed pawn.

In the case of "Character" pawns, the Character Movement Component has some built in client prediction of movement - this means that to the client it will appear their character is moving before the server actually knows about it - the server will receive the movement and then determine itself if the moves are valid or not, and if not, will reset the position of the pawn to the last know valid spot it could be, otherwise, it will allow the movement and the replicate the new position to everyone else in the game except for the player that is in possession of that Character so that it doesn't interfere with their predictive movement.

vale lily
#

Could anyone help me with the multiplayer
So the problem is that i am making a game on ue5 (this is my first project) and i know that on some engines you need to make the multiplayer from the start because otherwise you will need to change many things and i think it is the same on ue5 but going to the point i want to publish the game on steam later and do i just use the replicate function with the server and client that is build onto ue5 or do i use something else and if so how do i make things work with the other multiplayer like guns ai and stuff like that i was searching for a tutorial that would explain that but i could not find any just some that say about the replication system or the how to add the steam multiplayer but not about both. thanks in advance.

twin juniper
vale lily
#

i use BP

twin juniper
#

only BP?

dark edge
twin juniper
dark edge
#

read about RepNotify and learn it

#

don't do ANYTHING beyond getting a door to work

#

no guns, no movement tech, get a door to open

kindred widget
blazing bear
#

Hi, I have on my AHUD class beginplay this: PlayerCharacter = CastChecked<APlayerCharacter>(GetOwningPawn());
problem is sometimes I crash, sometimes I don't, my guess is that the hud class sometimes runs before the pawn is instantiated. Is there a better way?

Edit: Putting the stuff in beginplay in a public function and call it from AcknowledgePossession fixed it.

dark edge
#

@twin juniperread compendium in pinned messages

twin juniper
#

so if you setup guns on begin play for the server with rpc, then a client joins that server, you are telling me that the client will not see the gun from the server RPC? seems like it works as expected for me

dark edge
#

a late joiner will see replicated values, they will know nothing about any rpcs that happened before they saw them

twin juniper
#

ofc but things that are replicated each frame will work as expected

viscid tapir
#

Hello ! Question about replication order that should be true but I'm not certain :
Reliable RPCs are sure to happen before any property replication on the client ?

fresh lark
#

quick question - when an actor survives seamless travel, do components in it re run the initialize / on register component as part of things?

jade scroll
#

can someone tell me how i can set the icon only visible for my team?

sharp hamlet
mellow lava
#

I've got a question: Suppose I want to implement some sort of loadout system where you can select your gear in the main menu before loading into a dedicated server. What would be the best way to preserve that data while you connect to the server? I found some forum posts saying attaching the data to the GameInstance would work, but since the GameInstance would only exist on the client, how should I notify the server that it needs to spawn these items when the player connects? Should I just send an RPC to the server when the client connects, or is there some other way to accomplish this that I'm just not seeing?

sharp hamlet
jade scroll
#

PS= player state?

#

can you explain me littel bit more i dont understand

jade scroll
jade scroll
#

guys why is that so hard to make jsut something visible for team... i cant get this work -.-

sharp hamlet
# jade scroll

Trydoing a print screen on ur character to check the value of the Team. See if its outputing correct. So during team creating in gamemode, u can send ur teamIndex values to ur PS and in UI, bind the value from PS

jade scroll
#

you mean player state?

#

why it not work with chracter? why i need use player state?

sharp hamlet
#

Since ur character can get destroyed during a match, all the info stored there will get destroyed as well, thus these variables like kills, deaths, teamindex, etc always goes to PlayerState.

jade scroll
#

ok but can you explain me cause replicating is so hard for me...

#

i have a team id on playerstate now.. variable

#

everyyone is printing player state 0...

#

every client prints player state 0?

sharp hamlet
# jade scroll

Dnt use that node, use get PlayerState, (will be a normal replicated blue variable), browse to the end

jade scroll
#

i have this now to store tema variable in player state

sharp hamlet
jade scroll
#

and now? how can i replicate this that team 1 see all icons from team 1 and team 2 see only the icons from team 2

#

i need some runonserver events or mulsitcast or something?

#

i send you a freind request maybe you accept ^^

sharp hamlet
jade scroll
#

i spawn the player in controller on run on server event

sharp hamlet
jade scroll
#

i already did waht oyu say i send data to player state

#

yes you right sorry.

sharp hamlet
jade scroll
#

can you send more pls?

sharp hamlet
#

sent in ur DM

viscid tapir
#

Hello ! Question about replication order that should be true but I'm not certain :
Reliable RPCs are sure to happen before any property replication on the client ?

sinful tree
viscid tapir
#

Its the reverse question I think

#

like I read that reliable RPCs are supposed to be happening before the properties replication

#

but I'm afraid I'm wrong about that

latent heart
#

Property replication and rpcs are effectively 2 different systems that run through teh same channel. They are not synced.

#

The only guaranteed order is that reliable rpcs are ordered.

#

But only within the same actor channel.

viscid tapir
#

I see..

maiden abyss
#

I'm changing my question to an infobit. I was originally asking how to handle the "on rep" functions for listen server, as the "on rep" functions aren't called on the server side in cpp. The answer is to just literally call the "on rep" function manually on the server after changing the relevant variable. I'm not sure why I was looking for a deeper answer then that. Overthinking is a specialty of mine haha.

dark parcel
#

Generally it's not recommended to do that

#

It's already thr server, why do you want to call on rep on server

hollow eagle
#

Huh? It's perfectly fine and pretty common.

#

There are tons of situations where you want to react to a change in a value on both the server and the client, if that code is in the OnRep function you're free to call it on the server.

#

You could split it out into its own function that the OnRep calls, but there isn't any particular benefit to doing so unless you have another reason to.

dusk reef
#

I'm testing VR using multiple standalone windows. One of them is the server. When I have the server window focused it runs as normal. When I select a client then the server has 120ms between each frame. This makes the interaction between server and client very laggy.

Does anyone know how to make all windows run at full speed?

I have already removed the editor window FPS limit but that doesn't effect standalone windows.

plucky pewter
# sinful tree Replication is always from Server -> Clients and typically happens through the a...

Ah so in this instance in terms of movement the Movement component would handle that internally.
Similarly with the ASC.
Yeah, these are the bits I was unsure of.
Sorry about the delay had to run to work.
Replication, conceptually, I understand...a single variable, an rpc, I can wrap my head around that but, when there are these internal systems that are replicated annnnd interacting with each other. I just could not imagine how it is handled all together at runtime.
I appreciate the breakdown.

karmic briar
#

hello, anyone here use Mover with GAS? how would you interface mover with GAS? im trying to make ability tasks equivalent of the root motion task... do i need something to accomplish that from mover side ?

shy gust
#

Hello all , I have a strange situation with some replicated variables .
so In my PlayerState I locally set this variable here , the rep notif then triggers SR_updateEnergy to the server. the server receives this value and updates it on the server
this works as expected
I then set up a tick function on the Server Pawn to read that variable and set a replicated with the same value

#

seen here.

#

now what confuses me ,is how the autonomous proxy reacts.
when reading the variable on the proxies playerstate, the var takes longer to update then reading the one on the proxy pawn. which is whats confusing me, I dont have any other variables or outliers in my set up. but the proxy playerstates value takes noticably longer to update then reading the same value on the proxy pawn. which i feel is the opposite of what youd expect, as the server playerstate should be replicated to the proxy playerstate faster then the variable on the server pawn (which is just reading the server playerstate)to the proxy pawn

tldr, my proxy pawn information is updating faster then my proxy playerstate and i dont know why.

keen hound
#

weird question, I have a 3 player game. How would I have the host of the server be a specific character while the clients are another

#

(kindof like dead by daylight)

shy gust
static owl
#

Anyone else have issues creating a widget specifically for 1 client?

I currently have my death logic in my character blueprint, running on the client side. (Multicast).

I have it set “Is Dead” Bool to True, and then call a custom event “Handle Death”.

The “Handle Death “ custom event just moves the possession from the character to a spectator pawn. And from there I can press the up and down arrow keys and spectate other players which works fine.

Directly after the possession code, I have it “create death widget” and “add to viewport”. But this widget shows up on all clients..

sinful tree
# shy gust now what confuses me ,is how the autonomous proxy reacts. when reading the vari...

PlayerState's net update rate is about 1 second I believe. It's not meant to be something that continually updates values quickly as it's an always relevant actor so it always exists and is replicating to everyone in the game all the time. The pawn isn't always relevant and has a faster net update rate.

Also, you probably don't want the UpdateEnergy event to be an RPC to the server - you'd effectively be allowing the owning client to set their current energy to whatever value they desire - so someone with enough know how could effectively have infinite energy.

shy gust
quasi tide
#

If I recall, it is called Net Update Rate - in the details panel of any actor

shy gust
#

I found it , thanks!, such a simple thing caused me so much troubleshooting and head ache,

cyan marten
#

Guys One question,
What I'm trying to do is if the server wins i want to play an animation on the server character and the same for the client.
The 'PlayStartEndGameAnimations' event is a multicast and the 'StartEndGameAnim_Server' event is run on the server.
The logic works but the only problem is the server animation that is not replicated, I mean everything i put after the true on IsLocallyControlled branch will only run on server and i cannot replicate it on the client.

odd iron
#

Hello,
Ive made queue system using a Beacon Host and client .
Now the players can join the host successfuly,
My goal is i want this server be able to handle over 1M players in the queue first idea came to my mind is using Redis.
So my question is:
Does Redis good solution for Queue system?
Like adding players to the db when they press trying join and decrease the queue when they join ?

split siren
odd iron
odd iron
split siren
odd iron
#

The beacons is just routing the players who want to join a server so i can collect the needed number of players and start the server to reduce server running time

#

Because if the server spin up when 1 player join it will take alot of $$ till 40 players join xD

odd iron
split siren
#

Ah, right. Yeah that makes more sense. So it's a queue not for a specific server but for the whole game. Gotcha.

I would recommend doing this using HTTP server rather than beacons. You would have to dedicate 1 game server to be the "beacon server" and that would be waste of resources imo. HTTP server that accepts joining queue and leaving queue requests is more scalable and far cheaper

#

Or as you suggested with rotating beacon server, that sounds like nightmare to keep consistent. Having single entry point can scale better for 1m players

odd iron
#

And one server can handle more than 5M players xD

#

Thanks i was waiting these suggestion 😂

split siren
odd iron
split siren
#

For my queue that supports probably millions of players I am using postgresql, AWS lambdas to handle events and a 1 second ticker that checks the availability across all UE game servers to pop the queue.

odd iron
karmic briar
# karmic briar hello, anyone here use Mover with GAS? how would you interface mover with GAS? i...

how do you actually make GAS playmontage task equivalent with mover? im looking at how mover did theirs here https://github.com/EpicGames/UnrealEngine/blob/ue5-main/Engine/Plugins/Experimental/Mover/Source/Mover/Public/MoveLibrary/PlayMoverMontageCallbackProxy.h and it seems that that just queueit as a layered move..shouldnt it remove the layered move from queue once it ended and or interuptted? my playmovermontageandwait is just this code from this moverlibrary

#

🤔

#

uhh maybe i'll try combine playmontageandwait task but have movercomp and just after playanimation, i just call queuelayeredmove..maybe i just leave it at that for now :/

#

why this work but not my abilitytask one :/

thin stratus
#

And it can also totally be that the setup is fully lacking the interrupt part.

#

Mover is veeeeeery experimental

karmic briar
karmic briar
thin stratus
#

Yeah, Mover and NPP is still a dumpster fire atm. I've been using it too and we heavily modified both to make them work properly.

karmic briar
#

still losing my mind on just trying to play a single montage with mover using moverexamples characrer

#

i havent done any changes with Mover yet, just constantly pull from UE5.5 right now(not main) for the plugins and move it to my plugins folder

#

maybe i should just pull from UE5-main lol

exotic narwhal
#

Quick question how complicated would it be to implement local co-op aka couch co-op?

latent heart
#

It's a lot easier than remote multiplayer, for sure.

exotic narwhal
latent heart
#

Make a single player game first.

exotic narwhal
# latent heart Make a single player game first.

Yeah the plan is get single player prototype working first and get it to a point that I'm happy with and considering how long that takes will determine what I do after that. But thought I'd throw out the question to see how difficult it would be to do

crisp shard
#

if im tring to do a little cutscene for the client interacting with an NPC in world, would it make more sense to be spawning in the level sequences via a bp? or would it not be an issue to have the level sequences just in the world, similar to an object that has sound on it ?

thin stratus
#

Otherwise when you later add a new player to it it will all fall apart

#

You can also already prepare for it by calling AddToPlayerScreen instead of AddToViewport for Widgets if you intend on using splitscreen

thin stratus
crisp shard
exotic narwhal
bitter robin
# cyan marten Please someone

The design itself seems a little wrong to begin with. The StartEndGameAnim_Server makes little sense to me, any code that decides if the game ends should already be server side only so that never needs to be replicated to the server. Second, player controllers only exist on the server and the client that owns the player controller in question. So, if you go from Server -> Client, then the client in question is always locally controlled. Third it seems you are storing points in game instance? it doesn't belong there, it belongs in GameState where it can be replicated. Idk what the whole purpose of this animation is but if its just a victory animation or whatever then it should just be instigated from the server and replicated as such.

bitter robin
#

I'm uncertain, but my guess would be no, I certainly wouldn't write any code that assumes so, there is definitely always a better way.

quiet yarrow
#

How would you guys recommend doing an animation for a head rotation based on mouse movement? I'm having a hard time replicating this, but I got the rotation working how I want

#

for some reason only the actor rotation is replicating in my rep notify, but the control rotation is not

#

I feel like this is simple, but idk why its not replicating

#

nvm we got it sorted

jade scroll
#

men tehre is no video nothing

#

where i can my icon only visible for team and enemies see only their icons

#

can someone explain me how to do this? any idea?

dark edge
#

is it an icon on a minimap?

jade scroll
#

yes

#

i create widget add to viewport thats all

#

but how can i show this icon only for my team

dark edge
#

I'm assuming team is a tag or enum or something on PlayerState?

jade scroll
#

i have tema variable on my character

#

i did waht ou say

#

but tis only make it visible for all or hidden for all

#

not speicif clients hide or visible

#

can you accept my freinds quest?

#

i can show you my code

dark edge
#

just paste it here

dark edge
jade scroll
#

its not working i terid all

#

how the client can tell other clients only see and other cliesnt not see

#

its totally nor working

#

this is my code

#

if i check if its the same team then do waht? you cant make it visible on other clients from one clinet

#

you check if local is same team like others and then what? you cant add and remove widget from speicif clients.?

bitter robin
#

Not about your question but... Using tags for teams seems questionable, assuming the first tag exists and is the team tag seems just plain bad. 🤔

jade scroll
#

this is my whole project

#

very small 5 events

#

i jsut add a icon widget thats all

#

but i cant make it visible only for specific clients

#

there i nooooooooooooooo tutorial

#

nothing in internet

#

nothingggggggg

#

for example this its printing on all clients

#

how can i only make print string print on speicifc clients

#

its the same

#

how can i only print string on specific clients

#
#

but its not working too

lament flax
jade scroll
#

guys pls

#

i lsot dayy of this and cant get this work

#

i have widget icon and add to viewpot thats all this is my project.

#

i only want : this ::::: ---> client 1 see all icons from same team for example

#

----< and client two see only all icons from same team.

#

etc etc

#

can someone explain me how i can do this?

#

no one can help me?

jade scroll
#

you got it? its the hradest thing i ever treid to do 😄

#

its jsut a little thing jsut 1 code but no oen cant ge tthis run

#

and there is no video or something in itnernet.

kindred widget
# jade scroll no one can help me?

I'm not trying to be brutal but plenty of people could help. But the issue is that what you're trying to do is a really basic task that requires a decent understanding of replication and the game framework. That you don't understand this simple thing implies you don't have a basic understanding of these two things and no one wants to explain that in the detail it would be required for you to understand. It can take days or weeks to get a good grasp on it and you need to go through that at your own pace You just need to pick up some guides and go through them. Immerse in netcode and work with it. It will suit you a lot better than grating on this same problem with no progress for a week. Having said that:

Your task is simple though.

  • Make a team system.

  • Put an FName, or Enum, or Integer, or GameplayTag somewhere. PlayerState is best place. This property should be replicated.

  • Set this team variable based on the team that player is in. Set it ONLY on the server

  • Hide the widgetcomponent if the character is not in the same team as the local player.

  • Don't make it perfect for starts. Simply use the tick function in the character. Set the widget component to hidden or visible if the character's PlayerState is the same team as GetPlayerCharacter->GetPlayerState's team variable.

https://www.youtube.com/watch?v=3W6bYbVPyUY
https://www.youtube.com/watch?v=IJtgKMQAxQs

I found these two guides in a few minutes. There are also dozens of setting color by team and such that have a similar thing where you replicate the team and locally set the team's colors which can easily be extended to hiding a nameplate based on whether that team == the same as the local player's team.

dark edge
#

where's the part where you get the LOCAL CHARACTER'S team?

jade scroll
#

im 100% its not working

#

i found this viedo

#

both of them

#

its not working

#

i found them long time before

#

i alread tei all with local player

#

you wannaw tr if local = same team blalbla but how you wanna fire an event thats make icon invisible for speific client

jade scroll
#

the second video shows nothing 😄 spawn actor for teams wow 😄 you dont even need to replicate this 😄

#

thtas why i found this videos long time ago and it does nothing 😄 like i told ya

grand kestrel
mystic crown
#

why my ability active on server but cant activate on client?other ability is ok one of theme cant active

jade scroll
#

guys pls can someotn tell me how can i show icon only for team or specific cleint?

dark parcel
#

You run the function on the target machine

#

e.g. Overlapping Coin -> Switch Has Authority -> Get overlapping pawn -> Get Controller -> Show UI/Icon (Client RPC)

#

this will show the UI/Icon only on the overlapping player

thin stratus
thin stratus
mystic crown
thin stratus
#

For one, the "RANDOM" node is pretty dangerous here, because that will lead to a different Montage on Server and Client.

#

It will potentially cause the Player to start playing Montage A, the Server to play montage B, correct Montage A which will interrupt it and end the Ability locally.

nova wasp
#

use a consistent value on both client and server as the seed, or maybe send the result from only the server or only client -> server

thin stratus
#

Try it with a single Montage first and see if that does anything

thin stratus
#

If it does fix something, then yeah, you need to use a RandomStream with a communicated Seed.

mystic crown
#

this problem is cant activate on client
server can active and use this but client can't even active ability

thin stratus
thin stratus
#

To see if that works

mystic crown
thin stratus
#

Does the Client ever reach the ActivateAbility node?

#

Did you try printing BEFORE the PlayMontageAndWait node?

mystic crown
thin stratus
#

You should also go ahead and provide the native tags for failing to activate teh ability

#

So you can print and debug this better

mystic crown
thin stratus
#

Bascially create Tags in your game, that you can call whatever you want.
And then add them in your DefaultGame.ini under the AbilitySystemGlobals category, like so:

[/Script/GameplayAbilities.AbilitySystemGlobals]
ActivateFailCooldownName="Ability.Activation.Failed.Cooldown"
ActivateFailCostName="Ability.Activation.Failed.Cost"
ActivateFailTagsBlockedName="Ability.Activation.Failed.Blocked"
ActivateFailTagsMissingName="Ability.Activation.Failed.Missing"
ActivateFailNetworkingName="Ability.Activation.Failed.Network"
#

That's the names I choose. You can make different tags as long as your cover the 5 cases

#

These will show up in the GameplayDebugger for example

#

So you can see why the activation failed.

#

Then there is also this callback:

void UAbilitySystemComponent::NotifyAbilityFailed(const FGameplayAbilitySpecHandle Handle, UGameplayAbility* Ability, const FGameplayTagContainer& FailureReason)
{
    AbilityFailedCallbacks.Broadcast(Ability, FailureReason);
}
#

Which you can bind to (the AbilityFailedCallbacks), which provides you with the TagContainer that has those tags in it

#

In case you want to log/print them somewhere manually.

mystic crown
#

oh ok thanks bro

thin stratus
#

And then the last thing you can try

#

Is to enable some more logging

#

Both the normal log and the VLogger have log categories yo ucan ahve a look at

#

LogAbilitySystem and VLogAbilitySystem

#

If you set those to Verbose, you should see some info being printed

#

And logged to the VLogger if it's recording

#

Log LogAbilitySystem Verbose in the console should enable the verbose level of logging for it

#

Same then for VLogAbilitySystem

mystic crown
#

Thank you very much bro for the useful information

jade scroll
dark parcel
#

if you can't figure that out just go through the pinned materials 12 times

jade scroll
#

waht mean target machine

#

i craet the widget on character

#

icon widget

#

i only have 1 character blueprint for all players. and all teams

dark parcel
#

@jade scroll The key part of multiplayer is knowing how to runs functions on specific machines.
Go over the pinned material as you are clearly missing the basic

jade scroll
#

i know all basics 😄

thin stratus
#

@dark parcel They were already given an answer to this.

jade scroll
#

they dont its not working -.-

dark parcel
#

Yeah I didn't scroll up 😔 , just saw Autheur message.

thin stratus
jade scroll
#

its only a icon widegt

#

2 nodees

#

create widget add to viewport

#

try to replcaite this only for speicif clients

#

2 nodes.

#

just make this 2 nodes work for spicifc clients

dark parcel
#

Run the 2 nodes on the target client.
Look up Client RPC. Stop begging to be spoon fed, all the info is available on the pinned material.

thin stratus
#

If it's "just make this work" and you know the basics, then what are you struggling withß

#

You are contradicting yourself

#

Either it's easy, which means you can do it yourself, or it's not, at which point you gotta do the work here so people can help on smaller problems.

#

A system where Clients are on Teams and only Team Members can see the Character Icons is "easy" if you know all about the required parts.

It's not "just make this work". You will need to create the Team System and you will need to either use the Teams to hide the Icon or to never create it on those players in the first place.

jade scroll
#

its not easy

#

i can show them for all or only for himself

#

but i cant show icon from client 1 to ---> for example client 2 and 3 and not to client 4

#

and client 2-----< only for client 1 and 3 and not for 4

#

and client 3---< only for 4 and not for 1 and 2

thin stratus
#

In its simplest form you need a way to group those Clients.
And that information needs to be replicated and available to all of them.
And you most likely want to only create the Widget when you know about the Information.

And that's usually done with a Team Variable and an OnRep function.

jade scroll
#

try it you will not get it work trust me -.-

thin stratus
#

Assuming the Team variable is on the Character, if it replicates and calls the OnRep, you can get the local Character (GetPlayerCharacter0) and compare the Team Variables to then either spawn the Icon or not.

The problem you'll face is a racecondition between the Team Variable of the Local Client and the one of the other Client. If the Local Client has its Team Variable first, then the above stuff will work just fine. If the Local Client doesn't have its Team Variable replicated yet (so it doesn't know what team it is on), then you can't perform the logic yet and need to wait for the Team to replicate.

You can then either go over all Characters that are locally avaible and re-run the logic to decide (if both sides have the Team Variable replicated), or if you want to make it a bit smarter you can simply have an EventDispatcher that calls when the Team Variable updates and you can listen to that in the other Client's Character.

jade scroll
#

i aready this this all

#

the problem is you have 1 character

lament flax
#

Well you are doing it somehow wrong

jade scroll
#

you can ake for each loop get all actor of clas check if tema is same as local cahracter

#

but then how you will tell the chracter if its in the same tea run function on this clinet spcificly

thin stratus
#

The point is that you need to do this on the Characters in their OnRep_TeamVariable function

#

You don't run it on specific Clients

#

Every Client has every Character replicated to them

#

Naturally

#

+- beign out of relevancy

jade scroll
#

-.-

#

its to nodes make clean top down project

#

and show me it will not work trust me -.-

#

just two nodes ^^

nova wasp
#

I can't understand what you are saying at all here

thin stratus
#

From all the Characters they look at, one is the local one, the others are Simulated.
If you have a Team Variable that is set to RepNotify and the Server sets it, it will call on the given Character for all Clients that are relevant.

jade scroll
#

only this

thin stratus
#

And in there you can totally do your Team check

nova wasp
#

the challenge here is considering the code from each perspective, the goal here is to change if you add to viewport IF they are on your team

thin stratus
#

Yeah that needs to be used in the OnRep or rather the function that first checks if yo uare on the same team

nova wasp
#

you need to make something that can consider whether any given two players are allies or not and just use that to change if they have an icon

thin stratus
#

it will not work trust me
You do realize that you are suggesting that someone with 10 years of experience in UE, who worked the majority of the time on Multiplayer projects, is wrong about something that they already implemented bunch of times, just because you aren't capable of following the instructions and fail to implement the logic yourself?

jade scroll
#

can you show me the code?

thin stratus
#

Do you also tell your local electrician that if they tell you how to fix the light that they are wrong until they come over and do it for you?

jade scroll
#

its just two nodes -.-

thin stratus
#

It's not just two nodes

#

The nodes you show are spawning a widget and adding it to the viewport

#

You gotta use them only if they are on the same team

#

And that needs a lot more nodes

jade scroll
#

a lot more? o.O

nova wasp
thin stratus
#

And if you keep asking about it like this then I will simply strike you for literally spamming at this point.

We gave you plenty of information, partially even spelled out the whole solution for you.

It's quite rude at this point.

thin stratus
#

You will just come back 10 minutes later with the next problem, cause you learned nothing from it.

jade scroll
#

ok

thin stratus
#

We are all gladly available for help, but all you do the past hours is to spam the same question, without showing any of your progress or code that you tried. Without any attempt to even debug the problem on your end to see where it fails.
While saying you know the basics and "it just doesn't work".

It's really ridiculous at this point.

#

Start implementing the system from scratch then. Take in the information we gave you. Start debugging it by adding print strings when things happen to confirm if what you are trying to do is correct or not. And if you have something that you are stuck on with actual code and debug information, you can come back and explain that given part of your problem to get help.

jade scroll
#

i allread treid all and delete the code i tried 100 methods

#

i will make it again make a picture and send you the code

#

just gimme moment

thin stratus
#

Yeah and I will tell you that at this point you really don't know the basics as you claim.

#

You gotta accept that part first, and learn the chunk of the basics before this even makes sense to tackle.

lament flax
#

did you add the team check code ?

torpid crest
#

Hey guys 👋

I am thinking about getting int16 plugin for unreal.

Is it good idea to use int16 in network based game or not?

lament flax
#

whats int16 ?

#

for me its only a int type

torpid crest
#

Well I can’t specify whether to use int32 or int16 in blueprints, so that’s why I’m considering getting a plugin

#

Less data to send over network

nova wasp
#

if you need to shave off16 bits in an int you are probably better off just doing stuff in c++ anyways?

lament flax
#

yeah

nova wasp
#

if you can prove an actual cost to integer replication in bandwidth I guess but... just spend a few minutes to make the rpcs and replicated values in C++ instead and just convert them to int32s in place for bp gameplay code

#

if you really need to

#

that plugin seems nice though, I do wish we had int16 support in bp just because (probably not worth the added dependency, but I like the idea)

modest crater
lament flax
#

since he was talking about int16 and blueprint i was thinking about this one

modest crater
#

jesus what the fuck

#

why would anyone pay for that

#

I hope not

lament flax
#

that are to lazy to search outside the marketplace

tardy fossil
#

Using blueprints and worrying about byte sizes of types seems quite counterintuitive to me imo

modest crater
#

Hes referring to replication not local machine

#

as megafunk said though, c++ is where its at, plenty of built in bit packing stuff, especially for ints

tardy fossil
#

yea i mean if you're concerned about those things you dont usually do BP's

nova wasp
#

I guess it is bandwidth, yeah
I still think it's just unreasonable to not do some stuff in C++ there, unfortunately bps give you very little control here

#

the good news is you basically just need to make like a shell of a C++ class to get something that sends int16s and turns them into int32s for bp

#

could even be a bp wrapper struct + bpfl

#

that is of course, if there is an actual bandwidth issue

modest crater
#

exactly, wrapper struct with custom net serializer that simply stores it packed, here is a snippet from my int overload

// Int specialization, packs into lowest power of 2 that fits the value.
template<typename I>
requires std::is_integral_v<I>
void BF::Serial::Serialize(I& Value, FArchive& Ar)
{
    bool bNegative = false;
    if constexpr(std::is_signed_v<I>)
    {
        bNegative = Value < 0;
        Ar.SerializeBits(&bNegative, 1);
        if(Ar.IsSaving() && CHECK_BIT(bNegative, 0))
        {
            Value = -Value;
        }
    }

    uint64 Val = Value;
    Ar.SerializeIntPacked64(Val);

    if (Ar.IsLoading())
    {
        Value = static_cast<I>(Val);
        if constexpr (std::is_signed_v<I>)
        {
            if (CHECK_BIT(bNegative, 0))
                Value = -Value;
        }
    }
}
#

tbf its probs overkill lol

#

if you were paying for that plugin then it might be better to just learn c++ basics

thin stratus
#

Eh, before I would start exposing stuff like that to BPs, I would probably start looking into exposing some flags to control the property serialization.

The Archive has enough build in functions to already start with.
And at the point where you really need to start saving bits, you are deep down in "custom solution" world anyway.

thin stratus
#

And wrapped that all with macros so the code in the end just looks like this:

SERIALIZE_PROPERTY(Property)

Which then takes care of calling the method on the helper, and even allows me to print the property name and value cause I can interpret the Property as a string in the macro too.

#

There are even versions of the macro that allow passing in a function pointer to handle serialization, delta creation etc. by hand, while still having it go through the helper.

modest crater
#

Ah very nice, sounds like I have something similar, mine is just a namespace with NetSerialize and Serialize functions that are overloaded (still a wip) and that handles stuff like you said with bools being a bit and even quant stuff with rotators and vectors.

I havent thought about any of the helper log stuff with this though but thats a good idea no doubt

nova wasp
#

network insights can show serialization a bit

#

no pun intended

#

it's getting better in later versions too

modest crater
#

ahah yeah I used it a lot when figuring out header costs and rpc stuff when I was first learning, insights is so valuable there

thin stratus
#

Only thing that annoys me about Unreal Insights is the amount of tagging one has to do

#

It's relatively simple if you have a helper that can contain that scoped tagging

#

But if it's stuff in the Engine that could use improvements (looking at you, NPP and Mover), it's a bit annoying.

nova wasp
#

you can just quick cycle scope...

#

as for custom bespoke stats of course you need to make custom categories/etc

thin stratus
#

If you want to know what each individual Property takes, and the name of it, you gotta plug a lot more

nova wasp
#

ah yeah, that's where the new journaling stuff UE_ADD_READ_JOURNAL_ENTRY will hopefully help

modest crater
#

Tf is that? Haha

nova wasp
#

new helper for showing what serialization is doing but mostly internal afaik

jade scroll
#

why i cant euql or not euql to make with string?

#

it not works with strings what can i do?

kindred widget
#

You can == a string.

jade scroll
#

it not works for me why?

kindred widget
#

Does == work?

#

New math and operator nodes are still finicky in some cases.

#

There is a function though. Sec.

jade scroll
#

ah ther eis new function i see

#

they changed in 5.4.4? o.O

thin stratus
#

Try the Exact Equal

kindred widget
#

Yeah, these three in the bottom. For some reason the normal == node doesn't just pick one of these.

jade scroll
#

im still woring on icon visible for teams xDDDDDDD

kindred widget
#

You'll get it. It's a good early exercise too.

jade scroll
#

i can progrmam everything

#

but this is the hardest i ever treid 😄

#

progrmam al ---> easy

#

replication easy ----> show on client then afor all. or only show for the client you palying ---->

#

easy

#

BUT

#

show for speicific clients in multiplayergame with team s ---> hardcore 😄

kindred widget
#

It's just a simple replication update. That's why in my notes above I mentioned just doing it on the actor's tick for starts so you don't have to do the extra steps of hooking up onreps and delegates and whatnot. That way you at least know your team replication is working correctly. After that you can OnRep it and make it all event driven and stuff.

jade scroll
#

you talking 😄 try it out^^

#

two nodes 😄 1. create widget 2. add to viewport

#

try it out to show only for speicifc clients 😄

#

2 nodes just 😄 replicate

kindred widget
#

Unless you have access to Lyra's indicator component, it can be easier to just do a widget component with screen space for starts. Then the character itself can affect the widget visibility without the widget having to do anything but display the name or color. Even with the indicator system, the character still controls it via the Descriptor object. Then you're not adding widgets to screen and stuff manually.

jade scroll
#

what is lyras inicator compnent? o.O

kindred widget
#

TLDR just a better way to do screen space widgets that follow a component. It cleans up some glaring issues that arrise using WidgetComponents in larger game projects.

jade scroll
#

wher ecan i can get it? waht is that xD

kindred widget
#

You would need to pull it out of the Lyra sample project.

#

For real though. This is all you should need for your goal on a basic level.

#

And then also setting the PlayerTeam where ever you pick teams for them.

thin stratus
#

Well, if you do it on Tick it's obviously "easy"

#

:D

#

But I doubt if they would do that and have it working that they would ever go back to learn it properly

jade scroll
#

dont cast to widget

#

create widget and make vairable

sonic frigate
#

Unreal 5.4 with advanced session 5.4 when i want to get current players always show 1
Is this a real problem with version or engine problem?

jade scroll
#

when i change the whole project from listen server to dedicated server? i have change much?

#

cause lsitne server i have jsut a client is server. i jsut change that the server run as client and thats it?

#

or i have change much code?

kindred widget
jade scroll
#

i need c++ for dedicated?

lament flax
#

IMO there is a lot of changes

if you switch from dedicated to listen server you have to add some extra code ofr the server
if you switch from liste nserver to dedicated you have to remove all the stuff the the LS would previously do

#

dedicated to listen server being the most rework

jade scroll
#

is it better make listen server game on steam?

lament flax
#

also you cant buyild the server without a source build

lament flax
#

using LS

jade scroll
#

i need pay? O.o

#

waht???

lament flax
#

well you have to pay servers, they arent running for free

#

if you use listen servers your players are the server, so you dont pay anyhting

jade scroll
#

how much it cost wtf?

lament flax
#

google it

#

there are many server providers

worthy oak
kindred widget
# lament flax IMO there is a lot of changes if you switch from dedicated to listen server you...

This is kind of untrue though. You don't code for a listenserver as if you are coding for one. You should simply code as if things are for the server, or for a client. Listenserver simply runs both of these sets of code. The engine has already done the majority of the dedicated server gates like not spawning particles or playing sounds for you, and game specific code doesn't need to care about these things.

Dedicated servers already open to their own specified map, and you should usually just use command line or ini settings to affect further how they should run once they open. Where a non dedicated simply opens like a normal client and can host a game similar to a dedicated.

The only things you should ever care about as far as personal game code between the two are optimizations. Forcing all players to remain near the listenserver player in a large open world for example. to avoid running too much on the non dedicated instance.

You don't really have to add or remove any code to cook for one or the other.

lament flax
#

yeah you mostly dont have

#

but you still have some cleaning to do

jade scroll
#

listen server game on steam will work wihtout c++?

lament flax
#

no

#

you need c++

jade scroll
#

why?

lament flax
#

because everything isnt exposed

haughty ingot
jade scroll
#

nice

#

so lsiten server works on steam with 3vs3 game?

#

or will it not work if server leave?

haughty ingot
#

If the server leaves the clients would disconnect, because there’s now no server.

jade scroll
#

so it will not workd? xD

#

i jsut want listen server on steam 3vs3 game

#

it will work or not i dont understand what you mean

lament flax
#

a listen server means one client is the host

#

he create the room, if he leaves, the room is destroyed (more or less)

#

for fighting games you usually dont use listen servers

#

even more if its competitive

jade scroll
#

so waht can i do?

haughty ingot
#

You can quit worrying and just make a game. unreal

twin juniper
lament flax
twin juniper
#

some plugins do that for you though

lament flax
#

so either you code it yourself or you buy a 100-200€ Steam plugin that does it for you

lament flax
lament flax
#

the plugin doesnt do everything

#

its a extension on the default online subsystem

twin juniper
zealous wigeon
#

Hi I need to ask few questions (please tag in case):

  1. does creating dedicated server on ue5 comes with "ready-to-use" data validation which will prevent cheats, or am I supposed to write my own logic for that?
  2. does creating dedicated server need a source build even thought I will just test the game sessions? (I will eventually ask someone else to cook the project in server mode for me)
  3. is the creation of dedicated server done through C++ or are blueprints enough?
lament flax
lament flax
#

but i dont know all the specificities

kindred widget
#

You can't build out a dedicated server without a source build. If you want to test without fully building out the server, then you have to do it in editor.

#

I think you can still test using separate processes though? So there's that at least.

zealous wigeon
#

I don't have a source build

#

and I can't relly get one right now

kindred widget
#

As far as I'm aware. I haven't done much editor testing with that outside of basic gameplay tests.

zealous wigeon
#

What do you guys think about this?

#

I don't really need collision checking, nor maps or other things

#

I just need to replicate local data of player A on the game of player B and viceversa

#

Locally speaking at least, I just need to do this manual replication

#

At server level instead I just need to validate data

kindred widget
#

What Fishy means is that there's no anticheat built into the engine. This is because this heavily depends on your project.

zealous wigeon
#

I was mainly talking about data validation there

kindred widget
#

The general rule is that if it is data on a machine a player has access to, they can alter it. So if you have a server running not on the player's machine, they cannot alter the data. They can alter data replicated to them, but as long as you don't allow them to turn around and force the server to do things, this just messes up their own client data.

zealous wigeon
#

Yes I understand this concept thanks

#

However this doesn't really matter at this point

#

In fact my main doubt is whether it makes sense or not to do replication manually

lament flax
zealous wigeon
# lament flax doesnt look like you fix the problem

Not having "ready to use data validation" on the dedicated server is not really a problem, its more a "minus".
The problem here is that I can't get a source build right now and I won't be able to in a long time from now on, therefore I can't make a dedicated server in Unreal Engine, seen the limitations of not fully building the server every time I want to test the game on a network level

lament flax
#

maybe you want to try making it a listen server ?

zealous wigeon
# lament flax wdym with manual replication

In games which are implemented in other smaller engines, or even better example for games implemented "from scratch" without an engine, you would normally write a replication system yourself, that's what I mean by "replicate manually"

latent heart
#

Why do you need a server separate from UE to send player data to each other?

zealous wigeon
kindred widget
#

There is no such thing as P2P in Unreal

latent heart
#

(by default)

kindred widget
#

Listenserver is just simply a Server running with a client attached. It still acts as a server instance for all other clients.

#

Changing this to dedicated will be basically no difference to player's data.

zealous wigeon
latent heart
#

#1 is in no way related to #2.

zealous wigeon
latent heart
#

Without further context, that is.

kindred widget
#

To prevent cheating. Release with a dedicated server. To develop, simply test it with a listenserver and a connected client. There won't be much of any difference once you build out the server eventually.

zealous wigeon
# latent heart #1 is in no way related to #2.

The main point, as I said around 5 times, is that I can't get a source build, which means I'm really limited in the development of a dedicated server inside UE (almost can do nothing)

zealous wigeon
#

thanks

#

in fact asking someone else to build shouldn't be a problem if I pay

latent heart
#

Yes, but you don't need a dedicated server to prevent cheating. Unless you are not releasing the server at all. Because even with a dedicated server, if you give that to people, the person running the server can still cheat, just as if it was a listen server.

zealous wigeon
zealous wigeon
#

I don't need

#

as I said around 6 times, the problem is that I can't get a source build

latent heart
#

And what I'm saying is, even with a source build and a dedicated server, you can still cheat if you are running the server.

#

So do you plan to release the server?

zealous wigeon
#

which is not good for cheating prevention as from as I know

zealous wigeon
latent heart
#

By you only?

zealous wigeon
#

no player is running the dedicated server obviously

#

it would not be called like that

latent heart
#

Then they can still screw with it.

#

You can still cheat, even with dedicated servers.

#

If you yourself are in control of the server.

zealous wigeon
zealous wigeon
zealous wigeon
#

it's a dedicated server

#

the players are the clients

haughty ingot
#

Guys, there is a severe disconnect here lol

latent heart
#

Gives up

zealous wigeon
#

I don't understand what's the point to be host

#

if you can break it down better maybe I can answer you the right way

latent heart
#

My point was that whoever is in control of the box/vm that is running the server is still able to cheat. If a player rents an AWS server and can do whatever they like with it, that includes cheating.

twin juniper
#

don't pay dedicated server just for trying to prevent cheating

latent heart
#

It doesn't matter if the player is only a client if the human playing the game can cheat outside of it.

zealous wigeon
#

this was useful

latent heart
#

Listen servers make it easier to cheat for the player hosting the game, sure.

#

But not for anybody else.

zealous wigeon
#

What do you propose otherwise?

#

listen-servers sound very unsecure on this side

#

one player can cheat 100% and the other one can't do anything

#

Unless I use a custom relay server

#

which would eventually get info from both the players, but at this point I would just make a dedicated server

latent heart
#

If there's "money involved" then you need to get a source build.

zealous wigeon
latent heart
#

That's why I was asking who was in control of the server and this is the first time you've answered that question. 🙂

#

I'm not sure, but can you even build a client-only build without a source build?

zealous wigeon
zealous wigeon
zealous wigeon
latent heart
#

So if you want complete control, yoju need a source build.

zealous wigeon
#

Yes you are right, in fact the whole discussion revolved around the topic of dedicated servers from the very beginning, listen servers were mentioned maybe 1 time just for context (and a couple of times just by you)

latent heart
#

I didn't bring them up, I just said player controlled dedicated servers can still allow cheating, which is why I asked who was in control of them.

#

Games do release dedicated servers for players to use sometimes, such as Palworld.

zealous wigeon
zealous wigeon
latent heart
#

What sort of game is it?

zealous wigeon
#

shoother game PvP

#

1v1

#

in a small arena

latent heart
#

So something like UT?

zealous wigeon
#

never heard of it

#

take fortnite build battles between only 2 players as an example

latent heart
#

Unreal Tournament - the game UE was designed for.

#

(I guess it's now designed around Fortnite, but yeah.)

#

And what "player data" would you be sending through a "relay server" ?

#

Everything they do from their movement to shooting etc.?

zealous wigeon
#

you don't know what a relay server is right?

zealous wigeon
latent heart
#

Yes, but that doesn't mean you're sending everything through the same server.

#

Well, then you have no options.

twin juniper
#

1 server only?

zealous wigeon
#

okay, a relay server is usually used in listen-server structures because peers can't really communicate in a straight way between each other, for example my IP is 1.2.3.4 and yours is 2.3.4.5, but we can't often communicate easily, because of things like NATs or may happen because we are in different countries, and other problems that may occour

#

now what you need to solve all problems

#

is to introduce a middle point, which is shared among all player connections

#

this middle point is the relay server

#

the relay can then be used for matchmaking as well

#

but it's not its primary usage

latent heart
#

That doesn't really solve anything, though.

zealous wigeon
#

yes it does, steam and EOS provide relay services

latent heart
#

You still need a server. With a listen server, the player hosting can still cheat. With a dedicated server you need a source build.

#

A relay server doesn't change any of those things.

unkempt tiger
#

Not really development related - but - does anyone know how online multiplayer projects that want to apply for a megagrant share their build when applying? Non-trivial since the game can't really be played without at least 4 players and a running dedicated server

latent heart
#

Unless the relay server is also the game server... but then that's just a dedicated server with more features.

#

So you still need a souce build.

zealous wigeon
#

makes no sense

twin juniper
unkempt tiger
#

it makes sense

latent heart
#

I guess I maybe missed a comma.

zealous wigeon
#

"With a listen server, the player hosting can still cheat" is not related in any way with "With a dedicated server you need a source build." which has, in turn, nothing to do with "A relay server doesn't change any of those things.".

this makes me understand you didn't get what a relay server, nor what the whole discussion with the other two guys was about

#

My question to them was wether I would be able to test dedicated server development without a source build, they said I can do that but is very limited

latent heart
#

"Listen" and "dedicated" are the 2 forms of server UE has. I noted the drawbacks of each type...

zealous wigeon
#

problem solved, discussion ended

#

then you tried really the impossible to exploit my plans with out of context problems which are not even related to my game

latent heart
#

You can do that, but there's no guarantee that it will work correctly. You should really test the dedicated server by itself.

zealous wigeon
twin juniper
zealous wigeon
#

a friend is a placeholder for "someone I will pay"

#

it will be hard to find someone able to package the game for me if these are the levels

#

also I don't really have friends with ready source builds, nor ue

latent heart
#

I think you're going to encounter a lot of issues just paying somebody to package a dedicated server for you each time you update your code.

zealous wigeon
#

yes that's a good point finally

#

we managed to get a good point at last 😂

#

well probably I will get a better hardware and a source build if the game works out

latent heart
#

The game can't work out if you dedicated server crashes every 5s because it is untested.

#

And that will happen because you aren't able to compile it yourself. There are a lot of things that can go wrong, even just not even being able to compile, when you go from a regular build to a dedicated server build.

zealous wigeon
latent heart
#

It does make a difference. It makes a very big difference to the code.

#

It makes no real difference to cheat prevention.

#

(assuming the listen server is not cheating and you are trying to prevent remote clients cheating)

zealous wigeon
latent heart
#

Well let's say you develop your game using a listen server as a host. You may mistakenly rely on parts of the game which are stripped out when building a dedicated server. Your assets may not package correct because of missing references. There's a ton of stuff that could go wrong when you strip out 75% of the game to make a dedicated server.

#

You might even have game mechanics which rely on the the game being rendered... when dedicated servers have that completely removed.

zealous wigeon
#

This may be a good consideration, I don't know anything about how this stuff works, that's why I came here to ask, so now I need another agreement on this
@lament flax @kindred widget what do you think about this?

latent heart
#

Don't worry, relay servers will fix it!

zealous wigeon
zealous wigeon
latent heart
#

That was a joke.

zealous wigeon
#

on something that was never said

latent heart
#

Or skeletal meshes may not animate.

#

The tick rate may be substantially different.

zealous wigeon
#

So the other guys said something wrong? just asking because I don't understand who I should trust here

#

finally, is the code written for listen-server and for dedicated servers nearly the same?

#

I probably will have no server logic on rendering stuff

latent heart
#

Well written code will be the same. The chances of you writing 100% correct code that doesn't need debugging when switching to a dedicated server on your first try is zero.

zealous wigeon
latent heart
#

But you don't know what changes going from a listen to a dedicated server. You said so yourself. You have no experience. There might be subtle changes you are unaware of.

#

And when there are things you need to fix, perhaps bugs you need to iterate on, you will be unable to test it yourself.

zealous wigeon
#

okay I'm starting to understand better this this, can you make me a practical example of something done with listen-server architecture and something made with dedicated server architecture? just a simple example nothing complex

zealous wigeon
latent heart
#

And that's a massive issue... because unreal is massive. Millions of lines of code. If not tens of millions.

zealous wigeon
#

so?

latent heart
#

You don't think have tens of millions of lines of code in an engine you are unfamiliar with makes a difference to how difficult it is to transition from a listen server to a dedicated server?

#

Get first player controller or get controller by index are just cursed nodes.

#

But you won't know this if you're new to UE.

zealous wigeon
#

that said ue may do everything I'm currently unaware of

jade scroll
#

wtf the string ==(equal) not working with strings -.-

latent heart
#

FString::operator== is, by default, not case sensitive.

latent heart
zealous wigeon
#

that's why I came here asking

latent heart
#

Nobody is going to be able to explain every single possible issue.

#

You need to test these things yourself.

zealous wigeon
#

I found two who actually gave me a tldr and one who tried to exploit everything that was not even relevant, who do you think was easier to trust?

#

but at this point I don't know anymore

#

now you said a bunch of things that make sense

#

and this changes the story I guess

latent heart
#

Everything I have said has made sense.

zealous wigeon
#

no at the beginning, offense a part, you were just blathering random unrelated stuff

#

but anyways

#

at this point

lament flax
#

you are hallucinating things

zealous wigeon
# zealous wigeon at this point

@latent heart
since I can't get a source build and having this listen-server which then will be packaged as dedicated, may it be easier for me to handle replication manually?

latent heart
#

No

zealous wigeon
#

can i ask why not?

latent heart
#

So you want to write your own separate dedicated server and then work with a completely different object model and have to re-implement all of UE's networking? And this is somehow a better solution?

zealous wigeon
#

not that detailed, I was thinking about just creating a snapshot of the local relevant info and send it to my server to validate stuff and then receive from the same server the local snapshot of the opponent and replicate it locally on the opponent's player controller

#

and repeating this N times per second

#

relevant info may be player position (or inputs as alternative, like forward/backward axis, left/right one, jump input, shoot input, and so on)

#

what do you think?

lament flax
latent heart
#

I think you should save up to buy a machine capable of building a dedicated server.

zealous wigeon
zealous wigeon
latent heart
#

Then do so.

zealous wigeon
#

yes I will, but I'm still interested why you think this

#

what I don't see that you do

lament flax
zealous wigeon
#

I'm just creating a very small and limited version of replication system

haughty ingot
#

What even is this conversation bad_blueprint

zealous wigeon
#

about understanding

twin juniper
#

understanding what exactly?

lament flax
zealous wigeon
#

what scares you?

#

make me an example

#

maybe I don't see it because UE is involved here

lament flax
zealous wigeon
#

please can you make me a real example

#

I need to understand you point

lament flax
#

i would rather test in editor and pay a server once in a while to build a dedicated server

#

also, why cant you have a source build ?

jade scroll
#

how can i make string == string ?

#

equal

lament flax
#

use string exact match

#

nothign special for ==

lament flax
zealous wigeon
# lament flax also, why cant you have a source build ?
  1. bad hardware (may take days to build)
  2. few storage
  3. terrible internet connection, downloading +250 gb is not something I can do, you may be used to good/normal connection, mine is not just limited in data I can use each month but also very slow
jade scroll
lament flax
zealous wigeon
lament flax
#

and wdym with "doesnt work"

jade scroll
#

doesn work -.-

lament flax
lament flax
#

debug the strings

latent heart
nova wasp
#

can you show the two inputs it is getting (debug logged or just debugger breakpointed?)

zealous wigeon
latent heart
jade scroll
#

jsut A and B string

latent heart
#

BP?

lament flax
#

you are doing an error

#

not UE

jade scroll
#

i have error ^^

nova wasp
#

also I would suggest not replicating strings/names raw if you are doing that, it's almost always better to send something else if possible (unless it's really an arbitrary string)

#

but if it's just to learn that's totally fine

latent heart
#

Yeah. The download for the dedi server isn't that big.

#

It becomes big when you compile.

zealous wigeon
#

mh ok now it's less bad

#

how much time do you think it will take to conpile

#

on a not very good laptop 8 cores

jade scroll
#

a other day lost

#

and dont get this work: only speicifc clients see icon 😄

latent heart
#

It won't take 24 hours.

#

Just do it.

nova wasp
velvet jacinth
#

Weird issue.
As the client player getting farther (not that much far) from the server player location, the enemies movement starts to get laggy. As they move closer, it getting better.
Any tips?

nova wasp
#

"enemies movement starts to get laggy" is hard to guess at... are they lowering network update rate or animaton update rate or what?

latent heart
#

It sounds like they are becoming less relevant to the server's player and thus updating less frequently.

nova wasp
#

that's my assumption as well but I'm not really sure how to visualize that in the old network setup

#

or without writing some quick dumb function that debug draws it all

#

you could just override their movement updates I guess to visualize how often they occur

jade scroll
#

ok guys

#

i got it finally work

dusty void
#

it helps to put it on the ssd compared to the hdd im pretty sure

latent heart
#

Look into developer settings. Pretty useful.

#

There's a tutorial by tom looman that I hear is good?

ripe glen
#

any of you make a custom multiplayer server/client?

#

would you recommend making C++ style classes to handle networking or unreal engine style?

#

like using UProperty and the like inside of API and Networking code

hoary spear
#

Desktop cpu?

cerulean sequoia
#

Hi, what is the best way in unreal engine 5 for a high physics hz (240hz) racing game, client has authority over his own car, to replicate the cars? there will be up to 20 cars in the world.

zealous wigeon
latent heart
#

For a dedicated server only... Probably yes

#

Just never build the editor or the full game.

#

Most of the size of the compilation is the debugging files, so if you don't need those, you can save a ton of space.

#

(compile in shipping or whatever)

#

And it's totally possible to run the launcher version for your main development and only use the source build for your dedi server.

velvet jacinth
#

Any advice for how change the net cull distance to be from the pawn's location instead from the player's camera location?

tardy fossil
zealous wigeon
latent heart
#

Check it out from git, run setup.bat, run the unreal version selector, then rigth click your uprojct in explorer and change its engine association to your source build, open the sln in your ide and build the dedi server target.

#

You'd also need a server target.cs file.

#

And a client one so you stop people being able to host listen servers, of course.

ripe glen
#

any of you recommend unreal replication and rpc system for a MMO?

latent heart
#

I don't recommend UE for an MMO at all.

#

I'm not sure what I would recommend, but yeah. UE makes a lot of assumptions in its design: mainly that you're playing Fortnite.

dark edge
ripe glen
#

thats not an answer bro

#

i got 15 years of experience as an engineer so thats a lame answer

latent heart
#

15 years of experience as en engineer doesn't mean you know anything about game dev or what making an mmo entails.

#

You should spend some time making a regular mp game (not an rts) before jumping into mmos.

chrome bay
ripe glen
#

perfect, thank you.

chrome bay
#

But to be more specific, no, UE is not designed for MMOs

ripe glen
#

okay, I was thinking about it being more client driven each region or area would have one player responsible for spawning stuff and then adding them to the server.

#

so essentially i think like HALO use to do they would pick the lowest latency client and they would host those things.

jade scroll
#

the replication works fine when i hav widget compinent. but when i add the widget in event grap with create widget and add to viewport its not working anymore -.-

jade scroll
#

only show for speicif client

#

it works with widget component

#

but not with create widget + add to viewport graph

dark edge
#

Widgets don't replicate at all

#

you want only one specific client to create the widget and add to their viewport?

jade scroll
#

add to all relevant clients

#

client 1: add viewport alle cliesnt smae team and not emeiy

#

and thats for all clients

#

ok it works 😄 got it

fervent condor
#

If there are any networking experts out there, I'm getting some log spam when I spawn our weapons in the world. Does anyone know whats these warnings are about?
Warning LogNet UActorChannel::ProcessBunch: ReadContentBlockPayload failed to find/create object. RepObj: NULL, Channel: 12

Looking through the UActorChannel::ProcessBunch function, this seems to happen when the Actor is valid and the "RepObj" is not valid.
Anyone ever seen this before?

grand kestrel
#

@thin stratus & @pallid mesa
Do you guys think its worth adding an extra movement component in predicted movement that adds an additional compressed flags (i.e for 16 entries total instead of 8), since in actual production 8 is often insufficient?

thin stratus
#

an extra movement component

#

What?

grand kestrel
#

Its all separated out into individual movement components
Instead of all in a single component
The expectation is you'd merge the stuff you want into a single one

thin stratus
#

Can't one just add another uint8 on project level?

grand kestrel
#

Oh.

#

Yes, but its just for the purpose of example

thin stratus
#

Also with the containers one can by now use, there should be no problem in adding as many flags as you need.

gilded vapor
zealous wigeon
latent heart
#

I think you're missing out by just not using the tools UE gives you.

lament flax
#

he is also giving authority from client

#

which is something you dont want with a fighting game

rocky pike
#

What could be a better way to replicate array variables....in this case im adding a player to it

zealous wigeon
#

I made the impossible to strip out everything from the engine except server stuff

#

I just don't have space

latent heart
#

You're going to need a lot more space to make whatever game you're making than a source build.

#

Assets get very big, very fast.

zealous wigeon
#

which is different

#

I'm exploring the possibility it may be something I can do

zealous wigeon
#

the game is simple enough to have not a lot of assets

latent heart
#

If you say so, mr experienced dev.

zealous wigeon
#

dude the thing is that I know the game I'm making

#

it's a grid 16x16 and fortnite builds assets (wall, stair) and the wooden texture

#

not much more

#

may be max 20 assets

lament flax
zealous wigeon
#

20/30 gb is fine (I will never reach it I'm pretty sure)

lament flax
#

you will fast

zealous wigeon
#

I basically have all assets I will use in the project right now

#

it takes a couple of gb

#

I don't even think the game will need more assets then the ones it has right now

lament flax
#

i hope you are righ

#

game dev is unpredictable

zealous wigeon
#

I know my little stuff about game dev, mainly bout making games without engines

#

here I'm asking about how ue5 handles the same stuff

latent heart
#

By using a lot of space that you apparently don't have 😛

twin juniper
#

Just use Unity. Problem solved.

frail sun
#

could the built in multiplayer handle ~200 units in an RTS game?
at what point does it start to slow down?

haughty ingot
#

That really depends on so many factors

frail sun
#

tick rate wouldn't need to be more than 30

haughty ingot
#

For an RTS game you can ditch a lot of stuff in the CMC that isn’t needed. Or ditch it altogether and use your own solution

#

But here’s your best answer: profile

frail sun
#

alright

subtle patio
#

I've got a vehicle that players can get in - currently the movement for it is handled on the server, I'm hoping to set up immediate client extrapolation and then sync up with the server - essentially like the character movement component does I suppose, so that the client isn't waiting for the latency round trip to see their input realized in game. Is there a decent way to set this up out of the box or should I be cracking open the cmove component and seeing how they do it? I've got a copy of smooth sync which I was using to help with the extrapolation of the vehicle (it's a physics actor so this plugin has been a bit of a godsend) but for this specific setup where I need to granularly control how the replicated position is actually applied, it's all a bit broken.

I did have the idea of hiding the true base version of the vehicle on the driver client's end, then having a purely local version that you drive, then manually syncing to the replicated true base position but that feels like a pretty hacky way to set it up, I could similarly disable "repliate movement" and manually send the transform as a repnotify, then manually do my syncing, that's me essentially rolling my own custom sync system, wondered if anybody has any experience with this or has a more out of the box solution?

prisma snow
#

I have a question about FFastArraySerializer:
I know that it does delta replication on arrays, so it will only update the array items that changed (yey!). However, I wanted to confirm that the item itself (the struct) is always replicated completely, which is what sounds reasonable to me.

I am implementing an actor helper with the fast array serializers, and depending on the above answer, I would either:

  • Have a different fast array serializer per property (example: health array serializer, movement speed array serializer, etc)
  • Have a single array serializer that holds all properties in an item
#

Since this properties won't change at the same time, first option seems the best unless struct property replication is also partial

haughty ingot
#

It sounds like you basically just want a network manger to offload the replication of a group of actors to a single actor. You can just use a buffer and use a memory writer to serialize the properties on your actor into the buffer, and track that and the actor in your fast array. There’s a blog post about it out there somewhere. You could internally handle what’s written and tracked in the actor since it can be relatively anonymous since it’s just byte soup. This system is really only beneficial when it’s a large subset of actors that are only replicated for the purpose of these few properties though, if you still need to replicate these actors for the purpose of RPCs, you’d still have to replicate them. So you may as well just keep them and use push based replication. Profile your NetBroadcastTickTime and see if you would actually benefit a noticeable amount from something like this though, otherwise you could just be wasting your time.

prisma snow
haughty ingot
#

Profiling is always the answer
Get good with the profiler and it’ll help answer most of your woes

tawny wasp
#

hey all, Im an animator new to networking in unreal engine. currently iI am developing a game with an active ragdoll system that would work over a network. would anybody know where to start with learning best practices for physics control components over network?

cedar tangle
#

Not sure if anyone can point me in the correct direction here.
I jumped right into network code, creating come C++ files in visual studio and the IDE don't seem to like it to much.
Should I create them in the build project/editor first?

Just noticed something, may have worked this one out.

Solved, wrong name in the class _API under the .h.

queen escarp
#

hmm is there a way to rotate the character without using the camera rotation yaw (if its activated)?

zealous wigeon
#

garbage

jade scroll
#

for some mystery when i comestimes start the game one of the client just run anywhere and fall from the map

#

its only sometimes... and i dont getting erros -.-

cloud lake
jade scroll
#

sometimes all work correctly sometimes i get error

#

its not the spawn point

nova wasp
#

just my guess though as if you windows button out of unreal it will ignore the key up event

modern drift
#

Hey guys, can someone help me?

My client is crashing and pointing to this line:

#
Epic Developer Community Forums

I have a multiplayer app on Oculus and a Windows Client that connects on a remote server. They are all fine but if there are more than 1 player connected, someone will crash on server travel! The Windows Client only displayes: “Fatal Error”. If I connect using the Editor the error is: Assertion failed: InWorld != 0 [File:C:\UE\5.3.2\UnrealEng...

rustic sable
#

beginplay in a player character should always fire on server and client right?

#

if I put a print I only get it on the client

#

not sure if it's a time issue or if I goofed something but it's not firing on the server now

fossil spoke
#

@rustic sable BeginPlay should be called for all contexts.

#

So yes, there is something wrong.

#

Make sure you didnt forget a call to Super.

tiny mauve
#

having an issue where my game, in dedicated server mode, is only spinning up 1 controller, even though i have 2 players seelected and 2 player starts

#

any tips? Do i need to manually set everything up in my gamemode

meager heart
#

I have a question: I'm working with the gameplay ability system and am dealing with spawning a fireball that explodes on hit - should this only run on the server, or should there be parts that run on the client?

I'm trying to understand which parts of this system should be replicated and which should be left to the client

  • My initial results were causing a client to spawn 2 fireballs, one locally and the other on a server
  • Converting my fireball ability to only fire on the server solved that issue, but that leads me to believe that I should always just defer to running these abilities on the server to prevent double execution, and that feels wrong

I feel like I'm missing something about how to replicate these gameplay mechanics, specifically projectiles / combat, and what I choose to run on the server/client

kindred widget
twin juniper
#

I currently have this line of code:

NiagaraComponent->SetAsset(SomeAsset); However, this only seems to set the asset on the machine where it was called, and it doesn't automatically replicate to other machines. It looks like Niagara components don't handle replication well by default.

So, I'm thinking I might need to manually handle the replication by creating a RepNotify variable. Then, I could set the asset through that variable on the server, which would call the function to all other machines and SetAsset() on each machine with the replicated asset ptr. Does that sound correct?

meager heart
#

It kinda led me to the same question - if I had a hitscan weapon would I also defer to just run it on the server so it doesn't deal damage twice? And that at point it feels like everything should be run on the server by default

kindred widget
#

Initially I recommend treating it like a grenade. Server spawns it as a replicated actor. It replicates, it has attached particles and stuff.

On client collision it should simply set itself invisible and do nothing.

On server collision it should explode, meaning playing a Cue for the location that will replicate to all for the burst and apply damage etc. And also set itself invisible and destroy itself.

#

Hit scans are a tiny bit different in that they are a bit more complicated with the predictions and anti cheat. But still sort of the same idea. You want the local player to look nice and feel correct. This means that they need to do some local stuff initially and tell server what they think happened. Cause you can't really rely on the server's version of the player entirely to pick the client's targets. It's just not accurate enough and it will feel like garbage to play. But the general idea is the same. Owning client in this case does some locally predicted effects and tell server what it thought it hit. Server get data, validates it as best it can, plays cues for all other clients. But server is still the only one that applies damage. Any hit indicators or damage numbers should always come from that authoritive damage application, never from a client prediction. Only ever do like muzzle flashes or sounds from a client prediction.

#

Of course this is rough. Bullet work can get incredibly complex. Hitscan or no.

meager heart
#

Yeah for sure, thank you for the detailed response! That helps me get an idea of it I think and seems to align with my understanding of the roles between the two. This is my first time dealing with replication so I'm still figuring it out

Just to clarify, when you mention 'prediction', you're essentially just saying the client making decisions based on what it thinks the world looks like at that point in time, right? (So client prediction for a hitscan weapon would just be it announcing what actor it thinks that it hits after running a local line trace)

kindred widget
#

Yes. But like I said, don't ever do this for anything but generic visuals. If you predict a client headshot someone, give them the hit marker and server denies it, someone's gonna throw a controller out the window. Damage application indicators should 100% always be authoritive in my experience. Basic sounds/muzzleflash are fine for client prediction usually just to give nice immediate feedback that they've clicked.

meager heart
#

Lol great example, yeah that makes perfect sense!

And just as example so I understand what the implementation of something like gunfire->muzzle flash->hit / hitmarker would look like, am I correct in assuming that in the gameplay ability blueprint I would basically be branching on "Has Authority", and if False then playing the gameplay cue / muzzle flash logic, but if True then I'm running the hitscan check?

#

Also just because it seems like you're experienced with GAS, I also just had a quick secondary question that I didn't get an answer to in the GAS channel - if you're not sure or don't want to answer it's all good:

  • Is it better practice to apply damage gameplay effects from the fireball actor when it collides, or is it something that should be sent back to the gameplay ability via an event, and the ability handles adding the effects? I'm thinking the latter but that also causes issues of the gameplay affect potentially being active really long/indefinite waiting for the fireball to hit
chilly haven
#

Question, for those of you using Steam, do you use OSS, or steamworks APIs directly?
I've been using OSS for leaderboards, but it is not working as expected, so am considering trying SteamWorks.
Specifically, the values I am getting from ReadLeaderboardsAroundRank does not match the (correct) value actually stored in the LB.

tiny mauve
#

@short arrow ok after more debugging for some reason the editor is only showing 1 controller, but the second controller IS there, but only the first person to click move can move the other cant,
thats my movement code the function simply calls simple move to with the location

#

sorry im new to multiplayer and idk why this is derping

#

also could be my possession code is bad

tiny mauve
#

looks like my controllers are all trying to attach to the same pawn for some reason

silent valley
chrome bay
# prisma snow I have a question about FFastArraySerializer: I know that it does delta replicat...

You can turn per-item delta serialization on or off at the fast array level. By default, it's on, so items will not replicate atomically, they will replicate like they are TArray/regular properties. It can actually be more expensive this way if you only have a couple of properties as each needs to be identified with a 16-bit header.

ofc if the item implements NetSerialize, it will be atomic/do whatever that func does.

subtle kernel
#

guys, it's not okay when shipment server build won't output anything in console when run as:
... TestMap?listen -port=20001 -log

When I do development package all is good

verbal ice
#

You can change that in the server's Target.cs if needed

subtle kernel
#

yeah, okay

verbal ice
#

bUseLoggingInShipping iirc

subtle kernel
#
LogActor: Warning: BP_Operator_C /Game/TopDown/Maps/UEDPIE_1_TestMap.TestMap:PersistentLevel.BP_Operator_C_0 has natively added scene component(s), but none of them were set as the actor's RootComponent - picking one arbitrarily
LogNetPackageMap: Warning: GetObjectFromNetGUID: Network checksum mismatch. FullNetGUIDPath: [35]/Game/TopDown/Blueprints/Characters/UnicornPony/BP_Unicorn.[33]Default__BP_Unicorn_C, 1511874582, 2722841332
LogNetPackageMap: Warning: InternalLoadObject: Unable to resolve object from path. Path: Default__BP_Unicorn_C, Outer: /Game/TopDown/Blueprints/Characters/UnicornPony/BP_Unicorn, NetGUID: 33
LogNetPackageMap: Warning: InternalLoadObject: Unable to resolve object. FullNetGUIDPath: [35]/Game/TopDown/Blueprints/Characters/UnicornPony/BP_Unicorn.[33]Default__BP_Unicorn_C
LogNetPackageMap: Error: UPackageMapClient::SerializeNewActor. Unresolved Archetype GUID. Path: Default__BP_Unicorn_C, NetGUID: 33.
LogNetPackageMap: Error: UPackageMapClient::SerializeNewActor Unable to read Archetype for NetGUID 12 / 33

and what can cause this? I packaged server as debuggame and running PIE in standalone mode(editor is running in debuggame too), trying to connect to this dedicated server

verbal ice
#

The packaged game and editor's assets aren't matching

#

I would package the game as a client and connect through that

subtle kernel
#

I wonder how can it be

#

let me try it out

verbal ice
#

Probably some editor only properties or other platform/target related code that's changing the final checksum

subtle kernel
#

ah, okay. thank you. damn packaging client is hell xD

verbal ice
#

I tend to avoid connecting to a built server through the editor. It can work, it's a little funny, but you may run into issues you wouldn't get through normal means

rich dune
#

Hi,

running into a curious issue. Variable is set to replicate, Actor is set to Replicate and Function to Multicast. Yet the Variable is only set on the Client. Why?

subtle kernel
lament flax
rich dune
rich dune
#

Pawn

lament flax
#

show code

#

and show value on server

rich dune
# lament flax show code

Well can't get more simple. Value on Client on Press: 1, Server: 0

the setup is correct but it won't work for some reason

lament flax
#

what happens if you user a sever RPC

#

does the breakpoint get called ?

cyan marten
#

Guys what’s the best way to play one animation only on the client character and a different one only on the server character?
Both replicated

twin juniper
#

I currently have this line of code:

NiagaraComponent->SetAsset(SomeAsset); However, this only seems to set the asset on the machine where it was called, and it doesn't automatically replicate to other machines. It looks like Niagara components don't handle replication well by default.

So, I'm thinking I might need to manually handle the replication by creating a RepNotify variable. Then, I could set the asset through that variable on the server, which would call the function to all other machines and SetAsset() on each machine with the replicated asset ptr. Does that sound correct?

crisp shard
#

If I simply want to have a reticle spawn on an actor that I’m locked onto , would I need to have a widget component on that actor already? I’d like to find a separate approach but this is the method I thought of first, but again would like to do something alternative like have the reticle be spawned vs having it on the actor at all times

zealous wigeon
#

@latent heart I don't want to bother you, but what do you think if I still use a listen server architecture and stop?

#

how strong EAC is against listen server cheaters?

#

I have very strong identity verification for players that uses the competitive version of the game (money is involved)

#

and a report tool for both users

#

and since I would still use a relay server I would save game session data for each match

lost inlet
#

If it's real money and competitive then you wouldn't be using listen servers

#

No clientside anti-cheat is going to 100% eliminate cheating

zealous wigeon
#

the thing is that I should prevent a lot of cheating in primis with iban verification + id

#

and the report tool is a blocking tool

#

but I don't know

#

this is so wrong compared to a dedicated server

#

or a desperate alternative may be to spawn a player in listen-server architecture for each 1v1

#

the two players are clients

#

and the listen-server is spawned on a hosting service

#

this sounds heavy to be honest but it's something

crisp shard
#

general question kinda but curious on what actors or components you can have not ticking ? would these be anything that doesnt use tick ?

#

im assuming no but im thinking to make some components on my characters dont need tick enabled

lost inlet
zealous wigeon
#

but anyways that's obviously a shitty idea

lost inlet
#

a headless listen server, now that's an idea, you could call it "the dedicated server"

zealous wigeon
#

the thing is that I can't get a source build

#

I don't have the right hardware

#

so I'm searching for some workaround

#

maybe a mini hand crafted replication system

#

a good question would be why there is all this weird rudeness in this chat just because I'm asking suggestions for some smart workaround since I can't get better hardware for a source build because I'm broke as hell

#

sounds like it's funny to you that someone is broke but still want to make the impossible to get stuff done

lost inlet
#

what is preventative on getting a source build together?

#

you don't have to make an installed build or a foreign build where you compile the entire thing

#

and if you were willing to spend on server infrastructure that is less optimised, you could even put a CI server together

zealous wigeon
lost inlet
#

the thing is that I can't get a source build

#

so what about your hardware prevents that

zealous wigeon
#

mainly storage

#

and build times will be insane

#

my disk is 250gb

#

and the full build may take 300gb, but shrinking some stuff may bring it to 160gb

#

I can't have 3/4 of my disk for ue + my proj

lost inlet
#

well that's the thing, if it's a native build then you aren't building the entire engine

zealous wigeon
#

mhh, so what are you suggesting?

shrewd ginkgo
#

In the stabbing event everything works properly and the simulate physics in onrep healt works but the UI show death menu in the same place does not work.

#

UI show death menu also works if I use this dmg actor

#

and players other than the server can't run the kill event.

versed tiger
#

I'm making a multiplayer game, I made an actor as a ActorManager in level, the ActorManager on the server call SpawnActor<SomeNewActor>, SomeNewActor has bReplicates = true, but it only spawn on server, nothing in clients. why?

rustic sable
#

How can I persist some index data from the client until the level switched and we join a server? Seems something like storing it with authority wont work since we are not connected to the host yet.

kindred widget
rustic sable
#

it's literally just a character index for which character to select once we are connected to the game map