#multiplayer
1 messages ยท Page 297 of 1
in 4.12 I hear the other person for like a couple seconds after they spawn and that's about it
I'm on a dedicated server tho, so it could just be broken for that in 4.12
@thin stratus Yes. The character is replicated
johnny.... I already told you step by step how to do dis
stop asking
seriously
if you can't figure it out after I told you, just stop programming and go back to maya
@proud wren perhaps something is already possessing it, like a default UI controller
default AI controller
Pretty sure you have to call "spawn AI" for the AIController to take over. That, or place it in world.
there is that multi player jeep on the marketplace, that may help you see hwo they do it
I usually place in world, and it's been awhile since I spawned AI from code.
a character can have settings to be auto possessed by ai on place in world and spawn
its a setting on that character/pawn - just saying, i think ive had this happen to me before
Default on that would be off, though, yeah?
As in "placed in world" and not "placed in world or spawned".
i dont recall off hand - im just presenting a scenario for johhny, trying to possess an already possessed pawn does result in odd behavior
anyway, thats my 2c, good night everyone
Replication is funny... whenever I find myself thinking "YUSS, I have fully sussed out this replication business now", that's when it comes back and bites me hard.
Usually it's been the whole "server has a copy of each playercontroller, but client only has their own" thing that shafts me... but I think I'm getting the hang of that now
(oh sh*t, I just said the words)
I think I just need a big diagram on the wall behind the monitor, showing the server, client and the things they have... a reminder to think about what machine code is executing on before I reference a player by index or anything like that
Well, print the pages of my compendium and put them up your wall
@stiff wasp Yo, i would like to not read text like this here. If you don't want to help him any further, then just be quiet. It's not helpful to demotivate someone
@proud wren so it's "Client joins. Server spawns Character. Server uses the Controller of the joined Client to posses the Character"?
Where do you call your code?
And can you show me a screenshot of it?
Though i head to bed now, so just leave me a private message
What's the proper way to replicate the transform of a child mesh of an actor. For example I'm trying to replicate a HMD mesh parented to the pawn's camera. Do I need each client pawn to call a function on the server to set that transform value each frame and then broadcast that value to the other clients?
@thorn merlin I'm not concerned about the server's CPU hardware as long as I'm actually able to spread out the workload, since stronger CPUs tend to just add more cores instead of increase single thread performance. We do have a master server, the plan is to store character data in an SQL table, I'm told from a friend it'll help with everything if we go that route. So we're already capable of breaking things down into multiple server instances or maps, the only challenge is how can we make it a seamless transition for the player?
@knotty kelp are you able to use some kind of cutscene? ark has that animation on spawn where you look at your arm (which I think is to allow for replication to catch up), EVE online has this animation of star gate travel when you transition servers, if you are doing a big open work fps.. maybe look at what planetside 2 does, im sure they have the same issue
I've been trying to find out what Planetside 2 does actually, since it's actually rather similar
i know that isnt very helpful, sorry
I haven't been able to find any information on how that actually works on their end though
its been a while since ive played but i do remember there being some kind of transition zones
Planetside 2's servers are 10x larger than I'm targeting, so even if it's a mere shadow of what they have, it'll work
They break it up into multiple continents, but each continent is 2,000 players capped. Somehow, -somehow- they made it so you can get in a plane and fly, seamlessly, from one end of the continent to another, with no transition or loading.
It's some kind of black magic, and it's also a possible solution if I can find out how it's done.
maybe its just player trickery, looks like you arent in a loading zone but you are
best of luck, i hope to see your results some day
Thanks ๐ I'm sure I'll be able to work it out somehow
after my learning last night of a better way of getting all the player states it had me wonder - is there a more efficient way to get all of the player controlled pawns then getting all of the pawns that could possibly be controlled and then seeing if they have a player state attached to them?
if i try and go the other way around, locally only my player state has an owner reference to my controller, the remote states do not have a valid owner
my only other thought is to make actors with states self register with the player controller when they are created, then it can enumerate the list
@knotty kelp no magic here
continents are just small
about 10x10km
which fits into floating point
precision
clients do not load entire map at once
i guess there is just distance based streaming for content
only server need full representation of map, but server doesn't need graphics so it takes way less memory (;
If you want to do client hosted multiplayer sessions, you still need a server somewhere for matchmaking, right?
there might be steam functionality for matchmaking, not sure though
Oh, thats a good idea. I didn't even think about that. I haven't even decided if I want to do dedicated servers or client hosted yet so theres time to figure that out
Hopefully that shouldn't be a problem for years to come. I think CS and Dota will probably keep it running for a good while
not that, meant its uptime
Oh, lol.
๐
Do you have any experience with steamworks? Seems fairly straightforward
Unreal has Steam SDK partially ready to go. There's just a few initial setup things you need to do to activate it.
Then you need to bind to its callbacks and stuff
I'm actually giving a presentation on this at my local IGDA chapter next week
@eternal anchor It's not the map size I said was magic, but the player count. Getting 2,000 players onto the map without needing any noticable transitions to other servers even when flying over the entire map in a plane. The project I'm working on would only need 1/10th that playercount to work, so I may need to look into how their servers actually handle the load
I suspect it may have a lot to do with the Unreal server being locked to a single thread intentionally. Found an old answerhub post from 2014, apparently it was an active decision to do so, so people could more easily host multiple servers on a single machine. It's possible that changing that back to allowing multithreading would fix the 80-90 playercount cap that the current server is limited to.
there are two solutions I see
- most of things are calculated client side, and server just accept it sometimes checking if it is valid (very common solution)
or they are running some complex distributed architecture, where each player is microservice,
Option 1 wouldn't introduce space for a lot of cheating in the game?
never trust the client
in any regard
anything that is crucial to gameplay has to be checked by the server
unless.. it's a co-op game where cheaters wouldn't beat you
well, I guess some would want server authority then as well
but it's not as bad situation
also, option 1 would always introduce a lot of cheating if the game became popular
Yeah, with 200 or so players, I wouldn't quite trust the client with anything at that point. But, unless there's some magic option hidden away on the server that will make it run 4x faster, may need to consider it.
variables like position do not have to be replicated every netpack
it can be an interval check
if the difference is too big, correct
If it's just a matter of a faster CPU, I can throw hardware at the problem just fine, the only issue with that approach is that faster CPUs tend to just add on more cores, which the unreal dedicated server won't use
True, they wouldn't need to. Would that introduce any issues in regards to general fps gameplay?
one possible solution
would be to make game code multi threaded
but with Unreal it's monumental task unfortunetly
in anycase
i don't think replication per se
is the biggest issue
well apart from potential rubberbanding when packetloss is factored in
the big issues are things taken for granted in singleplayer like tracing
collision detection etc
or tick for updateing actors on server
if all of those things could be done async, it would scale much better to big number of players
right now you are locked by performance on single core in those cases
Is that just something we would need to do when working on the project itself, or is it something that would need to be done at an engine level as well?
And what sort of things could be done to assist with tracing and collision?
you need to do it at engine level
uobjects are not thread safe
and gamplay code in unreal is inherently single threded
ie. there is no build in way for UObjects to communicate between threads, you can't even spawn them on separate threads
but there are things which are done async, like animations,
How much do you think we can safely get away with threading? And I take it making these changes is no small task?
EVE online does some things to manage this - time dilation and people control to make sure systems can't get loaded up with people when the behind cluster can't handle it
2,500 in one system is a big deal, and even when they are - its rare they are on the same "grid" (network relevance)
Would it be possible to maybe assign certain parts of the map to have a lower update rate or priority than other parts? Maybe areas that I know wouldn't have any PvP conflict, that we could afford to have higher latency in? I doubt anyone will notice if a chat message takes a few miliseconds longer to send while standing around a city.
you can set a custom tick for blueprints, or lower the netpacket rate in certain areas
no idea how well that second thing translates to ingame
anyone running dedicateds on 4.13.1 yet? i caught some http level crashes last night - https://answers.unrealengine.com/questions/498793/4131-dedicated-server-crash-w-android-clients-curl.html
Blergh clients and their cheating possibilities
Dealing with a similar issue where I have to spawn the projectile of my weapon on the server
Meaning everyone but host has to lead their shots
Which is blergh
@knotty kelp Making UObjects will be quite an challenge, especially if you don't know engine internals well (and then you must maitain it).
Without it you can only offload to worker threads things which are not dependandt on uobjects.
in any case i still believe that making UObjects something akin to Actors in actor model, where each of them can indepdently work on any thread and communicate with other objects trough messages, without race conditions and mutexes is best solution for highgly scalable system
highly*
otherwise you will always run into some wall be it AI (behavior tree processing), path finding, or simple movement.
RIFT game is using somewhat similiar apprach, they split their load not by zone but by tasks
there is no simulation of zone X, there is AI simulation, collision detection, etc.
@eternal anchor Had wondered several times what a good way of implementing threadable behaviour into the engine in a blueprint friendly way. And what you describe sounds like an excellent method of achieving that.
if microsoft wanted to make some money with the azure platform, after they ship crackdown 3, i hope they ship a UE4 plugin let us use its distributed physics engine - https://en.wikipedia.org/wiki/Crackdown_3
Crackdown 3 is an upcoming sandbox-style third-person shooter video game for Microsoft Windows and Xbox One developed by British developer Reagent Games, a studio led by former Realtime Worlds head and series creator David Jones, and published by Microsoft Studios. Continuing the series 7 years after the release of 2010's Xbox 360 video game Crackdown 2, the game focuses on Microsoft Azure-powered mass scale destruction that enables everything in the game to be destroyed.
its been a while but i think he mentions azure itself for processing in this demo - https://www.youtube.com/watch?v=rFWIpAPvF-Q
Does anyone have an example of how to get steam or normal lobby beacons working in c++
Has anyone encountered this logspam when playing multiplayer?
FRepLayout::UpdateChangelistHistory: History overflow, forcing history dump <Actor>
trying to figure out why thats occuring for some actors placed in the level, error spews from here https://github.com/EpicGames/UnrealEngine/blob/e528f9f7fa161504dd629c3b390deac93650e43a/Engine/Source/Runtime/Engine/Private/RepLayout.cpp#L819
physx 3.4 in 4.14 -- any improvements of note? (particularly related to vehicles)
whoops wrong chat
Can someone help me with this? I am making a very simple platformer where you have to jump to platforms in the right order. Each platform has an id, and the playercontroller has a NextPlatform variable. So when the game starts, NextPlatform is 1, meaning they have to jump to platform 1, and then NextPlatform becomes 2 and they have to jump to platform 2, and so forth.
If you look at my code below, it works, but I'm wondering how I can avoid all of the checking to make sure the playercontroller should increase NextPlatform
In the platform cpp
OnActorBeginOverlap.AddDynamic(PlayerController, &AMyPlayerController::GetOverlappedPlatform);
In player controller
void AMyPlayerController::GetOverlappedPlatform(AActor * OverlappedActor, AActor * OtherActor)
{
UE_LOG(LogTemp, Error, TEXT("Test"));;
AJumpPlatform *JumpPlatform = Cast<AJumpPlatform>(OverlappedActor);
AJumpCharacter *JumpCharacter = Cast<AJumpCharacter>(OtherActor);
if (JumpPlatform && JumpCharacter)
{
AMyPlayerController *MyPlayerController = Cast<AMyPlayerController>(JumpCharacter->GetController());
if (MyPlayerController && JumpPlatform->PlatformID == CurrentPlatform)
{
CurrentPlatform++;
}
}
}
In the player controller function, even if you ignore everything below, the "Test" log goes off for botht he server and the client (or both clients if dedicated). How can I make that function only run for the player that lands on the platform?
It works the way it is, but it seems stupid to have to do all of those checks lol
NextPlatform = CurrentPlatform. sry, forgot what i called the variable ๐
@wintry flower check if the player controller is local player controller
Returns whether this Controller is a locally controlled PlayerController.
Ah, that doesn't really fix your problem, your problem is in your subscribing logic
How should I go about it?
Well, you can just check at the beginning of that GetOverlappedPlatform
IF the actor overlapping the platform is actually your controlled Pawn
check if GetPawn() == OtherActor
wow that simple?
if it is, then you're in the proper playercontroller
@eternal anchor I don't suppose making the UObjects thread safe is on the Epic to-do list, is it? After consulting a few references, it seems like it's my project's best bet for the player count I'm targeting. After having some discussions, it doesn't even sound possible to do what I'm looking to do on a game design level without it.
I try to compile my standalone server, but do you know how can I extend the "develop..." because I don't see if I selected server, client, or other
@knotty kelp If I would have to guess, I would say no
Especially since it's a really niche need.
Well it would help both Ark and Squad, two of the UE4's most high profile multiplayer games
I wonder how long the process would take.
To make them thread safe?
Yeah, along with making the dedicated server multithreaded in general
Making uobjects thread safe is easy.
No use doing one without the other.
I mean, it seems trivial.
Really? o.O
Making the server multithreaded is such a big amount of work that it will never ever happen.
๐
D:
๐ญ
If hypothetically someone were to do it though, any idea how long it might take?
I would assume, a very, very long time.
I mean, it would probably mean changing the engine's architecture.
@haughty star tested, it works
@neon bluff thx it works too!
Do you have any idea?
@knotty kelp it's on the table, but since no games in Epic using it, I guess it will be a while
You can still get the player controller of a pawn on the server
If you want it by index, use GetPlayerController
I'm not sure if the PC iterator is in BP however. Doesn't look like it in the docs
@dusky flicker
I see I see. thanks
If you really need the iterator though, making a function in a BP function library is always good ๐
New to multiplayer, should I be doing my movement on my character or player controller?
Doing it on the character works without issue but trying to put it in the player controller makes it crash for me
Generally you want to put movement functions on the character (which you might not need if it's a pretty default character), and call them from the PC
That's interesting you're getting crashes from doing that however
yea..
I have a RPC function in the PC called OnAskMoveForward which calls the Ref->MoveForward(rate)
and I bind it to the setupinputcomponent but nada
and im setting the character ref in the Posssess function
You should probably use GetPawn(), as if your character goes null you won't know
The performance difference should be pretty negligible
Where should I be using this GetPawn?
Oh wait
You mean you getPawn when calling the function right?
Then I dont need the override Posses?
Not unless you're doing anything else in Possess
Yeah generally you want to avoid calling a method over and over, but in this case it's the most safe way to do it
Ah that worked!
Thanks so much!
Trying to get a whole grasp of this multiplayer stuff
And just another thing, if you're using pointers you should always be checking them
Even check GetPawn(), if it returns null and you don't check it you'll crash
Hello, I have an AI pawn and I'm trying to call some RPC functions on it but I'm getting an error message: ProcesRemoteFunction: No owning connection for actor AICourier_212. Function evtSetIsMoving will not be processed.
Do I need to some how get the server to 'own' this pawn?
AI runs on the server only.
RPCs don't make much sense
Unless you're replicating movement/and or animation
I'm replicating movement -- or trying to
The warning you're seeing is because there's really no remote object to call the rpc on
RPCs are properly called if their in the ownership chain of a playercontroller
AI is no
*AI is not
(At least, IIRC)
If my little AI pawn is simple enough, (just basic movements). Should I just try and avoid RPCs alltogether?
usually in those cases
basic "replicate movement" in the movement component
is enough
Well it's a pawn, I don't have an option to "replicate movement" in the "Floating Pawn Movement" component. Unless I'm using the wrong kind of movement component?
Or did you mean its class defaults?
There are severeal different movement component, The mostly commonly used is The CharacterMovementComponent, The Floating Pawn MovementComponent is pretty limited in its built in functionality.
If you have a Character that walks, jumps, runs, etc. Best to move to the CharacterMovementComponent.
Especially if you doing multiplayer stuff, Any other movement component has none of the builtin network replication, correction, prediction functionality that the CharacterMovement Component has. And yes you must use RPC (Custom Events ()) in all multiplayer behaviour.
Anyone had any issues with Login not being called in Game Mode? (Using 4.13)
@regal hazel I've heard of this problem recently. Something to do with the game mode refactoring that's happened in 4.13
@chrome bay, was it Login that wasn't being called?
Yeah I think I remember @chrome bay saying something about that
Post Login gets called fine, just strange that Login isn't being called
Although that might have only been InitNewPlayer he was talking about
@regal hazel I'm definitely getting a Login call in AGameMode
AGameMode::Login(UPlayer* NewPlayer, ENetRole InRemoteRole, const FString& Portal, const FString& Options, const FUniqueNetIdRepl& UniqueId, FString& ErrorMessage)
That's the new one I think
Similar to what @chrome bay said before - they didn't deprecate the old one, just used it to invoke the new one
I think
Im pretty sure InitNewPlayer was changed
Yeah I saw that :/ wonder why mine isn't getting called strange...
@regal hazel Have you breakpointed in the base Login function to confirm it's being called?
I was wondering, if I do two reliable RPC calls on the same tick, am I garanteed that those two calls are going to be received at the same time?
That's what I thought
๐
Well, I will explain my problem
I have a replicated actor that I attach to an other actor
Since the actor is replicated, the attachment gets notified to the other clients
Though I don't just want to attach it, I want to run code on the client once it gets attached
Well, I need to be sure that the actor is attached on the client side
Before I run this code
is there a way to know when an actor has been successfully replicated to all clients from the server?
Basically yeah
(after a spawn)
So I'm 100% sure that the replication is done and I want to do some process
it would be worth buying that multi player vehicle blueprint from the market place
as it attached player 0-4 characters to a vehicle
as a learning resouce i mean
I just realized that I'm not just attaching it to the actor but also changing the actor properties
@thorn merlin Well, I don't really want to buy something just to figure out that it's not fitting my use case XD
Yeah, they added an Override for InitNewPlayer, and that's the version you need to override in your own class now.
Stupid change, but hey...
@chrome bay Also true of Login? Or no?
Login works the same I believe
i think thats a bug, they overloaded, the original calls the extension, yet the framework calls the new overload
Hello. I launched my server with ProjectNameServer.exe --log in my CMD, but when I try to do "open localhost:7777" in my client, I get nothing in my console?
why i didn't get the connection?
why is it if I see a LogNet: SteamNetDriver_0 SteamNetDriver_0 IpNetDriver listening on port 15000 in console I still don't see the process listening on port 15000?
It seems to start listening on port 14001 instead
Hey everyone, trying to get rotation working on my top down character, working currently on the sever anytime I try it on the client tho it crashes
If anyone can take a look and see if their something im doing wrong i would be very greatful ๐
Can I'm change Outer in UObject? Have problems with ReplicateSubobjects if Outer is TransientPackage
or need to create a new UObject with Template?
Hey. I build my standalone server, I want to try to make a little game multiplayer like two player can running. How can I find a list of server ? Do you have a tuto about that?
@haughty star you can check ShoterGame for C++ API
@surreal prism ok i will check
Its my understanding the executing functions on the Login event could have deleterious effects on the server. Supposedly thats why they dont expose the event to blueprint at all, Instead using PostLogin.
Something along the lines of it can cause the server to a halt until the login phase is completed.
how do you use the "Steam Inventory" like CSGO, Rust has?
Can anyone help me figure out why beacons are not functioning on the steam subsystem
Or the method to make them work
@chrome bay @ripe folio
Quite a simple fix had to change Login to the new login override and it all works fine
Hello all.
everyone found out the hard way tho, i think they meant to phase it out and obsolete it
what hard way ?
I have built a Rocket projectile that is an Actor with the following structure:
RocketProjectile Actor
But, in my multiplayer game, the ParticleSystem Component is not replicated when a new player joins
Is there a way to set that ParticleSystem to replicate automagically?
@regal hazel Awesome! So you just overrode the other one instead?
@ripe folio Yep ๐
anyone working from promoted or master source that's also doing some steam multiplayer? I have steam overlay coming up in ue4.12.5 but it always seem to revert to LAN in promoted. maybe i don't have certain steam SDK files installed i need?
so #1 thing is it seems "Online Subsystem Steam" is now a plugin that is not enabled by default.
I've tried all the suggestions on UE4 AnswerHub that should work in 4.13 but still no luck getting it to work on my UE4 build from promoted branch. If anyone has steam working in 4.14 on promoted and you know of anything extra required please let me know, thanks!
I don't even have it working in 4.13
@ocean dust how are you spawning the particle system? or how are you activating it?
you might need to handle the state of your projectile and replciate the state
so you can recreate it on the client side acordingly
hey, i am trying to make a little system with replicated, i have two client and one server, i want when i client on or off the furnace, my server call all the client, i try run on server or multicast but only the client who on/off work
@rough iron where i am wrong?
I do not fully understand what you want
just a on/off switch?
that should work in MP right?
yeah i want try this simple system
I have an boolean replicated
and a custom event musticast
you just need a repNotify on that bool
so the client get's notified when the value changes
you do not need to send a multicast rpc
with variable replciation it's more than enough
so if a client switches it on/off you just send a RPC to the server
the server changes the value which gets replicated back
idon't understand, if I use repNotify, where I know when the value is updated?
the client that started the change can also just simulate the change locally for imidiate effect
if you ser a variavle to RepNotify you will get an event that fires when the values changes
but you have to take into account some stuff:
OnRep_bIsFree() I see that
yep
the client that switches the switch will send the on/off to the server which does the actual change
yeah
if your clent is a listen server you wont get a repNotify
so you have to perform the change on the listen server on your own
just in case you have listen servers
also the client should simulate the action at the same time it sends the RPC
currently I got that
@rough iron but when I client swith, the second doesn't change something
I added hello in OnRep
@rough iron do you have an idea?
@rough iron i already try that, but if I run my Action on a server, nothing works
so you have an error setting the variable to replicate
if you have a varibale set to replicate properly it will replicate
My Boolean is set the RepNotify @rough iron
so it should replicate, are you sure you are modifying it in the server?
or is the bool set to replciate only to it's owner etc
@rough iron
is you actor set to replicate?
I would make a test project for yo ubut I'm in the office atm xD
It was not, but now it was ^^
Has anyone here ever used lobby beacons ?
I attempted to get them working on the steam substeam and I appearntly can't connect via IP:PORT when using the subsystem, and using the NULL subsystem tells me I got a close message before the open message
Using Steam you should use steam sockets
the test beacon seems to work on the null subsystem however
they are nat negotiated
also the null subsystem is not really suited for online purpose
Is there any documentation on how to use the steam sockets ?
because I would preferribly also allow connecting via ip:port
not really, just the engine source
and ShooterGame
if you use SteamSockets you can not connet via port/ip
it's all in valves backend
@rough iron Still don't work. Strange.. Other question, I added Steam SDK to my Game, how can I get all of servers online? (I build my server etc from source)
There is a steam setup in the docs
and some tutorial on the wiki
it's not a thing to be done in a minute xD
I know ^^
also if you do not have an SteamID you have to reuse an existing one
I mean, the reason I would like port/ip is that the steam matchmaking is not the best, I know my ARK servers only work via ip/port
or the one from the SDK sample or the one that ShooterGame uses
steamID? it's not appID?
@ivory parcel of course you can create 2 separate matchmaking systems but the ip/port thing wont be negotatied or announced
SteamDevAppId=480
How would that work?
because if someone can atleast connect via ip/port thats good
I would want to use steam 99% of the time but with ip/port as a fallback for whenever it fails
You would have to come up the logic yourself, I never did such a setup because I had no need for it
@rough iron I need to use Find Session Node?
you need that one, the create session
Oh no, Steam use only C++?
no
So I can't use Find Session Node?
But I need to create session even if I got Dedicaced Server?
yes,the dedicated server needs to create oine
and it must login to steam
you can run it from the commandline providing a user and a password
^^
hey guys and girls, so im making a fairly simple game and i think i need to start thinking about the multiplayer part! since i've never realy worked with multiplayer in UE4 i thought coming here for some tips and tricks would be a good idea, so what i want is
- Person starts game (from .exe)
- In main menu, grab the saved inventory for that person (by steam_ID) from the server and display
- When a match is won, grab the new inventory with the items won and overwrite the old inventory for that person (on the server)
- Back to mainmenu, again fetch/update the inventory
how could this be done? i've followed a multiplayer tutorial by Epic Games, but they dont explain how to save everything SERVER SIDE, only to load from local save, push that to server so that every player can see the players details
any links to tuts or anything would be appreciated
So you need a connection to an external backend I guess
If you use SteamWorks you can save custom files per player or per game to be accesible to all players
that would work
i use the Steam SubSystem, i was thinking about what Rust, Csgo and Payday (to my knowledge) uses the "Steam Inventory" to add/store items won/found ingame, how is that done?
they use the provided steam API for user specific files
UE has an abtsraction layer for them called CloudFile
or user file
can't remember the exact name though
could be xD
Provides access to per user cloud file storage
hmmm do i have to manualy install the steamworks?
yes and setup your project for it
and you wont be able to test it without a proper appID
with your own appid xD
yea so i need to get a greenlight from steam in order to get my own appID
but is the standard test appID limited to what i can test?
For some stuff you need access to the backend
to the administration page
which you can not access if it's not your own appid
for example you need to have access to the backend to submit achievements
xD
(makes sense actually)
ye it does
but it looks dumb to search for a greenlight from steam when the game is not even done :S doesn't it?
you can always try to apply to get an appid and not go through greenlight
if every one just gets free appids it would result in hughe costs for valve
people say that you have to get the greenlight from valve befor you get your appID
I think you should be able to apply for the appid after you pay the hundred bucks, and get it. Then they only take it public if they feel its up to snuff on the greenlight.
so how would you guys build the system i described earlier?
You can create your own backend for now and use steamworks later
so on the multiplayer tutorial by Epic Games, they use "open level -> option (listen)" so the user creating game is the host, my game is kinda like a card game, up to 4 players can play together and are stationed arround a table, is this method good for this type of gameplay or should it be dedicated server?
Ich you go with the listen server approach you don't need a backend
If you need a dedicated one I would not use a UE one
Whats your platform?
For a card game you can just use a aimpler backend
For example smartfox is a viae commercial option
is there any tutorials on the smartfox and UE4 ?
why wouldn't you use unreal server for simple game ?
I would especially if you dont know C++
Integrating other servers is very much advanced coding.
Implementing a card game for 4 players and spawing a dedicated server for it seams a bit hard xD
imagin maintaingn servers for 1000 players xD
@vestal cobalt their aren't any
doest look that hard
easier than implementing networking yourself if you don't know what are you doing (;
this is a good resource if you havent seen it - http://cedric.bnslv.de/unreal-engine-4-network-compendium-released/
Yes
I get this error every time I try to connect to a lobby beacon Malformed_Packet: UNetConnection::ReceivedPacket: Received control channel close before open
also, that compendium is nice, first time seeing it
Also to people that have used party/lobby beacons is there an explanation somewhere?
I found this https://forums.unrealengine.com/showthread.php?113190-Party-Beacon-How-does-it-work-o-O&highlight=Lobby+Beacon which seems to explain how they are suppose to work
Haya,
I was stumbling around trying to figure out how to deal with party systems for parties dropping into/out of servers and stumbled on party beacons (https://answers.unrealengine.com/questions/348614/party-connection-party-beacon.html). These seem like exactly what I want, but the documentation is sparse, and there aren't many hints in code for how you go about hooking them up. I'm also curious how possible it is to get these hooked up to matchmaking through unreal or if it would be better
but PartyBeacon client seems to be between a client and a server based on the function calls however Moss makes it seem like its between two clients
Have any folks had issues with blocking volumes breaking when in standalone or packaged but not PIE? (I'm running 4.11.2, I checked patch notes and didnt see a fix anywhere for newer versions)
@night jay (and anyone wanting Steam on 4.13 or early 4.14 source builds) I was able to get it working. In my case I had upgraded the project from 4.12.5 and something in my cached/intermediate folders was causing it to not work. once I deleted those and rebuilt project files it started working. I also recommend building a new blank project in 4.13 or later and trying to get it working there first. If you are using c++ be sure to uncomment the line in your GAMENAME.Build.cs file // PrivateDependencyModuleNames.Add("OnlineSubsystem");
@livid aspen i just got it working maybe i can help
@frank quartz I tried building a new example project and it wasn't working. I'm going to attempt a blank proj now
@livid aspen yeah try that first, i wasn't able to get it to work in my project untill i backed everything up and then wiped all the cached/intermediate folders and rebuilt my c++ project files.
@livid aspen you've enabled the plugin? and if in c++ uncommented the line mentioned in your GAMENAME.Build.cs file?
So far I've only done BP projects
I figured it would be simpler to try and get one of those working first
Is blueprint network realisation fast?
The steps I've taken are, check the engine build to make sure all the steam dlls are there, enable the steam subsytem in the plugins menu, add the blob from Rama's guide on the wiki to the engine.ini file
My output log shows: LogOnline:Display: STEAM: Loading Steam SDK 1.32
LogOnline:Warning: STEAM: Steam API disabled!
LogOnline:Display: STEAM: OnlineSubsystemSteam::Shutdown()
I can't get any more logging information out of it for now
@frank quartz From what I can tell, everything should be right so far. The blank build has nothing done to it except the changes I mentioned above. I can dump the blob I'm adding to engine.ini if that will help too
try pasting this DefaultEngine.ini
[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
[OnlineSubsystem]
DefaultPlatformService=Steam
PollingIntervalInMs=20
[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
GameServerQueryPort=27015
bRelaunchInSteam=false
GameVersion=1.0.0.0
bVACEnabled=1
bAllowP2PPacketRelay=true
P2PConnectionTimeout=90
[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="/Script/OnlineSubsystemSteam.SteamNetConnection"
Yeah, this is the same one I'm using
hmmm
so i haven't gotten confirmation from you on some things. (just to eliminate some simple things) #1 you have enabled the Steam Online Subsystems plugin and restarted UE4? #2 are you using c++?
oh i see you did say that up top
But I am trying a cpp build now
just a blank one to see if that will work.
Did you turn any of the other online subsytems off?
I will say that i have only tried with c++, i never tried a blank blueprint project.
hmm no, not even really sure how you turn other one's off, how do you do that?
@twin juniper hi, sorry didn't see your question till now. can you rephrase it I'm not sure what you are asking exactly.
Just unchecking them in the plugin menu I think
but for the cpp build.cs changes, what line are you referring to
// Uncomment if you are using online features
PrivateDependencyModuleNames.Add("OnlineSubsystem");
this one I presume
I want add multiplayer in my "game". Should I use cpp for speed and quality, or blueprint
ah, no I didn't do that. I created a blank c++ project, pasted the above into DefaultEngine.ini went into plugins, enabled Steam Online Subsystem plugin. uncommented that line in build.cs, built in vs. then starte ue4 and it worked.
yeah, in projects before 4.13 there used to be some other lines related to online below it but in the 4.13 it's just that one line related to online subsystems.
Ok, are your steam install and engine install on the same drive?
@twin juniper the speed of sending stuff over the network is going to be the same, the only thing that would be potentially slower is the processing. I would say unless you're doing a game that is heavy on processing (if your generating procedural worlds for example) blueprints work really well. Even if you do use c++ blueprints are great for wiring up events in any game.
@twin juniper you can always switch a project to c++ later too. so there's no real problem starting in blueprints. especially because they can help you learn how UE4 works a bit easier than diving into c++.
@livid aspen hmm i don't think they are.. checking...
Ok, understood, thanks!
@livid aspen yeah steam is on d:\ and ue4 is on c:\ (my ssd drive)
Yeah I have mine the opposite
So that shouldn't be a factor
Man, this is really confusing
I followed the steps you did word for word
you know.. technically i never did this in 4.13
let me try a blank project in 4.13 and if it works i'll .zip you the files
i did it in a promoted version of 4.14
sure thing. ๐ the guys here and at epic helped me so i'm just passin it on
@livid aspen works for me. hey one thing.. you know that steam overlay only works if you're in Standalone.. i.e. not in PIE right?
well i could do shift+tab instantly.. it took like 2 seconds before the toast popped up in the bottom right
i'm on 4.13.1 same for you?
Yeah, I'm not getting either. And yes, 4.13.1
I even uninstalled and redownloaded the engine earlier
Built with UE4.13.1 (run in standalone)
Alright, loading it now
Not working for me
Ok, so this means it must be something on my pc/config
yeah something is wrong on your end it seems then.
Are you on windows 10?
so.. you mentioned that you downloaded the steam SDK or something?
i never did that.
just have steam installed
and i'm on windows 10 yeah
haha
um
I closed steam
opened the editor
then reopened steam
So maybe its the way steam was hooking the system process
@livid aspen kind of off topic but do you have a vr headset by the way?
i'm trying to add steam multiplayer to my vr game so i thought maybe you could help test it ๐
So there are some nvidea drivers sitting around on my machine for vr
Haha I would if I could
What are you working on?
that's great that it's working for you now though ๐
Hopefully the other files will work now
here's an old teaser trailer for it
and this kind of shows it in vr (very early build, have a long way to go) https://www.youtube.com/watch?v=kajzgd014ZM&ab_channel=tmektmek
Wow that looks great!
thanks!
have you ever played FTL?
Yep
a lot of the game play will be like that but first person
Thats an awesome idea. Im sure the vr lends itself to that really nicely
you're controlling every aspect of the ship, making repairs (using your drones), doing battles as you make warp jumps trying to get home
Thanks again for your help. I went back to my actual project and its working fine now
sweet ๐
I'm building an online only game so it was pretty imperative that this works LOL
heh yeah.. i'm not sure if ghost vector will have online in the actual game but i'm wanting to add it for the purposes of demoing it to people and getting live feedback
Hi Guys, I'm new in UE4 and have a question about persisting Playeritems/Playerdata. My current solution is to break my Itemobject, write the data in Json, and send to Request to an PHP API. The API is writing it to an MySQL DB. Are there any other Solutions to persist the data? Later there are more then 1 Server, so the save-game should be loadable on each server.
- What kind of data ? 2. Why SQL server ? 3. If you persists it must be some kind of database, why not call to it directly from unreal Server ?
where are you hosting your game ?
I have a forums post up about lobby and party beacons, if anyone can help with explaining them it would be helpful
So I have spent the better part of a week now attempting to dissect the best way to make a rocket league/borderlands party system and came across lobby beacons first and then party beacons. As far as I can tell by searching there is no public information on lobby beacons however a fairly good write-up on beacons themselves here. Party beacons have a little more explanation with a forum post in another thread along with an answer hub explanation in the thread as well, however there are no
How works a game like Rust? How work something similar with servers which can save their map, save objects and when players login to the server, get the data for players on THIS server? do you have link or other? How save data on server?
Can you not RPC an event inside of a UMG widget?
@haughty star I thought it was timed events to loop through the map saving each actor state?
I don't understand @drowsy veldt
@haughty star at perodic times the server will record each actor(walls models etc) state and data and save them into a database then when they load the server they just reverse the process
yeah, but when "server is loading"? how do that? i compiled my server but i don't know how can I work on the server
i'am lost with Unreal aha, idk where coding
You should do a level/map which you call loading
then in that time you should load the data in while you STREAM your map
You can then load the next map instantly since you put it into memory in the background
after you have reloaded all the map data
so when I connect to a server, i detect the server and load the server map to the client? @drowsy veldt
are you trying to replicate games such as rust?
i don't want replicate game, i want to know how works game like rust, I just want to lean actually @drowsy veldt
when a ustruct is replicated does it replicate the entire struct or just the properties that have changed?
sorry I know it's been asked before, but I can't remember
When you replace the gamemode with a BP derived version, how to you replicate what the template does since it makes second, third, fourth players etc, all spectator and doesnt spawn a pawn
@jolly siren only the changed values
a common way to refire an RepNotify is using an int nounce, you just increment it on the server forcing replication
Right that makes sense. I just wanted to make sure it wasn't having to send data that wasn't changing over the network.
primarily because my character stats struct is getting quite large
struct FFPSCharacterStatsData
{
GENERATED_BODY()
UPROPERTY(BlueprintReadOnly, Category = Stats)
float Health;
UPROPERTY(BlueprintReadOnly, Category = Stats)
float Speed;
UPROPERTY(BlueprintReadOnly, Category = Stats)
float RunSpeed;
UPROPERTY(BlueprintReadOnly, Category = Stats)
float CrouchSpeed;
UPROPERTY(BlueprintReadOnly, Category = Stats)
float CrouchRunSpeed;
UPROPERTY(BlueprintReadOnly, Category = Stats)
float Jump;
UPROPERTY(BlueprintReadOnly, Category = Stats)
float DefenseBallistic;
UPROPERTY(BlueprintReadOnly, Category = Stats)
float DefenseAOE;
UPROPERTY(BlueprintReadOnly, Category = Stats)
float DefenseMelee;
UPROPERTY(BlueprintReadOnly, Category = Stats)
float DefenseFire;
UPROPERTY(BlueprintReadOnly, Category = Stats)
float DefenseElectric;
UPROPERTY(BlueprintReadOnly, Category = Stats)
float DefenseWater;
UPROPERTY(BlueprintReadOnly, Category = Stats)
float DefensePoison;
UPROPERTY(BlueprintReadOnly, Category = Stats)
float Stanima;
};```
all the defenses ๐
Not sure if this could cause issues
I'd just keep going. By the time is starts to cause issues, You might know how to fix it.
Hmm maybe I shouldn't rep them since they are really just used for cosmetics clientside.
Well except the speeds. Since the character movement's MaxWalkSpeed isn't replicated.
I don't really care if the client hacks their local cosmetics.
you do also have the option of using client RPC calls to send data you want
for surgical updates
also you can use smaller data structures, if you don't need all that precision
if you are worried about rep spam
but imo, dont optimize until you are sure its a problem, theres that network profile tool
yeah that makes sense. I will leave it for now. May decide to stop reping it later and just let the client's hack cosmetics.
oh they'll be busy hacking your server RPCS ๐
lol ๐ฆ
"don't trust the client" i kept getting bit on that over and over
Does anyone have experience with VOIP in 4.13? In 4.12 it was a known issue, packets dropping even with just two clients. It was supposed to be resolved in 4.13 but alas, same issue
Hello all.
I have a Blueprint class that is meant to hold some data. It inherits from Object
And I have an Inventory Blueprint class that holds this Object subclass
But I want my Inventory to be replicated.
It seems that Object does not replicate. My Inventory variable is replicated, and its length is updated, but all of the instances in the Module array are empty.
I have tried many things to make my Module (the Blueprint inheriting from Object) replicate. I have tried a custom UObject C++ subclass, with no luck (and LOTS of editor crashes)
Is this at all possible? I really don't want to have to rebuild my Module class hierarchy to get replication. Can anyone help?
Thanks in advance!
Object does not replicate.
You'd most likely have to swtich to using Actor as the base.
That involves a large amount of reference changes. And there is no "find and replace" in blueprints ๐ฆ
@twin juniper damn I was hoping it was fixed in 4.13
@jolly siren It worked better, but still not consistent enough
hmm okay, in 4.12 it seems to work for like 1-2 seconds after a player spawns and that's it.
@ocean dust you can replicate UObjects
@twin juniper may want to up this if it's the same as what you are seeing
@jolly siren Yes when enabling "StartNetworkedVoice" by default. It works again for a couple of secs when you use push to talk
ah I'm not even using push to talk
I would respond to that AH post and say you are experiencing it too
the more people that do the quicker they will look at it
I just responded to it as well
@twin juniper ^
Steam PTT in 4.11 works - still gets that log spam sometimes.
Haven't checked it out properly in 4.13 yet.
But again, this is PTT.
VOIP in general worked fine in 4.11
it was broken in 4.12
and apparently still is in 4.13
Damn - coz we skipped 4.12 ๐
lol yeah 4.12 was a rough release
We are still on it, I've been planning on upgrading soon. Mainly for the voip
No idea. We just have a habit of skipping a version if possible.
Longer dev time on single base FTW.
makes sense. 4.12 took 5 hot patches, so that's never a good sign
I waited 2 weeks before switching to 4.13, expecting a hotfix too.
I'd upgrade to UE4.13.1, but Windows10 decided it didn't like me.
I should have known better, as it was a day ending in Y.
Back on topic - the Steam mute bug is still there.
lmao yeah 4.13.1 took a bit
When you replace the gamemode with a BP derived version, how to you replicate what the template does since it makes second, third, fourth players etc, all spectator and doesnt spawn a pawn
@mystic pilot if you get around to testing voip on 4.13 and you see it's broken can you post on that AH thread too? Need to get it some attention if it's still an issue.
@drowsy veldt Clients starting as spectators? That's a game mode setting you can override.
If it already is, there should be nothing stopping them spanwning in.
The game mode won't replicate - only the game state will.
@jolly siren Will do.
thanks
@mystic pilot The moment I changed the gamemode it stopped the second player character from spawning
That suggests something else going on that we are unaware off.
What does the first player do that others do not?
The only thing I can think of is that on login, they "start the match".
Do you have anything in there that prevents other players joining a match in progress?
It's happened before the moment I touch the gamemode in a multiplayer setting
it seems in the template there is an overriden function that is not apart of the gamemode when derived
ChoosePlayerStart I believe it is
If it cannot find a player start, they should spawn at 0,0,0 (where world settings actor is).
It's strange but they don't even instantiate the actor
player 2 is straight into a type of spectator mode
If the default choose player start/find player start (what ever) isn't called, then, yes, that would prevent them spawning ๐ฆ
I've had that issue.
did you locate a fix?
Yes - don't have invalid spawn points in the map ๐
Probably not the same as the issue you're having.
ill have a check, anything is possible since i wiped the map originally
Hmm... did you remember to add multiple player starts?
Argh actually i have the same setup as the template still. A player pawn setup as well as a player start
I bypass a lot of the default game mode behaviour ๐
I think it's a matter of what is not included from the original template instead of a bug, such a pain ๐
I'm seeing nothing within the log
You may need to enabled game mode logging.
LogGameMode=VeryVerbose or something like that in DefaultEngine.ini
@mystic pilot LogLinker:Error: ObjectProperty_65 has an inappropriate outermost, it was probably saved with a deprecated outer (file: ../../../../../../Users/Null Byte/Documents/Unreal Projects/networkTest/Content/ThirdPersonCPP/Blueprints/ThirdPersonCharacter.uasset)
this is the error
Base class missing?
now, absolutely fine, strange
Q_Q ๐
Its all I can ever think to say when UE4 acts this way.
It's a feature
haha
So is my ass, doesn't mean its a good one.
hey guys
i've downloaded the Advanced Sessions Plugin and im working on my own "ingame friendslist" and i noticed something weird you can get the "Online State" of each friend like (online, offline, away, busy and so on) but there is ACTUALY something called "Extended Away" in that enum (Online State) and i see some of my friends are listed as "Extended Away" WTF does that mean xD if they are away they should just be "Away"....
even steam itself doesn't have "Extended Away" xD
is it something like "this person has been away for an extended amount of time"?
like hes been away for several hours
erh... sorting arrays is hard -.-
trying to sort a structure array but can't get it to work
how are you trying to sort it?
foreachloop (current array) -> make new array (sorted array) here is where i sort it (2 sec i'll give you some pics)
I mean are you sorting it by struct values?
ye
int/float?
oh shait no i mean i sort by array element!! in this case the "Online State"
what type is Online State?
Enum
so its sort by int
here it is
i take the first array and check the online state against the "sorted array" and see if it matches or not
i followed an online guide for this btw cause i've never sorted an array befor
https://blueprintue.com/blueprint/mvxjhry3/
This is my sort float array function. You can follow this to get what you want and just replace floats with enum values
BlueprintUE.com is a tool for sharing, rendering and rating blueprints for Unreal Engine 4. UE4 is a game engine which use visual scripting called blueprint.
so i only need 1 foreachloop then?
Anyone have any knowledge on lobby and party beacons that might be able to help me with my forums post ?https://forums.unrealengine.com/showthread.php?124784-Party-Beacon-Lobby-Beacons-Oh-My
So I have spent the better part of a week now attempting to dissect the best way to make a rocket league/borderlands party system and came across lobby beacons first and then party beacons. As far as I can tell by searching there is no public information on lobby beacons however a fairly good write-up on beacons themselves here. Party beacons have a little more explanation with a forum post in another thread along with an answer hub explanation in the thread as well, however there are no
@vestal cobalt yeah you can do it in one
@granite jolt im confused, cause that damn BP site doesn't show the actual BP node name -.-
ok ill whip up a couple of screengrabs. blueprintUE is kind of hard to read unless you are familiar with it. What you can do though, is copy and paste the nodes into a blueprint function
might help to do that
i tryed that and UE just went, aaah fuck it this is to much code, see you later...... (it crashed)
ugh. photoshop and unreal just crashed at the same time. bear with me :/
sure sure
why dont you just use Windows Snipping tool? ^^
much easier then screenshotting and editing in PS
checking it out now
you pass it through on the function as an In var
but where do you set "Sorted Array" float?
in that case, I am getting the max float in the array and adding it to the SortedArray
I only needed it for ascending but I coded it for both.
quick question, outside of that macro/function you have 1 for loop right?
peeps
does anyone know how to get the Game name of the game the steam friend is currently playing?
@jolly siren "You can replicate UObject" I'm guessing this was a typo, and was supposed to be "can't"?
Oh ok! Great!
I have been unable to get Blueprint classes derived from Object to replicate.
are you using c++?
Only if I absolutely must
it's only possible with c++
But not in Blueprint?
Alright, fair enough.
I already tried subclassing UObject, overriding IsSupportedForNetworking, and other methods. Still no dice
yeah I use UObject's at the core of my Ability system and they are replicated just fine
Are they utilized in Blueprint at all?
yes
Hmm. Would you mind sharing a gist with some of your replicated UObject code?
Also, I'm guessing that storing one of these replicated UObjects works fine, but creating a Blueprint child class doesn't work (that's what I tried).
@jolly siren
yes ofc it works fine, my abilities are all blueprintable
You can also replicate a UObject's sub UObjects
share what you did and I will take a look when I can
Well then I have no idea what I missed when I built my UObject subclass, overrode IsSupportedForNetworking, marked the class as BlueprintType and Blueprintable, and then switched my data classes to derive from this UObject subclads
did you try and replicate a property on the UObject? lol
it won't replicate the object if you don't replicate a property
via GetLifetimeReplicatedProps
Yeah I had a book flag that I replicated using 'GetLifetimeReplicatedProps'
Still nothing
lol
it works
it's built into the core of Unreal's Ability framework too
just look at that
sigh
I think this question should be placed here instead of animation, considering it only happens when I have more than one client.
Any help would be appreicated.
@lament kettle are you using the base characterMovementComponent?
It might be just the client side smoothing, I use my own movement component for it but I bases my changes on the UT movement component which has a lot more smoothing techniques
you can also tweak the smoothing params I think (not sure atm though)
Should I use my own movement and not the base?
You should be able to use the base one tweaking it to your needs
first step is to check two important facts
- Are you actually smoothing?
- Could it be that the server is correcting my position all the time?
You could also check if it happens with the Multiplayer TwinStick shooter sample (pinned). It uses the base CharacterMovementComp
@jolly siren I have resolved to approach my inventory system differently. I will not be replicating UObject subclasses, but instead replicating item ids (integer) and random seeds (integer) to then build inventory objects on the client.
Found my issue
Use Controller yaw
Its fighting the client when on server for some reason
In multiplayer the server should always do the actual moving of the ships, Not the client. Make sure your Input from the client is setup more like a request. You have an input from your mouse/keyboard/controller and then immediately turn that input into an RPC IE Custom event that go's straight to requesting the server run the input command on its side.
Ah alright.
ive been doing C++ for that
but i think ill do it in blueprints
and when i get it working ill transition the logic
commited to master - PR #2359: UE-13079: World Origin Shifting for Multiplayer (Contributed by michail-nikolaev)
would this be fine (repost form bp section)
input latency though
you are sending a movement request to the server, which then decides whether it should move, then server replicates the new location back to all clients
Should I then leave it as defaul and ue4 handle this?
what I mean is, when you move an actor locally it does move locally and then replicates (I guess)
It does... technically.
so if you have a high latency, it might take a bit long to respond to your input
That's the user's problem?
well yea xd
if two people shoot
and server says
here he is
but you've moved forward
but technically your still back
your dead if shot
but your right
ill leave it as ue4 default replication
for this..
The default CharacterMovement component includes client-side prediction for movement. Moving on that system would feel really weird
yeah
i just put it back to defauly
from inputaxis --> directly to move input
i might put a if statment
to prevent constant connection if no movement tho..
also, i found out the stutter issue for anyone curious
GetCharacterMovement()->bOrientRotationToMovement = false;
that needs to be false
i was messing around with the value in blueprints
and for some reason that modifys the animation direction
:/
you won't be able to control your ship if you are a listen server
you'd be authority
What is a Steam Session Ticket ?
Advanced Sessions Plugin
I don't ask for donations and this plugin is free for use with no strings attached, however due to repeated requests I am adding an (optional) donation link
PayPal Donation
Updated 09/01/2016
New
Parvan/Metahusk has made a menu example project that also shows the general usage of the plugin, you can view it here:
Can anyone provide insight into https://forums.unrealengine.com/showthread.php?124784-Party-Beacon-Lobby-Beacons-Oh-My
So I have spent the better part of a week now attempting to dissect the best way to make a rocket league/borderlands party system and came across lobby beacons first and then party beacons. As far as I can tell by searching there is no public information on lobby beacons however a fairly good write-up on beacons themselves here. Party beacons have a little more explanation with a forum post in another thread along with an answer hub explanation in the thread as well, however there are no
Vehicle Soccer Multiplayer Template.
lmao
Goes to show that sometimes a simple idea can be a good game.
well, it doesn't take long to make RL clone with stock components
but the downside is that it just simply doesn't work
I see no value on that asset
unless someone wants to do just lan or splitscreen (that asset has no online MP nor it could have with built-in ue4 physics networking)
well, not one that would play properly for a game like that anyway
I see no reason it cant be done with ue4 built in physics. And even in blueprint.
the difference in quick moneygrab BP implementation and one that would actually work is probably measured in several hundred working hours if not in thousands (depending how well said person understands physics)
well
it can be done in blueprints
in one weekend
it just doesn't work properly
that's the thing
ue4 doesn't have proper physics replication on online play that would allow proper clientside prediction
only part that has such things are ue4 characters
so you'd need to implement that side yourself manually, for both vehicles and the ball
Are you talking about something in particular?
in general about physics based multiplayer
We are talking about a rocket league clone ala the assets above?
I use physics based multiplayer no prob.
sure, they replicate
but there's no proper clientside prediction
you can't make a fast paced multiplayer game without one
and ue4 physics is not deterministic
There is client predicion and correction on the charactermovement component.
you can get 3-4x difference in physics velocities just by running the game at 15fps or 120 fps
yes
that's what I said already
but char movement != ue4 physics
This true, but thats a common physics problem
characters do their own prediction and physics
but.. it's not
it's ue4 specific issue in this case
I mean, in general, game engines tend to tick physics at fixed rate
but ue4 does not
which presents additional issue
it's ok that physics engine is not completely deterministic
Well sure they, but they should. Just so long as it doesnt disagree with the server simulation.
but if you just calculate it randomly, it's 10 times worse
thing is
every client and server simulates the physics differently, unless you lock the framerate
(because unreal ticks physics by default on your framerate speed)
So... lock the framerate like everyone else?
that's not a real solution for the issue, you'd still have issues on people who can't reach say 60fps
also
prediction issue still remains
I'm not saying it can't be done
it can be done
but you'll need more than just stock ue4 components slapped together with blueprints
I agrer ohysics timung systems are a bitch. For all of us.
Ugh cellphone keyboards.
If they cant do 60 fps..ban em ;p
for example, just read on some forum that new rockey league map plays under 30fps for tons of people
Ouch
but I kinda suspect they keep their graphics settings at max :p
it's a pretty level though
I'd disagree on that, as if you don't couple rendering and physics, proper sim works regardless the rendering speed
how well you can control it at 15fps rendering is another thing though..
A sim is just a frame in time.
yeah
You need lots of frames for high simulation resolution.
yeah, I've been doing my custom physics at way higher speed than regular framerate is
even difference between 60 Hz and 100 Hz on vehicle sims is huge
Yeah. I can feel it big time too when its unlocked.
ideally you'd get to 500+ and more you go up, more accurate tire math you get
my custom solver still coped 2000 Hz physics sim
but I'd not go that far :p
Why wouldn't Shift-Tab work in game?
To bring up Steam overlay?
I mean, the overlay appears, but I can't use shift-tab (or any other combo) to bring up the full screen overlay
what do you mean?
like you get the notification but can't enable the full screen mode?
Hey guys, a bit of a weird issue here
I have one direction steam server joining working
As in, if I host, my friend can see the server, join, and everything works great
But if he tries to host, I can't find the server
Our builds are identical
Not sure why this would be an issue
Maybe he needs to open up the the ports on his firewall/router?
^
didn't steam implementation have some nat punchthrough or do you need to use it some specific way to do that?
never done any of that myself
yeah it's his firewall
morning everybody! ๐
morning
@nocturne token is your multiplayer client launcher application still working ?
speaking of nat punch through, has anyone figured out how to do it on android yet?
Anyone else running into issue where the first Join session attempt made to a server is "successful" but after loading screen the player is kicked back to menu? Seems to only happen with first join attempt, all join attempts afterwards are fine. Even waiting until host has fully loaded the map before attempting first join.
ive noticed that randomly - you mean since going to 4.13 right?
Might have been in 4.12 but not certain.
but currently having the issue in 4.13
Using Steam for online subsystem
If seamless travel is enabled, would a client attempt to use transition map if host is already in the level and fully loaded?
I'm reading though the network compendim and I have a problem with it.
Not the Client is moving the Character. The Server is getting the Move-inputs
from the Client and is then moving and replicating the Character!
Or, I'll be more specific.
The whole compendium implies a Dedicated Server architecture.
Waiting for a server to replicate your movement before starting it is wrong.
You should react to the input right away
Or you will have visible lag which is completely avoidable.
The proxy setup is a fairly advanced topic if you actually want to do things with it, I don't think that's the main purpose of the document
But yes, you're right there
The compendium doesn't do client side movement at all?
It spends a few slides on saying what proxies are, but not any implementation of them
Which personally, I don't see that as a bad thing. Seems a bit out of scope
"You can use the Replicates checkbox for any Interfaces containing functions that need to replicate across the server. This is found within the Details tab by first clicking the Class Settings button. " I can't find the checkbox?
Is that deprecated?
Quoted from docs
Well, the actual movement replication is a much more advanced topic
making a new movement ability that replicates properly is not trivial at all
and the listen server adds a bit of complexity as well
for a long time there was a bug in the engine that listen's servers representations of remote characters weren't actually updated unless there was an RPC
Anyone know of a way to freeze a players movement from the GameMode in an online environment
So nothing can move them or so they can't move? Because if it's the latter, just set the walk speed to 0 temporarily.
port forwarding is my first guess
or I'm replying to an old message because this thing did not jump ahead or show me it was an old message!
bah
lol
@fossil spoke Either set ignore move input in the controller, or disable movement in the pawn, has to be called from the server and executed on all clients
disable movement doesn't have to be called locally though I'm pretty sure, so you could just have the server do that on all pawns
@livid aspen https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711 if you are using steam sockets pay attention to the P2P section
Article "Required Ports for Steam"
Does his ISP block P2P?
Awesome thank you. It worked outside of the network my friend was on so I'm not sure what it was. We're moving to a dedicated server format
So hopefully it fixes these issues.
He was technically able to connect to my hosted session so I'm not sure why it would be on incoming connection only.
Cool ^^
I tried to get him to open the udp ports up but he didn't really know what he was doing so I can't be sure it was opened or not. Does steam throw any errors on inbound network logging? Seems like it would be hard to trace that down though.
My dedicated servers are gonna be tested using droplets though so hopefully that fixes any connectivity issues
Will it report blocked ports though? Seems like something that would be a silent failure though