#multiplayer
1 messages · Page 215 of 1
I only print hello world in fortnite yesterday. Not fammiliar but maybe your use case just so happend to be the same as fortnite?
most systems are cattered to project specific
Fortnite is also still adding tons of basic features that native UE can already create.
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"
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
Me neither, that's why I stopped
Not sure waht you mean with "any gamemode".
Like, a spawner that can spawn anything isn't that difficult
not sure how this video have anything to do with your coin problem
I'm trying to recreate all these basic features for people to just put values in the properties of that device / component instead of having to code all of that stuff.
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
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
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.
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 ?
Barely a difference tbh
Like if you were Epic Games and would create that Object Spawner for Fortnite Creative, what way would you go for ?
I would probably save the Player on the Spawner
Wouldn't the array increase the usage of bandwith the more elements there are in it ?
Yeah but that goes both ways
Like when an array is replicated, does it replicate only the changed / new value or does it replicate everything including the non changed elements ?
what do you mean ? 🤔
only the delta afaik, could be wrong tho
Saving 50 Spawners on 50 Player, or saving 50 Players on 50 Spawners is the same, or not?
I have no clue 🤷♂️
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.
the mapping ?
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
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
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.
hey
i wanna show the icon only ony the right team
but it didnt work -.-
here is the whole project
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?
The server possesses the pawn, that replicates to the owning client which also then possesses the pawn
You don't have to do anything on the client
can someone help me shoe the icon only on the right team?
only visible for the team ...
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.
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.
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.
it's harder than clicking 1 button, also do you use BP and/or C++?
i use BP
only BP?
Start with making a door that can open and close with no problems with late joiners
RPC works for late joiners, right?
wrong
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
To be a bit more clear about it. Don't mix sessions and online subsystems with multiplayer netcode specifically. Your gameplay net code is the same regardless of whether you release on Steam, Epic, Playstation, etc.
And there are a lot of tutorials that cover the two basic tools you have for networking which are RPCs(Remove Procedure Calls), and Replication.
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.
@twin juniperread compendium in pinned messages
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
a late joiner will see replicated values, they will know nothing about any rpcs that happened before they saw them
ofc but things that are replicated each frame will work as expected
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 ?
quick question - when an actor survives seamless travel, do components in it re run the initialize / on register component as part of things?
can someone tell me how i can set the icon only visible for my team?
use a variable in ur PS to store teamIndex, then in UI, bind the visibility of the icon to that index in the UI? Character works fine but then u need to re-initialize ur teamIndex everytime on PlayerSpawn
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?
Yea u are seeing things correctly. But rather using GameInstance to store these kinds of variables, use a saveGameObject instead. Then on playerspawn, do RPC on all those u want to replicate
Cool, thanks!
i have this now on player icon but it doesnt work multiplayer
guys why is that so hard to make jsut something visible for team... i cant get this work -.-
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
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.
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?
Dnt use that node, use get PlayerState, (will be a normal replicated blue variable), browse to the end
yes
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 ^^
do this logic after ur spawnPlayer
u r call a function in GameMode here to spawn the player, so GameMode is spawning the player, and not PC
this is my IncreaseKillCount function in PlayerState, see if it helps u
can you send more pls?
sent in ur DM
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 ?
You cannot guarantee a property will be replicated by the time an RPC is received.
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
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.
I see..
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.
Generally it's not recommended to do that
It's already thr server, why do you want to call on rep on server
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.
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.
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.
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 ?
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.
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)
you could make your characters all derive from a master character pawn, then make child pawns that inherit from them, one for the killer classes and one for the survivor classes, and itd be as simple as checking for authority when spawning pawns , if theyre local controlled and authoritive then its the host, if its local controlled and remote , then its a client.
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..
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.
thas very interesting , I always figured that reading HP values on the playerstate was the way to go. but if the playerstate is just naturally slow that certainly changes things. thank you so much for the insight , do you know if the update rate is documented anywhere? i can probably find it now that i know what to look for , but figured id ask anyway
If I recall, it is called Net Update Rate - in the details panel of any actor
I found it , thanks!, such a simple thing caused me so much troubleshooting and head ache,
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.
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 ?
1M players in queue is ambitious. From technical standpoint, Redis/Postgres/whatever DB would work but it's only a part of the infrastructure. You also need ways for players to leave/enter the queue, some authentication and authorisation, OTP distribution for joining etc.
The beacons is handling onConnected and onDisconnected stuff.
Also it should be scalable but the thing i've never tested Beacons before how many players can the server handle since its just channel for communication not a full game
then I can build a backend to handle the queue and load balancer 🤔
How do you imagine the user to connect from the queue? Lets say player join the queue, after 5 minutes there is a 99/100 players in the server and the player is next. What should happen next in your system? (Just think you are giving beacons more credit than they deserve)
I've built a matchmaker plugin built on top of Edgegap matchmaker.
So each 40 players can be splitted from queue and matchmake automatically and when the server deployed these 40 will join and decrease from queue
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
About what happening in Next the new Beacon server should deploy
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
I also was going for HTTP or Websocket .
Since I think i can use the EOS tokens for auth
And one server can handle more than 5M players xD
Thanks i was waiting these suggestion 😂
Do it, beacons would crash and burn. (my opinion)
Thanks for advise it is easy for me really xD
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.
Probably i will go for it or build a NodeJS server because never worked with Lambda xD
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 :/
Pretty sure I saw a commit on uemain (not sure if that's part of 5.5 already) that fixed that the Montage Play Move didn't finish itself when the Montage is over.
And it can also totally be that the setup is fully lacking the interrupt part.
Mover is veeeeeery experimental
ah really, i'll check that out
i hate CMC and even working with mover for couples months now its better and i really like how modular it is
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.
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
Quick question how complicated would it be to implement local co-op aka couch co-op?
It's a lot easier than remote multiplayer, for sure.
Which is why it's something I'm considering putting my game, on-line multiplayer is gonna way too much for me to handle for sure with my very limited knowledge and experience
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
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 ?
If you want to do couch coop you gonna have to make sure that you are not using things like GetPlayerController0 and that you always work relative to the object/class you are in if you want to get any kind of controller or pawn
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
Should be no issue having it in the scene
yea makes sense , really will be just a camera change more or less , like when you rest in elden ring how the camera changes when you rest at a grace
Thanks, doing that makes sense. Any other things I should be aware of? I'm noting this all down for future reference as I know otherwise I'll forget some of it and end up having headaches in the future
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.
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.
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
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?
What icon, show what you got
is it an icon on a minimap?
yes
i create widget add to viewport thats all
but how can i show this icon only for my team
When creating the widget for each player, check if their team matches the local players team
I'm assuming team is a tag or enum or something on PlayerState?
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
just paste it here
assuming team variable is replicated and being set correctly, you want to show the icon when the icon character's team matches the local characters team
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.?
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. 🤔
Hi guys, in this video we look at how to create a team system in Unreal Engine 5 using actor tags. The system will be fairly simple to implement. You would be able to extend it to suit a game of any scale.
======== Donations ========
https://www.patreon.com/GamiumGamers
======== For Questions ========
https://discord.gg/FBz3amt
======== Per...
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
https://forums.unrealengine.com/t/how-to-replicate-an-event-to-a-specific-client-only/442308/2 i only found this on internet
Client that you only want to replicate within an event can pass PlayerState.PlayerID into it via Server call. Then within the Server event, check if the passed PlayerID matches the current PlayerController’s PlayerID. If so, then perform you want to replicate, otherwise, do nothing. Below is my example: Create a GetState (returns PlayerState)...
but its not working too
You probably want a replicated var and not a event
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?
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.
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.
That's not at all what I was talking about
where's the part where you get the LOCAL CHARACTER'S team?
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
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
Kudos for being able to decipher their request 😐
why my ability active on server but cant activate on client?other ability is ok one of theme cant active
guys pls can someotn tell me how can i show icon only for team or specific cleint?
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
Please stop spamming for an answer. You were already replied to by Authaer.
You can come back with individual smaller issues.
You need to share more info for this. No one here knows how your abilities are set up, and what the difference is between the ones that function and the ones that don't.
this is
other ability with same setting is working for both server and client but this just work for server cant active in client
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.
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
Try it with a single Montage first and see if that does anything
oh thanks
If it does fix something, then yeah, you need to use a RandomStream with a communicated Seed.
if use this ability for enemy(AI) its ok use random...?
this problem is cant activate on client
server can active and use this but client can't even active ability
AI is Server only, so there it should be okay
Yeah I already told you to try it with just a single montage, without the random
To see if that works
no
Does the Client ever reach the ActivateAbility node?
Did you try printing BEFORE the PlayMontageAndWait node?
no cant trigger active node client
You should also go ahead and provide the native tags for failing to activate teh ability
So you can print and debug this better
yes and use breakpoint server can trigger active node but client cant
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.
oh ok thanks bro
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
Thank you very much bro for the useful information
its not overlapping actor its for show only for team
the point is to run it on target machine
if you can't figure that out just go through the pinned materials 12 times
waht mean target machine
i craet the widget on character
icon widget
i only have 1 character blueprint for all players. and all teams
@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
i know all basics 😄
@dark parcel They were already given an answer to this.
they dont its not working -.-
Yeah I didn't scroll up 😔 , just saw Autheur message.
You aren't providing enough info as to what is not working.
"It's not working" for a bigger system won't get you an answer.
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
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.
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.
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
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.
try it you will not get it work trust me -.-
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.
Well you are doing it somehow wrong
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
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
-.-
its to nodes make clean top down project
and show me it will not work trust me -.-
just two nodes ^^
I can't understand what you are saying at all here
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.
And in there you can totally do your Team check
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
Yeah that needs to be used in the OnRep or rather the function that first checks if yo uare on the same team
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
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?
can you show me the code?
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?
its just two nodes -.-
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
a lot more? o.O
you need to learn the ideas behind this more than just following along without know what is happening, that way you can make anything you want
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.
Absolutely not. I will not spoonfeed you the solution.
You will just come back 10 minutes later with the next problem, cause you learned nothing from it.
ok
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.
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
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.
did you add the team check code ?
Hey guys 👋
I am thinking about getting int16 plugin for unreal.
Is it good idea to use int16 in network based game or not?
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
if you need to shave off16 bits in an int you are probably better off just doing stuff in c++ anyways?
yeah
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)
all BP only guys
that are to lazy to search outside the marketplace
Using blueprints and worrying about byte sizes of types seems quite counterintuitive to me imo
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
yea i mean if you're concerned about those things you dont usually do BP's
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
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
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.
It's probably not overkill. I went as far as writing a full on SerializationHelper struct, that can take in any kind of value and a base value, perform standard serialization, ensuring booleans are 1 bit, creating custom delta values if needed, handling the delta serialization in case the value didn't change since last time and so on.
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.
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
network insights can show serialization a bit
no pun intended
it's getting better in later versions too
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
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.
you can just quick cycle scope...
as for custom bespoke stats of course you need to make custom categories/etc
The Quick Cycle Scopes would only sum up the Bits
If you want to know what each individual Property takes, and the name of it, you gotta plug a lot more
ah yeah, that's where the new journaling stuff UE_ADD_READ_JOURNAL_ENTRY will hopefully help
Tf is that? Haha
new helper for showing what serialization is doing but mostly internal afaik
why i cant euql or not euql to make with string?
it not works with strings what can i do?
You can == a string.
Does == work?
New math and operator nodes are still finicky in some cases.
There is a function though. Sec.
Try the Exact Equal
Yeah, these three in the bottom. For some reason the normal == node doesn't just pick one of these.
im still woring on icon visible for teams xDDDDDDD
You'll get it. It's a good early exercise too.
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 😄
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.
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
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.
what is lyras inicator compnent? o.O
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.
wher ecan i can get it? waht is that xD
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.
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
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?
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?
Not really. Not if you didn't make bad netcode assumptions. It largely works identical as far as most code goes. Dedicated simply has no renderer and by default does not play animations and such I believe.
i need c++ for dedicated?
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
is it better make listen server game on steam?
yes
also you cant buyild the server without a source build
you will not have to pay external servers
using LS
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
how much it cost wtf?
Depends on your player base. Could be a few hundred….could be multiple thousands
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.
listen server game on steam will work wihtout c++?
why?
because everything isnt exposed
you don’t need to write C++ if you really don’t want to, there are plenty of plugins that expose the needed online subsystems to use in Blueprint. You don’t need to directly write C++ to make a multiplayer listen-server game using the engine.
nice
so lsiten server works on steam with 3vs3 game?
or will it not work if server leave?
If the server leaves the clients would disconnect, because there’s now no server.
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
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
so waht can i do?
You can quit worrying and just make a game. 
you sure about that?
you cant use Steam api without c++
some plugins do that for you though
so either you code it yourself or you buy a 100-200€ Steam plugin that does it for you
they use c++
plugins in unreal*
you can do your stuff in bp, which is what he was looking for
Hi I need to ask few questions (please tag in case):
- 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?
- 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)
- is the creation of dedicated server done through C++ or are blueprints enough?
- UE doesnt have much (or anything) to prevent cheating, its our job to implement such protection
- you need a server build form source build for packaging
- you can do it in BP, but there is a lot of limitations
only for packaging?
well yeah, you can test some stuff with only the editor
but i dont know all the specificities
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.
And the C++ code can be tested without fully building the server?
I don't have a source build
and I can't relly get one right now
As far as I'm aware. I haven't done much editor testing with that outside of basic gameplay tests.
- UE doesnt have much (or anything) to prevent cheating, its our job to implement such protection
Well at this point, also considering that I can't get a source build right now, I'm considering to build a minimal server separated from Unreal Engine, and thus I would explicitely send local player info from the game to the server and then from the server to the enemy's game and viceversa
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
What Fishy means is that there's no anticheat built into the engine. This is because this heavily depends on your project.
I was mainly talking about data validation there
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.
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
doesnt look like you fix the problem
wdym with manual replication
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
for RPCs you use a validator function
maybe you want to try making it a listen server ?
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"
Why do you need a server separate from UE to send player data to each other?
I considered that, and the peer-to-peer mesh as well, unfortunately those are not structures I can adopt
There is no such thing as P2P in Unreal
(by default)
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.
- Because I want to prevent cheating as much as possible
- Because I can't get a source build, therefore I can't build a dedicated server using UE
#1 is in no way related to #2.
I don't know much about this, but I've read this thing on a EAC related documentation:
https://dev.epicgames.com/docs/game-services/anti-cheat/anti-cheat-interfaces#peer-to-peer-mesh-peer-to-peer-mode
Without further context, that is.
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.
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)
This is interesting
thanks
in fact asking someone else to build shouldn't be a problem if I pay
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.
but for testing, it must be something I can do when I want
No in fact
I don't need
as I said around 6 times, the problem is that I can't get a source build
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?
which means I should make the game with a listen-server structure
which is not good for cheating prevention as from as I know
I don't understand what you mean by this, the server would be hosted on aws eventually
By you only?
no player is running the dedicated server obviously
it would not be called like that
Then they can still screw with it.
You can still cheat, even with dedicated servers.
If you yourself are in control of the server.
Dedicated server are hosted on services like AWS, Hostinger, bluehosting and bla bla
That's sure, you can't block cheats 100% but limiting them is a good starting point, don't you think so?
again, no player is in control of the server
it's a dedicated server
the players are the clients
Guys, there is a severe disconnect here lol
Gives up
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
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.
don't pay dedicated server just for trying to prevent cheating
It doesn't matter if the player is only a client if the human playing the game can cheat outside of it.
Okay thanks, I'll build a listen server than and for packaging I will ask a friend with a source build, to package it as dedicated server
this was useful
Listen servers make it easier to cheat for the player hosting the game, sure.
But not for anybody else.
there are other reasons also, but mainly is that I need to be very cautious with cheaters, there is money involved in some matches
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
If there's "money involved" then you need to get a source build.
Yes that's pretty obvious, the point is that the developer of the game (me) is hosting this dedicated server on a hosting service such as aws and the players are not in control of that server because it's mine, the story is not really detailed, I own the server, the players don't
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?
I'll make it very easy to you, I'm making a game where players can play against each other after, to find themselves they click a "Find battle" button, which asks the server to do some matchmaking and when an opponent is found, the match starts
the developer is in control of the server, who should be otherwise?
I'm pretty sure yes , that's called a game
good
With a listen server, the developer is not in control of the server...
So if you want complete control, yoju need a source build.
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)
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.
In fact, since I can't get a source build as stated around 7 times in this discussion, I came here to ask people that have experience with Unreal Engine dedicated server development, which solutions I had for my problem and some other small question
ah I see, my case is more like the 98% of multiplayer games
What sort of game is it?
So something like UT?
never heard of it
take fortnite build battles between only 2 players as an example
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.?
you don't know what a relay server is right?
everything that needs to be replicated basically
Yes, but that doesn't mean you're sending everything through the same server.
Well, then you have no options.
1 server only?
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
That doesn't really solve anything, though.
yes it does, steam and EOS provide relay services
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.
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
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.
it's incredible how malformed this sentence is on a semantic level
makes no sense
How is it wrong though?
it makes sense
I guess I maybe missed a comma.
"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
"Listen" and "dedicated" are the 2 forms of server UE has. I noted the drawbacks of each type...
Then another guy said I can instead use Listen-server structure because it is the same thing ON A DEVELOPMENT LEVEL, and then I can package the project with a dedicated server structure (I will be asking a friend for it)
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
You can do that, but there's no guarantee that it will work correctly. You should really test the dedicated server by itself.
everything
you will be raging at your friend then
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
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.
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
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.
it will be tested because someone who actually tried to help me instead of exploiting my plans said that structuring the game with a listen-server and to switch to dedicated server mode when packaging makes no difference
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)
Can you please make me an example, because the other guy said the opposite of you and now who should I trust?
.
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.
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?
^
Don't worry, relay servers will fix it!
That sound like very unusual instead, any real world example?
never said that
That was a joke.
on something that was never said
Let's take the smoke in CS for example. You can shoot through it to create holes. You may rely on particle emitters somehow to do something here which may or may not do what you want on dedicated servers because they aren't rendered.
Or skeletal meshes may not animate.
The tick rate may be substantially different.
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
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.
so this might not be a problem for me anyways, but never say never I mean...
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.
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
I have experience in dedicated servers out of engines, games made from scratch basically, but how unreal engine manages these things under the hood I have no idea
And that's a massive issue... because unreal is massive. Millions of lines of code. If not tens of millions.
so?
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.
No because as I said I don't know how things are managed by ue, at an abstract level you can effectively say that a listen server and a dedicated one are very similar if made up in the same system
that said ue may do everything I'm currently unaware of
wtf the string ==(equal) not working with strings -.-
FString::operator== is, by default, not case sensitive.
And this was entirely my point.
that's why I came here asking
Nobody is going to be able to explain every single possible issue.
You need to test these things yourself.
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
Everything I have said has made sense.
no at the beginning, offense a part, you were just blathering random unrelated stuff
but anyways
at this point
you are hallucinating things
@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?
No
can i ask why not?
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?
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?
if you get local relevant info how can you know it wasnt altered ?
I think you should save up to buy a machine capable of building a dedicated server.
I validate them on my thirdy party server
it's easier to switch to godot in this moment
Then do so.
yes I will, but I'm still interested why you think this
what I don't see that you do
sounds like you are doing to much extra work just to remake UE replication system
I'm just creating a very small and limited version of replication system
What even is this conversation 
about understanding
understanding what exactly?
idk your level but i think you are underestimating the work you need to do for so little
I did stuff like this in the past
what scares you?
make me an example
maybe I don't see it because UE is involved here
wasting time
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 ?
im not good enough in UE internals
- bad hardware (may take days to build)
- few storage
- 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
doesnt work -.-
show code
that would eventually be implemented ontop of ue, not on the internals level
and wdym with "doesnt work"
honestly, do it if you want
if you cant run a source build, you have no choice, use a listen server or do your custom things
it does work, you probably gave wrong inputs
debug the strings
FString, std::string or c strings?
can you show the two inputs it is getting (debug logged or just debugger breakpointed?)
Yes at this point I will just try different paths, the last one is to drop ue this time
Also why are you asking this in #multiplayer about strings?
jsut A and B string
BP?
i have error ^^
we can't help without more info of what is actually happening on your end
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
Yeah. The download for the dedi server isn't that big.
It becomes big when you compile.
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
don't feel too discouraged... you probably learned something that will make things easier later
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?
"enemies movement starts to get laggy" is hard to guess at... are they lowering network update rate or animaton update rate or what?
It sounds like they are becoming less relevant to the server's player and thus updating less frequently.
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
it helps to put it on the ssd compared to the hdd im pretty sure
Look into developer settings. Pretty useful.
There's a tutorial by tom looman that I hear is good?
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
Desktop cpu?
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.
Is there any way to get a server build of the engine from source (with some compilation flag) but still being under 60 gb?
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.
Any advice for how change the net cull distance to be from the pawn's location instead from the player's camera location?
you could try overriding AActor::IsNetRelevantFor in your pawn's class
Thanks, any guide to do it?
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.
any of you recommend unreal replication and rpc system for a MMO?
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.
If you have to ask, you're not making an MMO
thats not an answer bro
i got 15 years of experience as an engineer so thats a lame answer
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.
I wouldn't recommend any off the shelf engine for an MMO
perfect, thank you.
But to be more specific, no, UE is not designed for MMOs
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.
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 -.-
wat
the replication of what?
only show for speicif client
it works with widget component
but not with create widget + add to viewport graph
Widgets don't replicate at all
you want only one specific client to create the widget and add to their viewport?
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
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?
@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?
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
Can't one just add another uint8 on project level?
Also with the containers one can by now use, there should be no problem in adding as many flags as you need.
You can create a custom saved move class so you can send whatever data you want client to server
@latent heart I found this, what do you think?
https://www.reddit.com/r/unrealengine/comments/re4wlf/devdiary_end_of_day_6_of_making_a_multiplayer/
I think you're missing out by just not using the tools UE gives you.
OP said his system isnt good for lag compensation and handling prediction
he is also giving authority from client
which is something you dont want with a fighting game
What could be a better way to replicate array variables....in this case im adding a player to it
I can't 😂
I made the impossible to strip out everything from the engine except server stuff
I just don't have space
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.
He said he didn't make it for that
which is different
I'm exploring the possibility it may be something I can do
not mine
the game is simple enough to have not a lot of assets
If you say so, mr experienced dev.
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
what space do you aim for your project ?
20/30 gb is fine (I will never reach it I'm pretty sure)
you will fast
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
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
By using a lot of space that you apparently don't have 😛
Just use Unity. Problem solved.
could the built in multiplayer handle ~200 units in an RTS game?
at what point does it start to slow down?
That really depends on so many factors
tick rate wouldn't need to be more than 30
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
alright
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?
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
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.
I see, thanks for the pointer. I'll look for the article and maybe just use and test normal replication before getting into fast arrays 
Profiling is always the answer
Get good with the profiler and it’ll help answer most of your woes
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?
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.
hmm is there a way to rotate the character without using the camera rotation yaw (if its activated)?
garbage
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 -.-
define "run anywhere"
fall from map could be that the client is not identifying the correct spawn point.
might be from pressing the forward button and switching viewports, they will keep the last input down
just my guess though as if you windows button out of unreal it will ignore the key up event
Hey guys, can someone help me?
My client is crashing and pointing to this line:
posted on the forums as well
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...
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
@rustic sable BeginPlay should be called for all contexts.
So yes, there is something wrong.
Make sure you didnt forget a call to Super.
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
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
How fast paced is the fireball?
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?
Currently kinda slow, but that's open to change
Is that something I should consider in the decision?
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
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.
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)
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.
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
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.
@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
looks like my controllers are all trying to attach to the same pawn for some reason
Use the OSS wherever possible, but once you have that working it's straightforward to call the steamworks API directly if you need.
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.
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
Logs are disabled in shipping by default
You can change that in the server's Target.cs if needed
yeah, okay
bUseLoggingInShipping iirc
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
The packaged game and editor's assets aren't matching
I would package the game as a client and connect through that
Probably some editor only properties or other platform/target related code that's changing the final checksum
ah, okay. thank you. damn packaging client is hell xD
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
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?
it worked, thanks
- it its replicated why do you call it on multicast ?
- where do you call this multicast
Calling it Multicast because it did not even replicate on server.
Called from a key input
in what class
Pawn
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
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
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?
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
@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
Yes, this sounds sensible
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
I know
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
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
so you need to use servers with GPUs? well that seems incredibly wasteful when you can just do dedicated
the ideas was to run headless
but anyways that's obviously a shitty idea
a headless listen server, now that's an idea, you could call it "the dedicated server"
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
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
what do you mean?
the thing is that I can't get a source build
so what about your hardware prevents that
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
well that's the thing, if it's a native build then you aren't building the entire engine
mhh, so what are you suggesting?
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.
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?
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.
Beacons are one option if you need to request a large amount of initial data. Probably also better than trying to store it on the session even if it's a small amount of data.
it's literally just a character index for which character to select once we are connected to the game map