#multiplayer
1 messages · Page 313 of 1
Anyone here who can help with a split-screen issue?
I'm like, super desperate. It's been months of research and I can't find any help on how to fix this.
I've got foliage within my map that works fine with one or two players, but when I play with 3 or 4, it begins dissapearing in patches at random
And it's different from player camera to player camera
So in that shot, Player 1 (top left) can't see the foliage that Player 4 (bottom right) can
Player 1 can see the shadows that they cast though, and can see Player 4
if I plan on integrating steam, what point in the project a good time to do that? nearing completion, or at the beginning?
there is no one-fit-all anwser to that, I prefer to integrate it soon in the dev cycle
if you do it late in developent you might have to redo a ton of stuff
like what?
Are you talking just steam functionality now or multiplayer in general?
Ok good, just checking
yeah I started out with it in mind
so is there something that I may have to redo if i do it later?
it seems seperate from pretty much everything else
I have no idea what you might have to rewrite, it depends on your initial assumptions of course
hoy do you travel travel players between your leves
there will only be one level
how is your matchmaking adapting
so the anwser is still the same, there might be stuff but only you know about your code
hmmm... i guess i should start researching. Ive implemented it before on another unfinished project, so its not entirely new but i could definitely learn some more
thanks 😄
^^
@oblique garden it might just be culling because there's too much being rendered. each port still sums up to one cull limit
@spring oxide is there any way to adjust that limit, or do I just have to dial down the amount of foliage?
My maps are small and this is the most I'd use, so I doubt doing something like removing that limit would cause performance issues, but I can't find any evidence of that being possible.
Anyone has experience with repnotify vars?
a bit @raven viper
We are having a rotation set on repnotify and the net stat says it takes 0.09kb/s to replicate but it's still lagging (LAN)
is it a physics object?
well i g2g to school now so hopefully someone else can help
Hi, my dedicated server eat ~4GB ram on linux server, but game on windows consume only 2gb
4gb is pre-allocated?
is there any link between the playerstate and the pawn they control?
@somber lava Owner of the PlayerState is the PlayerController
So GetOwner, Cast to PlayerController, GetControlledPawn
On Server
On Client I would have to check
Nope
Would need you to Pass a Reference to the PlayerState
aww too bad
my target system is working
now i wanted to display the enemy name on the UI of the player
but that name is saved inside playerstate
but my target system targets the pawn 😦
thanks for the fast reply though
@somber lava The PlayerCharacter has a Pointer to the PlayerState
if you have the PlayerCharacter, you can access the PlayerState
What i described is other way round
why does UE4 use a 512byte MTU? I saw in some code comments or trello that they had moved to 1024 then reverted and had a debate on it? is it safe to bump it up?
I mean I know it is safe, but are there any realistic situations where that is going to really cause packet fragmentation for users?
gaffer on games recommends 1200 as safe and future-proof for IPv6
i already found it, still thanks a lot. dont know why i didnt see it in the first place, must have overlooked the connection
@raven viper youll probably want to Slerp the rotation instead of setting it directly. theres pretty much no way around that
also with that you will be able to send the info less likely
Anyone played with gamelift and ue?
@raven holly - i tried a good 1.5 years ago to do AWS - butj this was before i was able to code C++.... there was no BP support at the time... only thing out there was GameSparks - which sucked at the time (it was new and HIGHLY in development).
Ok
Server connection received: ActorChannelFailure
Any ideas what this means?
When possesing a character
It posseses the camera but no input can be made
Hey how does the GameMode class behave in multiplayer?
Does each player get their own instance? Or is it shared among all connected players
Would I have to force all players to reference the Server's gamemode?
GameMode only exists on the server
An Client must do an RPC to the server for it to do something with the GameMode
Thank you
Also, GameMode is where I would keep each players score, right?
I assume so but I wanna make sure there isnt some other commonly used thing
Not necessarily. Id put Score on the PlayerState so that its easy for other clients to access other Players Scores for UI purposes
PlayerState is replicated to all Connected Clients
Oooh, awesome, thanks!
If you have Teams, you may want to hold their information on the GameState
Which just like the PlayerState is replicated to all Clients
But is used to maintain information about the state of the current session
Oh that makes sense, I didn't realise there was a GameState and GameMode, that slipped by me 😛
So stuff like score would be on PlayerState, should I include health and ammo on that as well, even if I won't be replicated that to other players?
Or is PlayerState exclusively information that needs to be shared?
Not necessarily, depends on how you setup your variables for replication. I generally dont have Ammo/Health on PlayerState, i put those on the Character Base class, because they are specific to the Character, a Player doesnt maintain Ammo after they die, same with Health, those properties live and die with a Character class in my opinion 😃
Ask questions, answers will follow 😛
Hmm
Is the logic of a gamemode actually in the gamemode? like, announcements that say "5 minutes remaining" and stuff like "if 5 keys are found, 10 monsters spawn" and stuff like that?
I'd assume stuff like the 5 keys = 10 spawns would be in the level blueprint, but what about the match timers and stuff like that
Depends, i maintain Time on the GameMode and replicate it to clients through the GameState
Your 5keys = 10 spawns yes that would be an GameMode mechanic
I wouldnt do doors in level bp
Well, not the press E to open, but like, the special "you must collect this before you can open the boss arena" kinda doors
Maybe that doesnt count either though, idk 😛
The only things i would do on the level BP would be triggering cutscene events or level events
And when thats called by the server, all clients get updated automatically right
No you would need to tell the clients level bp to do the same thing
Think of GameInstance as the process of the game on your machine, it is created when you start the game and persists until you close the game.
It is only relevant to your machine
If you access GameInstance on the client you are accessing the clients GameInstance, if you access GameInstance on the server your accessing the servers GameInstance.
And what would you personally throw in a GameInstance?
Generally Menu stuff for the MainMenu at least, session handling, user settings etc etc
Usage of GameInstance really depends on what game your making
Yeah that makes sense
Alright so, say we're playing a game where an enemy spawns at a random point every 10 seconds, where should I store that logic?
What kinda game
Nazi Zombies for example
Spawning i usually roll an SpawnManager object that handles that stuff, its maintained only on the Server
I would create a global actor (not based on scenecomponent) that manages this stuff
And I would look into a simultaneous server-client spawning
Where server spawns an authority of a zombie and client spawns a proxy, predicting the servers next spawn
by a predictable random number generator
That maybe a little out of his league right now lol
Its not required to have decent gameplay happening
What if, for instance, there were 50 instances of an AI wandering aimlessly throughout an area and 3 players are connected
Prediction stuff is required for high spawn rate
For example stuff like L4D where there's a ton of zombies
It removes the need for server to tell client that a zombie has spawned, server can assume client generated same data and is acting based on same source values - only providing minor low-bandwidth corrections along the way that sync up minor differences
Think of it this way - you're spawning 1000 zombies, but spreading out notifications about their presence over a longer period of time
If one zombie is a 50 byte notification, instead of a one-time transfer of 50000 bytes you can transfer 500 bytes per second over 10 seconds
Yeah I see why that would be significant, So then, this prediction is done by just duplicating the logic used on the server onto the clients instead?
Yes
The logic is based on a predictable random number generator. Server still acts as an authority, but client tries to guess servers next moves
For some reason i've had it stuck in my head that I would have to do a bunch of (current velocity x direction based on location and probable desired locations) etc etc
Mmm, there are three kinda types of predicting behavior I can think of off top of my head
- Interpolation - this is not prediction, this is simply interpolation of data from server to produce smooth image. For example, server sends updates of zombie positions every 0.1 seconds. For the duration of each next 0.1 seconds you interpolate zombie state (position, AI state, velocity etc) from previous known position to new known position
Pro's: very precise trajectories of movement for objects. Good for stuff that has to retain trajectory data (movement data)
Con's: 100 msec + ping msec lag behind their real positions
- Extrapolation - when you predict position of objects by extrapolating their last known state up until the present time. So if you received a packet about zombie position just now, it was sent by server 200 msec ago, you extrapolate what happens to the zombie 200 msec into the future
Pro's: reasonably or very precise positions. Good for stuff that has to retain its positional data (but it will mess with trajectories, objects will seem to move around weirdly if players disrupt zombies and extrapolation)
Con's: can create really unrealistic trajectories due to extrapolation errors
- Hybrid approaches/prediction-correction/whatever - when you constantly predict state of the objects on client, every time a new message arrives from server you set a new goal/velocity that is going to bring this object within tolerance of expected state of the object
Pro's: reasonably good trajectories, reasonably good velocities, any corrections to erroneous data are not as noticeable as they are gradual
Con's: still retain a delay of ping msecs, your object position can somewhat lag behind
UE4 seems to mostly rely on #3
Each of these has a corresponding behavior on servers side
For example, Source Engine uses approach #1 for player positions. This means that all player positions you see in a counterstrike etc game are actually lagging behind. At the same time, when you shoot against a position of player in the past server will rewind game state and confirm that at that moment in time you indeed shot the person
By "past server" you mean the client shoots a player where they were 100msec ago?
Shoot against a position of player in the past, server will rewind game state
You shoot at where you see the player (it's lagging behind on your screen), server applies rewinding to check where you were shooting and what player positions were at the time of your shot, time lag accounted for
Alright, and so if I wanted to try and implement, say method 3, would this be doable in just blueprints?
Method 3 is doable in just blueprints, yup
It doesn't yield reliable data on whether you hit something or no on server - don't use it for player vs player stuff
Basically for #3 you have to check what you hit on client, send that info to server, then to a rough estimate on server whether you could indeed make that shot
For a zombie shooter it should work fine
- will your game be popular?
- are you planning that it will be a game friends play or play with random online people?
If it's not gonna be a massively popular game and mostly friends play it together, then solution #3 is perfectly fine
Considering I've never finished a game, I'll have to go with just a game for friends, but I'd like to aim high 😛
Well, I've never finished a multiplayer game
So from some research, ive read that UE4 already has prediction built into the movement of players, so do I need to do anything?
You don't need to do anything for CMC afaik
Alright thats a bit reassuring, but then implementing shooting is when I have to start worrying about it right?
I think so. I've never looked into making a pewpew game with UE4
The game we're working on has no pewpew
We're entirely reliant on approach #3 - all player actions are predicted on client, all other object states simulate on player independantly of server, but they are constantly being corrected by data from server
So each player see's slightly different world but all players are forced to behave in a way that converges all states to as close to server state as possible
If I want to make Spectators able to do "chase cams" where you can follow a player... do I need to make copies of existing Camera Components for their pawns or whatever and then possess those new components... or is it possible to have more than one PlayerController possess the same camera?
Because my current understanding is that PlayerControllers take exclusive possession of camera components...
well technically, if you only do it in client end
it shouldn't affect other players
to be sure, I would also set camera component to be not replicated
but I'm not sure, I prefer using separate camera actor
Oh hey that's a really good point, I forgot that components don't automatically replicate. I knew that there had to be some really simple solution. I'm an idiot sometimes.
They removed the boolean to conrol if they replicate or not from blueprints or?
Cause I was only able to set that via "SetIsReplicated"
@thin stratus Component Replicates is still there in 4.15
that is correct, player controller only is on server + owning client. Player state is across all though
is it possible to keep a single Onrep function to only run on specific clients (with a boolean set as true)
onrep will only run on the owning client of a player controller if the replicated function is for the player controller, so idk about specific clients but that works at least
it may be possible i just dont know how
Hey i have a question about a project ive been making. i need to connect it to the steam service, do i just change that in the Engine.ini file ?
@twin juniper You could limit it by setting the Replication condition
That got added in 4.14 i think
But the class you have the replicated variable in would still need to have instances on all clients
PlayerController only replicates to owning client as already mentioned
does GameMode NumPlayers include all human players, including travelling players, or just the players that already have the next world loaded?
oh nvm, found it in the code 😛
Has anyone integrated GameSparks? I wanted to see if there was an object I could check to see if the user was already authenticated so we didn't popup the login.
I just finished reading @thin stratus 's networking compendium. Does anyone know where I can find out more about making the multiplayer work in final builds? Because apparently it seems that you can't just give a copy of the game to your friend and have them manually connect to your IP and forwarded port?
I don't see why you technically wouldn't be able to do that, it just wouldn't really be a good solution for releasing a game
i was trying to do it a while ago just for testing with a friend and it absolutely would not work
i never figured out why/how to fix it
it doesnt happen with some other projects though
The biggest help in that situation is usually your logfile
Most things MP-connection-related will end up there
I'm seeing something similar. If I package my game and "open IP" I connect to my dedicated server but replication is broken. If I PIE and "open IP" to my dedicated server replication works. Really confused by that difference in behavior.
Rule of thumb: Do not trust PIE + Multiplayer
that goes a little too far 😛
well true but I'm taking a single-player demo and making it MP
so I went from "I ❤ PIE" to "OMG PIE why do you hate me?"
So the natural follow-up question is: where do I learn how to make a project so that I can give the packaged build to my friend and have them connect to my listen server?
@versed socket The process is called packaging. (google). You would package the game as a development build (not shipping because that removes a lot of useful debug tools, like the console)
After packaging, you'll have the usual combination of gamefiles and exe that you can send you friend
You both need to use that version
Connection is then made through IP, as long as you don't have a subsystem like steam
Make sure you have a console key exposed or maybe even a way to host and connect via IP in your main menu
Either way, Server launches with OpenLevel node and listen as an option, or with console command, open MapName?listen
Client connects with console command, open IPADDRESS
I wonder is this really smart
using OnRep owner only to trigger UI updates on variable changes
afaik, yes this is smart
Although it depends a bit on what you are changing
I always try to set variables like Health on the client too.
So he instantly has updates for his UI. A bit higher ping would result in delayed UI updates
But the OnRep thing is good if the UI doesn't need to update instantly
these column/row fill rules make no sense >_>
why doesnt this work?
@twin juniper what you want to do?
question: how would one trigger a killfeed message
I got HUD message event in controller, damage/death is handled inside the pawn in remote end
trough gamestate maybe?
Hm
Might be worth making a "KillFeedManager" component on the GameState
That simply handles calls from the Server to supply everyone with the killfeed
Server on the Pawn registers if someone is dead and sends the information to the manage
He then turns the data into what ever is needed to display your killfeed and multicasts it (maybe in a struct)
And in the Multicast, the client-side can then create the widget etc
@slim holly
So i traced down a Seamless server travel issue, issue is that the player state stops replicating, or better yet RPC calls can't call from owning client anymore(probably because owning client changes?), I think it may be something to do with having a different player controller/gamemode before travelling. I check the bool if it repliactes and it does, so i'm kind of at a loss here on what to try
Seamless travel has some other things that happen and need to be taken care off.
There are things like "SwapPlayerController" and what not. Moss is still the person I would recommened to ask
I did but he's at a loss
Lost or he doesn't know either?
Loast
Updated the engine now to see if that fixes it
looks like i'm getting further
From what to what engine?
4.12 -4.15
:O
that's gonna break everything
// Note: this is very important to set to false. Though all replication infos are spawned at run time, during seamless travel
// they are held on to and brought over into the new world. In ULevel::InitializeActors, these PlayerStates may be treated as map/startup actors
// and given static NetGUIDs. This also causes their deletions to be recorded and sent to new clients, which if unlucky due to name conflicts,
// may end up deleting the new PlayerStates they had just spaned.
bNetLoadOnClient = false;
Might be worth setting it to false for Seamless travel then again
I really need to look into seamless travel. So freaking bad documented
Though iirc, you had the issue even when it was false
But better set it to false then, at least on the PlayerState of the Gamelevel
RPC works now
After updating?
yeah
is there a more elegant way to do that?
that's in gamestate
And you want to broadcast a message to every player?
every controller
Get players in game state, cast to playerstate of your desire, get owner and that is the controller, cast on those owning clients
at least that's how i'd do it
well yea foreach loop on playerarray is one way
Yeah, then you already have the player states/controllers without needing to find it in the multicast
beginner question: Almost every multiplayer tutorial is with integrating steam ... so for example when I test my game in editor with dedicated server will it work when i setup my own gameserver later ? ... just wanna start with multiplayer, but I am not sure when I follow the tutorial from epic if i will be able to use the same logic later for my game ^^ ... hope it wasnt too confusing what i wrote
Hm
Yeah, in theory you can develop your game with the "fake" Dedicated Server from the Editor
But PIE (Play in Editor) has hickups with Multiplayer, as it's mostly simulated under one process.
So you should normally, from time to time, start your game as two standalones and test it then (rightclick uproject file -> launch game)
"Problem" with Dedicated Server is, that there is easy button to press to start it.
My compendium (Pinned to this Channel at top right pin icon) lists the command line arguments you can use to start a Dedicated Server of your game
In the end, when you want to actually HOST the server, you need to download the Source of the Engine from Github
And compile your Dedicated Server with that, as the Launcher version of the Engine does not support that
But that's a late state, as long as you don't want to test the Server
IF you want to test the server more often on a different computer that doesn't have the engine installed, then, of course, you need to compile/package it
I guess PIE "dedicated" is good enough to check does the game logic work
It really depends
The command line to start a dedicated server would be something like this
start /d "%EnginePath%" UE4Editor.exe "%ProjectPath%\%UProjectFileName%.uproject" %MapName% -server -game -log
That's from a bat file I wrote myself
The %% are variables which need to be filled with the actual path etc
ok thank you for the fast answer ^^ ... I will look at the pinned post and i need to have the port 7777 opened ? will it work for android too ? mhhh ^^ hope most stuff will be logical when i tried it the first time
No idea about android
Might be that android can connect to the Server via IP
But it depends on what your game later has
If you want a Server Browser, then it could get a bit ugly with android
as the GooglePlay Subsystem has no masterserver
afaik
mhhh sadly there arent many informations about that topic tbh i didnt even found a single really helpful site how it will work without steam, but thx for the answers ... why would u need ipv6
because I can't get public IP from ISP, however they do support ipv6
@thin stratus have the player press a button that tells the server to do a line trace and teleport the player to the hit location
And what exactly is not working
It's just not doing anything if the client pushes a button. Server works fine. Client nodes execute and the line trace & teleport both return true.
Does the RPC reach the server?
Yeah
Hm
Movement is probably not replicated on a Pawn
Cause of no MovementComponent
Try to multicast the location update from Server to clients
Would adding a movement component help?
And set the location update on the owning client (The one that presses the button) directly, in addition to the RPC
Maybe
But that's overloading it
You don't need it
KeyPress -> LineTrace -> SetLocation -> ServerRPC -> Multicast -> SetLocation
That might fix it
Got it. I'll try it when I get home in a few hours
Thanks for the help!
I know that from 4.12 - 4.13 migration when they switched over to plugins for the subsystems that I had a couple of projects that "corrupted" and didn't allow for clients to fully load into servers anymore (replicated actors don't load, they possess a pawn but are left without Beginplay being called floating in midair uncontrollable). Has anyone had this happen in 4.15? I had a project recently break again like this.
brand new projects with the exact same code and ini files still work fine....
amazing, server getting access none on gamestate >_>
Is it on BeginPlay? That's probably too early for it
like half a minute into gameplay
PIE:Error: Error Blueprint Runtime Error: Accessed None trying to read property Controller from function: 'GetPlayerName' from node: Return Node in graph: GetPlayerName in object: RecoilChar with description: Accessed None trying to read property Controller
on listen server, function inside character, cant find controller
amazing
by adding another layer of valid checks seems to fix it, but it's still returning valid controller on first run
Hmm I think I might end up doing something like Rama's solution for multiplayer physics just to reach a prototype stage and get some more Unreal C++ experience. Networking is kind of holding me back in development right now.
I don't want to start drafting a bunch of stuff without networking in mind only to have to rewrite it all.
Already close to the same point I stalled in Unity, only this time progress is actually possible xD
Can anyone help me with deciding what type of multiplayer my game should be if i list some features i would like, Direct Message me if you're willing to help with this 😃
@rancid nimbus - just list it here - what you got?
a 3rd person Hack n slash, i want the multiplayer but not sure if it should be mmo or less multiplayer than that xD
i want to have Missions that can be 1-4 players and pvp tournaments sometimes that would be 5 per team kind of thing, i would also like to implement some world event type things but not sure if that would be strictly an mmo thing or not
well it depends on the missions and the CARRY OVER state of your game - will these missions be logged/saved and carry over into future game sessions?
if so - some database needs to happen. if this is going to be a LIVE SERVER (on 24/7) then your infrastructure needs to be a dedicated server - more than likely holding a database table externally to contact to save state of these missions your talking about
you can still get by with a Peer to Peer (P2P) infrastructure - if youre just going to be saving match history & mission status - you can still talk to a DB without having the dedicated server
but if its goign to be an open world - where people can come and go into the world as they wish... then yes - you'd need a dedicated server
i would like available missions to depend on the world state kind of thing, so you could potentially get the same mission twice if for example it was to clear some predators from a nearby area then they might come back and you can do it again, but i dont want it to be always there (hope that made sense xD)
thought as much
thanks 😃
oh is real time combat tough on mmos? i've only really played mmos where everything is global cooldowns and stuff
your design is yours - own it & program it!
In a multiplayer networkign schema - you have to count for lag & not everyone seess everything THE SPLIT SECOND something happens
theres methods to play the game "IN THE PAST" - a few frames ago
when i first started networking - i read a post about this very topic... was a very interesting read
fair enough 😛
atm im on my own with this project and kind of new to game dev at all so only bp xD but kind of just making what i can and building the picture of the end result in my GDD 😛 Thanks for your help ^^
if you have generic idea how quantum states work, you should have no problems understanding unreal networking
/s 🙃
in which case, just set everything to replicate and it will both replicate and not replicate.
hehe no idea tbh but its likely it wont be made until i have more people and hopefully at least one will know more about it xD
its odd that you would make a multiplayer game first tbh. I have worked on 3 released titles and dabbled in a dozen prototypes and I still haven't touched multiplayer ;p
its the one project i really want to make but unlikely to be my first release 😛
I have a dream project that I am chasing. I won't start it until two things happen. 1. im confident I can make it (which I can) and 2. I get the licensing (which I can't).
and not only the complexity - but your infrastructure and $$$ to even have the project working is greater
server hosting for one is otrociouis
thats why if you can leverage P2P its a better approach
i had thought of that but cause of some of the features i want it wouldnt work 😛
it very much still can - i dont think you fully understand the power behind a simple web database
(just to be clear, Dark Souls is P2P right?)
P2P is terrible though
how do you figure?
bad connections,. ISP traffic management spoiling it.
true - but you're also looking at a infrastructure requirement for the game type you're building
why would you have dedicated servers for a Call of Duty style game?
on most UK ISPs you would be throttled to extreme amounts. It's a scam if you ask me
the price to run these server instances alone would be ginormous!
well dedicated = less cheating if you setup right. Also means games are always available even for those with a bad connection.
price is more a thing I would let the investors worry about
but when your @rancid nimbus with no investors and starting up - thats not an option
😄
well he might put together a boss prototype and get a million quid on kickstarter :p
i wish xD
and dont let me scare you off Ikaruza - MMORPG servers - your looking at some pretty above the average programming thats going to be needed
good thing about player hosted games is that the online experience doesn't vanish after 1 year if the game wasn't a big success :p
(didn't read anything what this was about)
I guess that's one upside but then game devs that abandon multiplayer support could also release the dedicated server for use :p
Backend development alone is its own entity - not even closeley related to what we do here in UE4
question: PIE does trigger EventPostLogin for listen host too?
it doesn't
that's dumb
or maybe it does
session / match based multiplayer is pretty easy
maybe 3x more complicated than single player
persistent worlds, mmos, that kind of stuff is where it really spikes
@slim holly - in my testing - i've print stringed EventPostLogin() and see it fire all the time in either PIE or Standalone - the only benefit to Standalone that I see is that you get to utilize Steam API in effect
apparently it happens so early for host it doesn't log it
I added 5 sec delay to it and now it shows host logging in too
Anybody know why a LAN game won't connect on the same machine with Steam Subsystem?
Apparently.. OSS: Invalid session info for session Game in GetResolvedConnectString() is my issue -.-
Any idea if it works with Null subsystem? That'll do me fine for now
actually you might not be able to do it at all, and it might
I was able to get it to work by playing in editor and in a built version
the editor version didnt have any steam stuff though
i think standalone + built version worked as well but i dont remember
I'll try with the null system and see if that works first, annoyingly have to package game again though sigh
I'm guessing Steam doesn't allow a player to connect to themselves
yeah its about like running 2 games at once or something
and game sharing concerns i guess
Im pretty sure null subsystem is how youre supposed to test though unless you make a new account on another pc
@chrome bay you can't test steam on the same machine
It should tell you in the log of the second instance
You need 2 pcs or some virtual machine
You also need two steam accounts
At least that is what i experienced
You cannot test steam on the same machine
Also, has anybody had an issue with replicating functions to the server in 4.15?
I haven't seen anything specific to 4.15 so far...what type of issue are you having?
Everything was working fine in 4.14, but after updating my events that got called to the server just don't get called. The person calling to the server is the owning client too.
Have you tried doing a full clean build on that project specifically, and possibly trying it on another 4.15 project? I would think the issue would lie in the upgrade rather than 4.15 itself
It's weird, upgrading in-place doesn't really seem to give catastrophic failures often, but just really weird stuff happens
Right, I have never had an issue with upgrading before. I will continue looking into it and get back to you on it.
hey folk. Broadly speaking, is there a way to receive HTTP requests?
Broadly speaking, yeah
I think there's already a built-in thingy
oh ok
Va rest can send them
Not sure about receiving
Unless you use web sockets or something
oh I'll check out Unreal's websockets
An initial connection would need to be made first
looks like I need to setup a server
To put the question into context what are you using it for?
Doing some VR demos and I want to trigger certain events via a web browser button.
Simplistic, but I find standing over a keyboard and hitting a button can be distracting for client pitches.
One way to do that, would be to poll a specific endpoint
Every x amount of seconds
To see if it changed
Sweet 😃
struggling with blueprint multiplayer pawn possession, can anyone give me some pointers?
yeah, i tried that- a lot
server only rpc onPostLogin
the server can control its pawn, and sees the clients pawn. the client can see the server pawn and its own pawn, but can't control its own pawn.
hm
#rubberducking
gonna go try something xD
are you sure it's and possess issue and not an input issue?
i may be wrong about what the actual problem is. so i'm looking at the blueprint, and i do see the input being fired
it's as if Directional Vector doesn't get set
when the client does it
that's because only authority can set variables
client can request auth to change the variable
but cannot modify it directly
(if it's set to replicate)
should i try putting a server side rpc between the input and the variable set?
or use the default movement input node that is already replicated
the server now sees the client pawn move
but the client doesn't
do i need has authority + multicast?
am i thinking about this the wrong way?
is the actor set to replicate?
@uneven marlin have you checked if your client has owner ship when u press w?
this way?
what prints out is: "Client 1: " <- blank after Client 1
so the owner isn't set correctly
could that be the problem?
game mode:
controller:
I recommend doing the spawning in gamemode, possess using the controller pin from postlogin
no replication required
okay, 2 sec, ill try it
also no auth check required in gamemode, it doesn't exist on clients
didn't know that, thank you
same result. client pawn only moves on the server
owner is still blank
ownership isn't really a dealbreaker
so, i verified that the direction vector is actually being set on the client
it is
gonna check my movement function
osht
hm
so i'm moving my pawn with AddWorldTransform
AHA
i wasn't multicasting my move
😤
is that the correct way to do that?
probably, I haven't done custom movement system for multiplayer
oh man
thanks so much you guys
5 days of banging my head against the wall
learning is so much fun 😉
😄
Who knows why always if I create a server session I find no server
I use steam with advanced session plugin
I try it now with 3 Friends and 5 different pc's
But nothing
what engine version?
4.13
yea I had issues with 4.13 and steam integration too
My log showes SessionInfo: HostIP: INVALID SteamP2P: 76561198014971980:7777 Type: Lobby session SessionId: Lobby [0x1860000B7ED9D14]
have you tried enabling/disabling p2p?
No where I can do it
engine ini
it's under the steam settings
wait, I guess that doesn't affect the server browsing
In my browsing log seems all OK because it shows me that he found couple sessions
shows sessions in the client hud or in the log?
Log
you have your own steam app id or are you using 480?
480
well 480 is for testing purposes, its gonna always find sessions
and write them down in the log
Yes but it shows me that my BP it working ;)
well no, unless you're actually receiving session list inside the client
did you remember to use FindSessionAdvanced node?
I would still recommend using default create/find sessions until you're absolutely 100% sure it works
Ok ..
Advanced session node is only beneficial when you start to filter out sessions
da fuq steam
LogOnline:Warning: STEAM: Session Game Already exists, can't join twice
waow that's one dumbass bug
so joining session is bound to OnPressed
but it triggers twice on touchscreens
which then causes joinsession to be called twice
resulting 100% fail rate
well, good news is that NAT punching seems to be finally working correctly
disable the button after the first click?
yea did a timed gate on it
I was under the impression it would have been blocked by the steam subsystem like it does for the refreshes
Refresh does do that either, does it?
I disable buttons that have latent actions always to make sure i don't call it again
Log shows it blocks refresh on get sessions if you try to call it before it's done
right, so on to tackle the issue of replicating 5,5million floats
Are you compressing it?
whats the precision requirement / timelimit?
compression isn't going to cost you there
it will only help
do you need full float precision though?
can get it even smaller otherwise
ah, whats your min / max values
where are you getting 5.5 million from then
all blueprint?
hmm, never heard of such
not aware of a rot version in blueprint
though they pack rots to shorts in code fairly often
I could squeeze that into normal and degree
there is a quantized normal as well
is this a voxel attempt btw? from the sounds of the data it seems like it
similar idea yes
because you can get far smaller sends if you do Run Length Encoding of block type, from a stepped location you don't actually need to send the actual location of a segment
if it has a local offset you can use smaller positions
generally in anything that has a set increment like 1m you shouldn't need to send the position of each element
since you also know the total map size
it is clustered with origin location and I can convert it local/world position
one cluster is 125m^3
sending it as local and doing a net quantize10 or 100 would save you a ton of memory
but do they ever go offset from on even meters?
or are they guaranteed to be even meters located
because map building takes in world locations
yeah but you have cluster locations correct? to act as a base point
yes that is stored too
and are they evenly metered to that cluster?
ah, so you don't need to store locations at all for the elements
ye so the real world value will be like half of the maximum filesize
you just store the cluster location, everything within that cluster is snapped to a set grid, so you only store whether it is "full" or "empty" and what it is
that lets you do Run Length Encoding on it
and get your total down to like 1/50th
or less/more
depending on variability and density of data
RLE should be fairly easy to implement in blueprint
I see
this should be doable
if I clamp the transform rotation in 5 degree intervals, I could save another 3 bytes per element
when I was playing with replicating my voxel plugin I had a world many times the size of yours, and before splitting it was 11kb, and I thought that was too large at the time.
memory management is very important for things like this, if you get the base memory efficient than all of the other operations work better, from editing / changing and replicating those changes, to iterating over it, to sending the entire data structure.
well....that 11kb was 117,964,800 voxels though, you should be able to get far lower
oh yea that calculation was before RLE
so it can and will be lower
I just do worst case scenarios
is your rotation full 3 axis?
would think that yaw and maybe pitch would be all you would need
depends obviously, don't know why you are storing rotation to begin with
because the building parts are not just blocks
if you can get 255 steps of rotation and do a byte per axis you would save a ton
then you aren't storing location unless you need offset from 1m, and your rotations are far smaller, its just up to the data then
Maybe sending a packed quaternion would be better
a 24-bit quaternion
only XYZ, you can recompute w from normalization
504 bytes per full cluster, don't think I can go lower
-4 if I drop the cluster int and rely on logic
yo I got steam multiplayer working, but when my friend joins the test lobby my camera/controls detach from my actor and get stuck like this
my friend sees me as this:
now I know vehicle replication is working because when he moves I can see him moving
but idk why my camera randomly detaches
and controls
Is that camera at your (0,0,0) location when it "detaches"?
I ran into that once by accidentally trying to call a multicast RPC on a PlayerController, though I'm guessing other things could call it in MP
usually happens when your pawn gets de-possessed
generally its the other way around though, forgetting to turn off Auto Possess on player 0 and clients get kicked out of their pawn on connect
@heady merlin hey that's probably it, I'll try that when I get back!
hey, anyone has some experience in getting dedicated server listed in steam in unreal?
I have a running dedicated server, which seems to work so far (i can connect to it via Direct connect). If steam is running, direct connect is not working anymore, but the game is not listed when using find sessions
afaik steam doesn't support direct connect, at least I'm not seeing traditional IP addresses in the log
also is your dedicated creating session automatically?
oh by the way, i see that i have actually to publish the policies changes to steam (which i didn't so far)
let me try that first ^^
alright, it is still not working as intended, too bad...
well @slim holly uhm... i'm using the plugin Advanced sessions
and there i have a special dedicated server map, which will select a random map, will create a session (CreateSessionAdvanced) and will open the selected random map
Thats what will happen on the dedicated server
so, if steam is not started on the server machine, it will create some kind of lan session, where i can connect to using direct connect (Open level with the ip). If the steam client is started on the server machine, it is not possible to connect to the dedicated server anymore (no direct connect and no session found)
Only thing i figured out is that if i add the server ip to my favorites in the Steam server browser, i will get some server informations
As far a i heard, it is not required to run steam client on the dedicated server machine to list it on the steam master server, but i have no idea why unreal requires it
well it can't use steam api if it's not logged into it
Alright i got it listed on the Steam master server
needed to forward port 27000 - 27015
Eeehm
Weird that this is working without the pullRequest
Dedicated Server + Steam is meant to be broken
Because it's not actually registering the Server. Are you sure that you are not just seeing the Server cause of your LAN?
Well the pull request is actually intended for the authentication
Yeah, well yeah, but afaik that covers the listing too
well, i just added the real internet ip instead of my lan ip
there are many many steps until it is working, its pretty unintuitive
Hm, well, I would try to find the Server from a different machine outside of your network
oh well, thats a good suggestion
When i'm done so far, i will do a linux version and put it on the online server for our website
hmmm, i still need to get the listing working in my network first (why should it work outside, when it is not even working inside)
Anyone know what is going on here? i dont get these errors unless i run my dedicated server.
hmmm, looks like BeginPlay is being called too early?
there is nothing in blueprint, its only running c++ lol
but editor says nothing, only when i run dedicated server
by the way, in my case: the dedicated server is not listed in the game when steam is running, finally! BUUUT... its pretty unreliable, sometimes its there, sometimes not
Do you use the dedicated server in editor, or do you build the dedicated server?
its a built server
if i run dedicated in editor i dont get that error anywhere, only when i run teh built one
alright... did you check the Server Default Map (Project Settings/Maps & Modes)?
maybe the server is starting with some weird map causing that issues
no the server starts fine with it
runs fine
i just dont like errors
this error in 4.15.0 that still runs might lead to it not running in 4.15.1
Well looking into your error log, you have an AISpawnVolume somewhere in the level
this one is causing the error, seems to be at least
cannot say what you have there exactly, but you probably should take a look there
i have that actor yes, it spawns AI, the BP is nothing more then a BP version of a c++ class. Nothing in it. Everything is set and run by c++.
i think i found it
Super::BeginPlay();
was in BeginPlat() twice for some reason... wonder why editor says nothing about htis
ah okay
@sonic heron i found that too when i just did a google on Super::BeginPlay();
to see if it was supposed to be at start or end. But i thought it was a multiplayer thing since the editor gives no errors what so eve. only when built dedicated server runs
was just scanning begine play code and caught it in there twice.
Hey guys, looking to do a prototype multiplayer game with 6 people. relatively experienced with Unreal, but haven't touched Multi
Anything I should look out for that's not in the offical documents that I should be aware of?
hey @glad sedge, this may be interesting for you: http://cedric-neukirchen.net/Downloads/Compendium/UE4_Network_Compendium_by_Cedric_eXi_Neukirchen.pdf
@thin stratus Pull request is for identity so the server can validate clients, without it clients can't be validated as actual owners / can connect with pirated versions
Actually finding the server itself has been possible for awhile now
That being said, between audio component lock downs, no identity integration, flag identifiers being too long, and a few other reasons that have persisted for almost two years now. Might finally just be time to make an AdvancedOnlineSubsystemSteam and integrate all the fixes into it......
Oh, default nodes still can't see dedicated servers though, they don't turn off searching for presence so it only looks for lobby hosts.
I'm talking about C++ Session creation anyway
As I don't take the plugin into account
And I was really sure that the Dedicated Server listing doesn't work without the PR
As multiple users said that they can't see their server + the thread on the forum about exactly that
But if it works the ngood. Then I don#t need to tell people that the PR fixes it
yeah, but now i have the next problem here
how to create multi instances on that one machine, which are all listed?
I was referencing you talking about Kuchen
The PR is still pretty vital for proper dedicated servers though
Kuchen have to use different listen ports
Also anyone complaining about not finding the servers either has the ports closed, or is defaulting searching with presence to true.
Wouldn't presence crash the Server anyway
talking about searching though, the steam subsystem branches off of the search flag. if its set to search presence it looks for player lobbies, if not, it looks for servers
they are two different calls in steam SDK
I know, but the presence bool when calling RegisterServer crashed the server in the passed
At least i think that it did
No about about doing that in blueprints as register server is not exposed to it
probably still does, but clients can still use the flag seperatly
@heady merlin, alright, i double checked: The router is forwarding port 7777-7780 to the server, both, UDP and TCP. For starting the server with the specific port, i use the command line -port 7777 for the first instance and -port 7778 for the second
but steam only lists the first started one
no matter if i start with port 7778 first or with 7777
Is there any tutorial about sessions?
@prisma lion, there are, kinda... its a little bit tricky and the whole setup process of dedicated server for steams in unreal seems to be... work in progress
Also how would I save multiplayer data? Pass everything to php/mysql ? Or write some custom c++ code to save it locally on server maschine?
well seaching for multi instances of dedicated servers for steam in unreal 4 are apparently already too much things
google can't handle it or lets say... its too specific? ^^
you mean persistent multiplayer data?
Yes, like level or something like that
uh, you can save it in a database, or in a file, its pretty much up to you
Kuchen I was living in Hamburg for a while 😛
Now Colonge
well nevermind
all right
its even possible to save it through blueprint in a save file or something
should work as well on a dedicated server (right?)
and for player data, if you have a steam only game, you can use the steam cloud through the web api
so you where living in hamburg, how do you know i'm living in hamburg? ^^°
Quick checked your steam profile
Ah okay, are you german then?
hehehe, me too, but owning a company shifts the time... a little bit
alright, i just figured out (by compiling the development version of the server instead the shipping version), that no matter what command line arguments i use, it always listen to port 7777
uh what... how to change the port correctly?
Config file has that set for the subsystem
Engine.ini
Gl
Check any of the tutorials and they should list port settings in defaultengine.ini
I gotta log for the night though.
yee
i got it working 😄
for steam you actually have to set ?port and ?QueryPort
... my brain
Anyone know why this would be displaying 2 debugs? Its on a volume that is placed on the map before run time. It has an authority check so i would assume it should only display once.
void AAISpawnVolume::OverlapActor(UPrimitiveComponent * OverlappedComp, AActor * OtherActor, UPrimitiveComponent * OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult)
{
if (OtherActor && OtherActor->Tags[0].ToString() == "Player" && HasAuthority())
{
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("Player Entered AI Spawn Range " + OtherActor->GetName() + " Tag " + OtherActor->Tags[0].ToString()));
PlayerInBounds = true;
}
}
@dawn glen maybe you got two overlaps?
@fierce birch dunno why i would, just have the one volume and it ALWAYS fires twice when i enter. It isnt the end of the world since it only sets a bool true, just dont understand why
Enter Triggers twice but exit triggers once.
just threw a check in so if the bool was already true ignore everything
no more double
I already wrote this in #virtual-reality, but I guess this also belongs to the multiplayer-section: I again have a question about VR Replication. I managed to replicate the current position from the client to the server, both are HMDLocomotionPawns. So when the client moves, then the HMD model and the controllers can be seen by the server, which is fine. But the client is not able to see the server's movement. The client only sees the HMD model pinned to the ground at the location the server recently teleported to. Can you give me any advice on how to fix that?
https://gyazo.com/e7c6a8be9ddac64b65f885bc6eb0290b This is how I set it up
@prisma lion Come over to Dusseldorf (: say hi at our ue4 meetup
Do I need to use "Switch Has Authority" inside of my pawn to make this work correctly?
@twin juniper so that function on the bottom is in your GameMode? Although it's marked as multicast, the GameMode only exists on the server, which would be why the server can see the client move but not the other way around.
Personally I would just keep this logic on the pawn itself so it can just multicast on the pawn
@brittle sinew I try to do that but I'm not sure if it works right now, because I'm now busy setting up my second pc for testing
Cool. Also, are you sending this on tick or at least sometime regularly? Transmitting an RPC on tick with three transforms might get really expensive
I don't have hard numbers or anything to where it stops working, but sending three large structs on tick probably isn't the best practice
I sent it on tick and on teleportation, but I think that doing that on teleportation as well is not necessary. I do this just on tick now.
https://gyazo.com/aa4a8a5e1a1d33af0f45cce1d064f705 Here is my "on Tick" sequence which I changed to make it work inside of my pawn
https://gyazo.com/5c610bc5b428d4b3b88905b15c95a3ec and those are the custom events I fire
@brittle sinew I reduced the transform struct to 3x vector and 3x rotators, because I don't need the scale, so I guess this helps
Yeah that's probably good, I would just be a little careful going forward, especially when you get to the point where every client is receiving multiple multicasts of that per tick
Might have to end up reducing the update rate
My Tick rate is set on 0.01 so it can do a maximum of 100frames/ticks per second.
but why would there be multiple multicasts? Only the server can multicast, so I think this only happens once per tick
Yes, but if you have more than two people in the game, the client would be receiving it for all other clients per tick
really? This multicast happens on the server when the server owns the pawn, which it does, so it only fires once per tick. The clients do not have authority but own the pawn and therefore fire the "run on server" event once per tick. So I have 1 multicast and n-1 "run on server" events where n is the number of players, or what am I missing?
The multicast runs on every client, for every client's position
So with 4 clients, the server would be sending 16 multicast RPCs total per tick, and each client would be receiving 4 + the server per tick
@brittle sinew but why does it say that this only runs on the server? The clients are no servers so why should they send the multicast? I get that the multicast is send to every client, but that doesn't mean that every client is sending one.
Hmm I'm confused. There is only one server and therefore only one server pawn which could have authority. So this exec path is only run once per tick. The clients pawns do not have authority and therefore have to go the remote route. I feel that I'm completely stumped right now and I want to apologize for that.
I didn't recognize that you changed it away from a multicast in the second set of screenshots, that's my bad, I didn't see the second event on the right side. So now you're just sending the client information to the server, how will clients know about each other's position?
(I was still going off of the first screenshot where you were multicasting, and didn't pay attention to the change D:)
yeah the both events are kind of identical but they need to be two separate events, so I kind of need to duplicate them, which is kind of annoying
I guess that other clients will know about each other when they send their location and rotation to the server and the server runs the replication.
But currently I don't have 3 VR sets to test that out. This may be interessting later. For now only having 2 VR players working is totally fine to me
Hey guys :), I'm having an issue where in I can connect to a created lobby, but the client who connects loses his character seemingly. When the host closes, the client regains his character.... does anyone have any ideas as to what is happening, because im at a loss 😄
@wise bridge had something similar i guess: auto possess?
@thin stratus where and when 😛
Our next one is already on this Friday (3rd March)
Wait a second
But i'm a beginner tho, just startet to learn things
We mainly have beginners/artists, that work with Blueprints + some more advanced people
And the next meetup is a social one, means we just drink beer, eat something and chat about UE4 or other things
We even had someone who wasn't a gamedev at all last time. He just came along his friend to listen to some gamedev talks for a change :D
Oh thats sounds cool, maybe I can motivate my friend to come with me 😄
Sure, bring as many people with you as fit.
Just make sure you RSVP on the meetup page i send you
And your friends too. So we don't have an overbooked table at the end :P
Just checking blablacar atm 😉
should I use NetQuantizeNormal or 2 bytes for rotation replication?
local rotation that is, so -180 to 180
@twin juniper I don't know, I don't think it is! 😦 the setup I have right now is two characters in a test level, one is player0, the other player 1, I run the project from a shared directory so I can run a Default?listen -game on one machine and just the Default -game, on the other.
and my character has this set up for replication currently...
This is from the parent BP which the two characters im using are derived from.
Wouldn't that remove replication for everyone else than the owner?
Are you spawning the Character with the PlayerController of the Client being the owner?
Im going to go with - I dont think so :D. Would it help if I explained the procedure im going through? 😃
@slim holly never did ask you, are you supporting full 360 rotation on the grid? or is it like the 4 cardinal directions?
@thin stratus This is the setup 😃 one is set to posses player0 the other player1
AutoPossessing?
Is that actually working with networked Multiplayer?
I thought the PlayerController IDs are for couch coop when one Game has more than one PlayerController
PlayerController 1 in a networked game should not be the first client
I can connect to the session I make.. the client can see the host moving, but the client loses his the ability to move etc? Im a bit of a networking scrub lol.
shouldn't auto possess anyway, manually assigning pawn possession is more robust
The thing is, PlayerController0 is the one of the Player you are playing with
PlayerController1 is technically nothing in a networked game
Unless you have two players in front of your PC that connect
Then PlayerController1 would be the second local player
Right okay
Something like Rocket League, where 2 Players connect to a game from one Playstation
You can't autopossess
Here
Use the GameMode event "OnPostLogin"
That gives you the PlayerController of the connecting and accepted Client
Spawn him a new Pawn or get the placed pawn
And posses it with the passed PlayerController
I shall give it a go 😃
cheers
@heady merlin idea was to make rotation from yaw value around normal, but 1 degree accuracy is fine
I figured quant rotation is about same amount of bits than using 2 bytes
@thin stratus something like this?
Yes and no
You still need to call possess
And select a class :P
Possess is a function of the PlayerController (Controller)
lol, I just wanted to be sure 😄
And it takes a Pawn
okay 😃
Which is the ReturnValue of your Spawn
I need a target apparently?
would be the new player
Yes? XD
@thin stratus Like so?
Yes
That spawns a new Character and possess it for each new player
Now you could write yourself a way to get actual spawn points :P
Awesome sauce 😄
So they don'T spawn in themselves
With your current Spawn Method (collision), it could be that only the first character gets spawned
its for a vr character so im not bothered about collisions between players 😃
Not in this case atleast lol 😃
You could make a boxing game where camera is attached with physics constraint spring, and you need to punch it until opponent throws up from motion sickness
Cool! It works, now I just need to get the replication working 😄
@thin stratus Thanks dude 😃
why the fuck does my vr replication not work.... this really is getting on my nerves....
I test on tick that my pawn has either authority or not. That works... The client can see the server's pawn but the client's pawn is all over the place and I don't get why....
According to Replication. Is there any reason to check sweep or teleport on "SetWorldLocationAndRotation"?
@fierce birch dont even know what that is
ok, then it's probably not enabled
Can someone tell me how to do vr replication without a plugin?..... I can either let the client see what the server does or let the server see what the client does, but I can not make both of them see what each other does....
okay... or different question... why do server and client have authority over the pawns?
Isn't the server the only one with authority?
Does this happen because I am multicasting information?
@thin stratus So the player spawns in, but doesnt actually possess the character im spawning? I setup an on tick to print if it has Auth or Remote in the character im using, As expected it prints Auth when the client starts, when it joins the session however, it stops printing completely.... I am confused 😃 @twin juniper I am pretty sure I am going to be running into that issue to at somepoint! 😄
@wise bridge this really gives me pain in my brain...
I know the feeling lol
this is so absurd.... one way is working... the other way is working... but why the hell not both? And I don't get where they would cancel each other out
Dunno 😦
@wise bridge Hi I also want to spawn a player, is on post login called after the player login in a login system like Steam?
I wish I were as knowledgeable and experienced with UE4 as exi
@versed socket Same 😄 My game would rock
@prisma lion Yes I believe so 😃
Though if you want a more definitive answer, I would wait for someone more knowledgeable to come along 😄
Session handling trying to figure that out -_-
@twin juniper you'd have to give a little bit more information on your general flow. For VR pawns, where a proxy isn't setup automatically, you would probably just want to use "Is Locally Controlled" to check if you're controlling the pawn on your client/server, then if so, multicast your position/rotation update right there on the pawn
You would go Client/Server -> Server RPC -> Multicast RPC
@brittle sinew in PM with him helping him figure it out
Ah, alright
@prisma lion post login is called on all subsystems
aight
Ohh I have to remember that
My idea for spawning player is like > On Postlogin > Get Steam id> Spawn Pawn > Controller = Steam ID
what is the point of the steam id there
How else would I set the pawn to the new joined player
it passes in a player controller on post login
Well SteamID and PlayerController is nothing you can set equal
You would only need the ID if you have saved some kind of selected Character in an earlier level, like a lobby
And then you would rather have code that gives you the SteamID of that PlayerController and find that in the list of SteamID <-> Character
I wouldn't say PostLogin has anything todo with the Subsystem as PostLogin is called in general when a Client/ListenServer gets allowed by the Server
That's not really connect to the Subsystem
Though I assume a rejected join of the subsystem would happen before PostLogin gets called
Thanks !
oh dear, this is really hacked together solution for map data synch
server writes a repnotify variable on each tick, clients compare their map data to that variable and do updates
just send changes...
on top of those yes
but there's already x amount of data before client joins
need to look into system where client asks for specific cluster data
Anyone integrated with gamelift yet?
Going to have a play as I need a dedicated server solution
on reasonable scale, how high can controller NetUpdateFrequency be?
OnPostLogin doesn't get called from travveling right?
so if i wanted to set someone to bIsOnlySpectator for joining too late (once lobby goes to diff game mode) that's the best place right?
🎉 LogBlueprintUserMessages: [LevelActor_C_0] Client 1: Sync done in 33.805267 seconds
no I'm not even capping the bandwidth yet
I need to fix the RLE functions, way too heavy for BP
oh that time is 50 clusters per request
Anyone know why this is happening? are people trying to connect to my server that isnt advertised to anyone at all?
[2017.03.02-16.02.49:659][828]LogNet: NotifyAcceptingConnection accepted from: 187.177.46.145:58828
[2017.03.02-16.02.49:659][828]PacketHandlerLog:Error: PacketHandler parsing packet with zero's in last byte.
[2017.03.02-16.23.56:338][ 76]LogNet: NotifyAcceptingConnection accepted from: 187.177.46.145:58807
[2017.03.02-16.23.56:339][ 76]PacketHandlerLog:Error: PacketHandler parsing packet with zero's in last byte.
[2017.03.02-16.32.42:299][967]LogNet: NotifyAcceptingConnection accepted from: 187.177.46.145:54631
[2017.03.02-16.32.42:300][967]PacketHandlerLog:Error: PacketHandler parsing packet with zero's in last byte.
[2017.03.02-17.32.47:101][819]LogNet: NotifyAcceptingConnection accepted from: 187.177.46.145:65490
[2017.03.02-17.32.47:101][819]PacketHandlerLog:Error: PacketHandler parsing packet with zero's in last byte.
[2017.03.02-17.33.40:166][422]LogNet: NotifyAcceptingConnection accepted from: 46.227.176.35:65494
[2017.03.02-17.33.40:166][422]PacketHandlerLog:Error: PacketHandler parsing packet with zero's in last byte.
[2017.03.02-17.34.30:504][942]LogNet: NotifyAcceptingConnection accepted from: 46.227.176.35:53875
[2017.03.02-17.34.30:505][942]PacketHandlerLog:Error: PacketHandler parsing packet with zero's in last byte.
[2017.03.02-17.37.28:973][332]LogNet: NotifyAcceptingConnection accepted from: 50.157.21.171:52318
[2017.03.02-17.37.28:974][332]PacketHandlerLog:Error: PacketHandler parsing packet with zero's in last byte.
[2017.03.02-17.37.33:754][476]LogNet: NotifyAcceptingConnection accepted from: 50.157.21.171:56923
[2017.03.02-17.37.33:755][476]PacketHandlerLog:Error: PacketHandler parsing packet with zero's in last byte.
[2017.03.02-18.19.17:838][ 94]LogNet: NotifyAcceptingConnection accepted from: 46.227.176.35:64250
[2017.03.02-18.19.17:839][ 94]PacketHandlerLog:Error: PacketHandler parsing packet with zero's in last byte.
[2017.03.02-18.57.05:152][557]LogNet: NotifyAcceptingConnection accepted from: 47.148.196.204:63534
Well they are the usual ports you see when someone connects to you
The port on remote system can be pretty random, but it's in the upper 50,000's
or around there
Dunno why they would be connecting to my ip lol
Improbables SpatialOS SDK is out for Unreal. Can't wait to get home from GDC and test it
for a DedicatedServer build - do i need to do what they do in shooter example - See if pawn is valid - delete it if not and spawn a new one? All pawns should be locally controlled as no client comes in as server right?
Reason I ask - i'm tyring to troubleshoot why anyone that is connecting into the game outside of myself is disconnected almost immediately
guys, a spectator should have a player state right?
Clients are assigned an Playerstate when they connect. Spectator class is just an Pawn
welp, map downloading confirmed working in online match too
however, the download time is still tied to performance
at 15fps it's still gonna take about 40sec
without overhead, 3sec
Does replicate movement work with simulate physics or do I have to do that manually?
@twin juniper in my own past experiences - any physics simulation is not a part of the Character Movement component - which is replicated by default... so yes you hav eto do it manually.
Actually these are for actor blueprints, but gotcha, thanks!
Hey all, after updating to 4.15, Character Movement is extremely jittery on clients. Any advice?
The movement was/is very smooth on 4.14 :/
It's almost as if the server is trying to push the player back when walking
To clarify, this jittery movement only happens when connecting from another network, playing on localhost is fine.
Well, seems like it's not only the CharacterMovement. Also some variables randomly stop syncinc with the server. None of this happens with 4.14, though.
@bronze lava I'm having same issue but only on built clients. In editor it's butter smooth. Even ai are jitter ingredients like micro rubber bands.
@dawn glen Yes, sorry, I forgot to mention that it only happens on built clients. Hopefully this can be fixed :/
Oh great, apparently it's not possible to downgrade a project.
Are you not using source control?
No :/
Are you going to use source control from now on? 😉
Perforce is free for small teams.
I forget GitHub's deal, though you can technically use Git entirely locally.
GitHub is just a Git host.
Alright thanks, I'll look into it.
Aye. Sooner than later, I'd advise. While it's not a fun thing to worry about, it should be step one of any project.
Understood :)
You can manually try to downgrade
I tried, but unfortunately the map isn't compatible.
You can open the uproject file with a text editor, I believe you can change the engine association there.
Oh, if you've already resaved assets, then yeah.
Yeah. I do have a backup of my 4.14 project but it's quite a bit behind this one so I'll continue working with 4.15 and hope that a fix to the jitter issue will someday be made.
Is the jitter on their radar?
are replicated variables that are set on the server not supposed to actually replicate to the client?? im getting so frustrated with this. If i make a BP and replicate say a float, then i set it on the server it does not set on the client ever. I have to run it through a multicast to get it to set. If i set the variable in c++ to replicate and set it on the server in a BP it always replicates without issue.
is the actor set to replicate?
yea
if i have a c++ base class with a replicated variable and set it on the server in a BP Child its great. If i add a BP variable to that same BP and set replicated it will not replicate, unless which i just tryed i set it to repnotify. So maybe i dont quite understand replication but if its set to replicated it should replicate even if it isnt notify