#multiplayer

1 messages ยท Page 321 of 1

hollow pond
#

or create a level that represents the other level but only in the mobile part of the project

#

maybe someone knows how to do it better than I do =p Keep asking for suggestions ๐Ÿ˜„

pine sentinel
#

I thought of making two levels, one level for the fps character which will be the pc version and package it. The another level will be a plane with a minimap texture and packaged for Android version. But the thing that stops me is - how the replication would work when its about two different lelvels. :/

#

anyway @hollow pond thanks for the suggestions! ๐Ÿ˜ƒ

hollow pond
#

Np ๐Ÿ˜„

jolly siren
#

@rough iron These are what I get server side when it happens [2017.05.05-02.11.59:567][841]LogNet: Server connection received: ActorChannelFailure

thin stratus
#

@NasteX#9854 Not possible. One Server, one Level/Map.

#

Solution is to use 1 project and 1 level

spare owl
#

Anyone else use the advanced steam sessions plugin? Ive managed to Get steam "presence" joins working, as well as searching and joining for LAN servers, but I haven't had any luck with hosting Internet findable sessions

#

My game has its own steam app ID but is unreleased. I only tested searching from another computer on the same local network, in the non-LAN, non-presence configuration.

fleet sluice
#

@spare owl Steam sessions aren't what Steam considers dedicated servers. They're actually lobbies. Two things to note here:

1 - If you have your own AppID, you need to request lobbies to be enabled for that AppID. You do that by going to the SteamDev group and by making your own thread there.
2 - Even with your own AppID, Steam only returns the geographically closest 50 lobbies, regardless of whether your AppID is region locked or not.

All in all, it's unlikely online sessions will ever work properly with the current OnlineSubsystemSteam implementation. I'm working on a proper module and have a plugin in the submission process at the moment.

spare owl
#

neat! but also, thanks

#

tbh those are constraints i can work with for now

#

since i'm making a VR multiplayer game it's gonna be a while before i hit 50 lobbies, lol

jolly berry
#

Yo so I have an issue right now. I followed the multiplayer BP guide on YouTube and setup my server/client menu system.

Right now it's a host based system. Here's the problem:

Let's say I host a game, 3 friends join, I start the match, we play, we finish, it returns us to main menu. Now I host a match again, server is up, my friends cannot find the match though. They have to relaunch their clients to find the match. Any ideas?

brittle sinew
#

I believe you have to destroy the session client-side first

jolly berry
#

oh

#

that's in my gameplay GM

#

is that not a correct solution?

#

how do I guarantee client first gets destroyed?

brittle sinew
#

OnLogout occurs on the server

#

Yet you're getting the local, server, GameInstance, one that wouldn't apply directly to the exiting client

jolly berry
#

[2017.05.08-20.17.44:830][ 94]LogScriptCore:Warning: Script Msg: DestroySessionCallback - Invalid player state
[2017.05.08-20.17.44:830][ 94]LogBlueprintUserMessages: [GameInfoInstance_C_0]
[2017.05.08-20.17.44:830][ 94]LogBlueprintUserMessages: [GameInfoInstance_C_0] Success INFOINSTANCE @@@@@@

#

is that why I get an invalid player state

#

even though it succeeds?

#

I added print statements

brittle sinew
#

Possibly, I'd have to see what's in the function to see, but I can pretty much assure you that function isn't working as intended at the moment

#

There's ClientReturnToMainMenu that occurs on the client's PC, but it doesn't look like it's exposed to BP unfortunately

jolly berry
#

ah alright

#

so now my question is, should I disable that connection for event OnLogout and is there a better function for handling this stuff?

#

should I move it to the PC

#

Player Controller*

brittle sinew
#

You might be able to call an RPC to the exiting controller to destroy the session on the client

#

I'm not sure if the controller would still be valid at that point, however

jolly berry
#

I can surround it with an exists call

#

and then I wouldn't have to worry

#

but uh

#

the problem is right

#

let's say the host disconnects

#

what function gets called on the client side

#

like host DCs so everyone has to crash to main menu

#

what's the Event that'll get called in this case where I can failsafe and destroy the session on the client

#

cause the way I see it if Event OnLogout is only run on server there must be a way to guarantee a session gets destroyed

#

I would do Event EndPlay in the player controller but then I'm afraid if I wanna return to the lobby instead of main menu, I don't wanna destroy the session I just wanna update it so I feel like that solution wouldn't be able to work long term

brittle sinew
#

I'm not really aware of the flow for that off the top of my head, sorry :/

#

If you're able to look at at least C++ docs you might be able to figure it out

jolly berry
#

no uve been a fantastic help

#

that's most likely the issue

#

i can mess with it tonight ๐Ÿ˜„

jolly berry
#

would that run on the client

#

or does the Server technically still own the Player Controller and therefore it still runs on the Server?

brittle sinew
#

It should, given that the PC still exists by the time the client receives it

#

That is the one thing I'm not super sure about, but in theory it seems fine

jolly berry
#

okay ye it does seem like ur right about the server client thing

#

however that RPC did not go back to client

#

so i gotta figure that out

jolly berry
#

@brittle sinew do you have to destroy the server session for each PC

#

or only the local one matters?

dawn glen
#

anyone know why a pawn moving will register a velocity on server but on the client it shows 0 even though its clearly moving on the client? http://prntscr.com/f5omqp

Lightshot

Captured with Lightshot

rough iron
#

@jolly siren there might be to many actors that are relevant at once, I had something similiar once and went the route creating spawners. They where just server only actors that spawn/destroy an actor from a given class. When I was spawing a thing that had a mesh the spawner was using that mesh in editor actually xD. It's a cool way to handle actors and to reset them easily.

#

@jolly siren that way you can also decide what to spawn and when and optimize the whole thing a bit

spark igloo
#

Hi guys, Is there any AGameMode::Login in the GameMode for Blueprints. In my case i wanna parse the options of the AGameMode::Login but didn't find similar function in the blueprints . How can address this in Blueprints /

worn nymph
spark igloo
#

@worn nymph In my case i have a client which sends the ticket and the player id to the server and the server needs to verify the player is a valid user by parsing the options and matching the player id. If they matches then the spawning needs to be done else it will show the error message but will the open level node only takes the results but it wont give any options to do verification on the server side

worn nymph
#

@spark igloo Oh I see . I use varest plugin and Json to parse login validation details

jolly berry
#

does a forloopwithbreak save the last variable as the array element?

#

for example during my completed execution line

#

will it use the variable it last obtained when it breaked

#

lets say it breaks at PC3

#

will my cast to GameplayPC be receiving the object PC3?

#

@worn nymph the problem is I'll destroy a session no matter what as long as the gamemode ends but what if I wanted to travel back to the Lobby room instead of the main menu, I would NOT wanna destroy the session

#

unless im thinknig abotu this wrong

worn nymph
#

@jolly berry onlogout only exists on the server so that code you showed their won't work only way to do is is cast to the player state iterate through the player state array then call the function

jolly berry
#

if i wanted to travel from one map to another

#

without dcing people

#

would I still be destroying a session on end play?

#

or would that then conflict with traveling people?

#

like does EndPlay get called if u ServerTravel?

worn nymph
#

Not sure sorry I only used sessions once and them gave up because It has no host migration and to implement it is a pain in the butt you have to basically override so many things unreal is doing . That's why I use dedicated servers instead

jolly berry
#

I plan on doing dedicated long term

#

just doing session rn so i can have the game up and running

#

btw is easy to setup a dedicated server? costs much?

worn nymph
#

Then why not do it now save yourself some hassle in the long run

#

Setup is easy yes . Just follow my wiki guide . Costs depend on the game and type of game

#

At the moment I host my servers on my own machine

#

Because it's a moba and only ten players max I can have multiple instances easy handled

#

So let's say I can have 20 instances on my machine that's supports a player base of 200

#

If everyone was to log in at once

#

If I need to get more after that I can just start buying real severs

#

I have written a dedicated server manager that starts and stops the server so they only run when needed

jolly berry
#

mind linking me the wiki? I gotta present this game in a day so I'm a bit concerned to just switch the system over yet

worn nymph
#

There are lots of people making plugins at the moment that do the same thing if you check out the work in progress section on unreal forums

jolly berry
#

but after I graduate I intend to continue this as a personal project so that's when I'd probably set it up

#

unless u think I could manage in a day

worn nymph
#

Oh if you only have a day I wouldn't bother

jolly berry
#

I appreciate it btw

#

yeah

#

rn it works

#

i actually fixed the client issues

#

i have ALOT of destroy session calls though

#

a lot that are probably unnecessary

#

but it gets the job done for the build atm

#

gonna do my final bug test now

#

btw I did most of it through blueprints but

#

does it make sense to just rewrite the dedicated server system in C++ moving forward?

#

like I'm completely fine using C++

#

just wondering if it's at all beneficial to approach it with a C++ solution instead

#

I could probably just make a library of C++ -> blueprint calls and then run it that way

worn nymph
jolly berry
#

nah I meant for dedicated servers haha

signal lance
#

Does anyone know if there are problems with dedicated app id like spacewar test id has (region lock...)

fleet sluice
#

@signal lance There are a ton of problems and limitations with Spacewar/480, but what kind of problems are you having?

signal lance
#

Mostly other people can't see my sessions, for testing I solved that by directly joining to a friend. I don't know if this problem exists when you have your own app id

fleet sluice
#

It does exist even with your own AppID. It's because of the poor implementation of OnlineSubsystemSteam

#

Technically, a session on OSS is what Steam calls a lobby, NOT a dedicated server (again, in Valve terminology). And Steam only lets you see the 50 geographically closest lobbies. Spacewar has a huge number of testers and devs at any time so that's most likely why you can't find your session (lobby)

signal lance
#

Will probably do my own implementation then or buy your Plugin (looks great btw)

fleet sluice
#

Thanks!:D

#

Likewise for your vehicle one

signal lance
#

thanks ๐Ÿ˜ƒ

fleet sluice
#

If you want your own implementation, I'd recommend looking into ISteamGameServer and my video on the thread for the BP implementation (those particular functions are just wrappers, nothing extra, in my plugin)

#

But also, OSS is v132 and Steam is now running v140 so I don't know what's going to happen

#

2.5y gap lmao

signal lance
#

So basically with my own app id I will be able to find other sessions but only 50 geographically closest if I got that right?

#

What is the final price for you Plugin, I saw you posted something but can't find it now

fleet sluice
#

Yes and 90EUR

#

But that's just how lobbies work in Steam. If you use my plugin you'd have to register your application as a server. If you register it as a lobby, you'll obviously still have the same issue

signal lance
#

ok, thanks, I don't need it yet but when I get close to a release I will probably get it

fleet sluice
#

I include server registration in the example project though:p

#

I plan to improve the example in the near future as well as finishing the docs

#

Just... Too... Little... Time....

signal lance
#

Will test your example project when I get some time...

young tulip
#

Hii!!! In my game I am using execute consol command node(Open 127.0.0.1:7777?np={players count}. Whenever a client logins into a game will I get those values into Options String of GameMode. And what does Options String do???

chrome bay
#

options string allows you to send options to the game from a previous world, so you can say what the game rules are etc.

#

You can then retrive those options using the 'Parse Option' nodes

young tulip
#

@chrome bay How can I check those values that is passed through Open 127.0.0.1:7777?np={players count} on the server gamemode

worn nymph
#

Then just use parse option bp node and put in your variable key

dusty sleet
#

is there a good dedicated server tutorial out there? that shows how to host more than one instance of the game on the same server? Also how (if possible) to integrate dedicated server with steam?

fleet sluice
#

@dusty sleet Dedicated server with Steam is not possible atm. You either heavily modify the engine, forget about it or wait for the UWorks plugin to be released. For your other question, assuming you have a packaged server, you just create a shortcut to run it with "-log" and run it multiple times. It's also not possible to package a dedicated server with the Launcher version of the engine.

worn nymph
#

Havnt quite finished it because got sidetracked . Don't forget to open unreal ports if using multiple instances it starts at 7777 and goes up sequentially so second server instance would be 7778 etc

thin prawn
#

Hi - I'm new to the channel :). So if dedicated server+steam is not working, how does Playerunknowns Battlegrounds Multiplayer System work ? Or Arks ? I've followed the tutorial you posted and everything works fine on my machine. I can join the server with multiple game instances and run around, but how can I extend my knowledge further ? I'm kinda stuck here ๐Ÿ˜ฆ

dusty sleet
#

@EniGma#6597 thx! will check this out tomorrow

worn nymph
#

@IceD34ler it's not that server+steam doesn't work . It's just the unreal steam we have is outdated and incomplete . So like vlad said above you can either not bother , wait for his plugin or do it yourself if you have the time , patience and knowledge .Those games mentioned will have network programmers that either wrote their own network online subsystems or implemented the steam api themselves . "Kinda stuck here" can you be more specific what is it your stuck on ?

fleet sluice
#

@worn nymph @thin prawn It's worth mentioning that both PUBG and ARK are closed source and their networking is very very poorly designed at the same time. Their programmers didn't even follow the 6-7 videos on replication if you check the crate falling in PUBG or trilobytes in ARK

#

Also, last I checked I wasn't able to host a truly dedicated server with OSS. It was a stupid lobby. Keep in mind Steam and Unreal have different terminology and what is a dedicated server for Unreal is not mandatory the same thing as a Steam dedicated server (and that's exactly how OSS is designed)

worn nymph
#

What you mean it was a lobby you talking about a steam unreal dedicated server or just using unreal dedicated server ?

fleet sluice
#

One more thing: the tutorial above shows how to create an Unreal dedicated server. But that uses OnlineSubsystemSteam, which will link it as a Steam lobby, not register it as a true Steam dedicated server.

worn nymph
#

Yes my guide is not for steam it is unreal dedicated server

fleet sluice
#

It's a beautiful guide btw

#

It's just that solving OSS problems and, as you said, it being outdated, is out of the scope of that tutorial

worn nymph
#

Did you manage to get any host migration working with the plugin?

thin prawn
#

@worn nymph Ok. So I guess I'm best of by just waiting and continuing creating my game logic instead until there is a good solution on that ? With "kinda stuck here" I mean that I don't know where to find information on how to create an online system much like PUBG, Ark or The Stomping Land has it. I've done epics tutorials with blueprint networking, everything works fine. But since my game will be something like pubg, ark etc. I don't think it's a good idea to follow the listen server tutorials as I most likely want to have a separate dedicated server (also to avoid cheating)

fleet sluice
#

You mean like CoD does it? If so, then I haven't even tried. I just wanted a simple way to build dedicated servers and that's basically how the idea of a plugin began.

worn nymph
#

@fleet sluice thanks . Kinda regret putting my contact details in it though . Everyday I get spam from people crying help me lol. And most of the time they are having trouble because they didn't even follow it and are then like why isn't mine working lol

fleet sluice
#

LOL

#

I've lately been getting requests to put my plugin on itch/gumroad/sellfy which is understandable, but I can't afford to compromise the legal part atm

lost inlet
#

i already modified the steam OSS to use actual sockets rather than steam p2p, was pretty easy

#

though it being p2p by default is awful

thin prawn
#

@fleet sluice Didn't know that, I thought these guys know what they are doing ๐Ÿ˜„

fleet sluice
#

@thin prawn You are right. All the listen server guides or marketplace BPs are designed to be quick and easy solutions. If you aim for a larger scale architecture, none of them will ever be enough to fit as a solution

lost inlet
#

the steam OSS has a lot to be desired, probably won't get any love until epic decides to ship games on steam again

fleet sluice
#

Yea, I also thought they knew what they were doing lol

#

What

worn nymph
#

@lost inlet ooh you could be my new best friend sockets do my head in . I have a program at the moment that just listen and responds to http requests written in c# which controls my dedicated servers so I can start and stop them dynamically when needed or shut them down when not needed but I really want to switch it to socket

#

Is that something you could do?

fleet sluice
#

I've said multiple times I'll be adding an OnlineSubsystemUWorks module to replace OSSteam

lost inlet
#

not sure why that depends on your dedicated server using raw sockets or not

thin prawn
#

but then how can I learn how to create something like that ? To me it seems like there are only a handful of people on this planet who know how to accomplish something like that, the others are just not the lucky ones. I mean, I can't find anything that could teach me how to create a simple system much like the early access title "The Stomping Land" had, which is all that I need. A server List, be able to join, save my character information somewhere safe and thats it

#

I mean, they all used dedicated servers, right ? Ark, PUBG, Stomping Land

#

there's no listen server, no player IS the server

fleet sluice
#

Well, for a generic OnlineSubsytem I don't know if there are guides for exactly what you want

#

I can't tell in PUBG

#

They do hit detection 100% client-side

lost inlet
#

persistence storage isn't the responsibility of the online subsystem

fleet sluice
#

So they might be using a retarded listen architecture

lost inlet
#

no they don't

fleet sluice
#

For @thin prawn go to the UWorks thread and check the video j example project screenshot

#

How the fuck not?

lost inlet
#

ah so you're here just to plug your plugin? lol

fleet sluice
#

You can unplug your internet cable, move near an enemy, headshot him, plug the cable back in and that hit will count. That is 100 fucking percent client-side and its just the work of a retard with all due respect to anyone else who works on PUBG

lost inlet
#

client authoritive hits doesn't mean they're not using servers

fleet sluice
#

My plugin isn't even released, but I developed it as a solution to all of this Steam bullshit so it makes perfect sense I would objectively recommend it. I also discussed alternatives 5-10 mins earlier and gave more than enough info for people to know how to fix the OSS implementation

#
  • my video shows exactly what true dedicated server registration means on Steam
#

You are right, it doesn't mean that they must not be using dedicated servers. I just gave client-side authority as an example of a feature which is generally a consequence of a listen-server architecture

thin prawn
#

@fleet sluice Really ? Did you try that in PUBG ? That's crazy

#

doesn't that mean that it's hyper-susceptible to cheaters ?

full bane
#

pretty much how planetside and H1Z1 handle it

#

it takes a crap ton of load of the server

#

way easier to cheat though

#

actually in planetside 2 this had serious gameplay implications without cheating

#

because infantry had a smaller network replication radius than vehicles

#

so infantry could damage vehicles while being invisible and invincible from the vehicle

worn nymph
#

@Vlad lol there's hope for the rest of us then if their networking is so bad and a lot of people still play the game haha

regal junco
#

anyone has some good tips about creating a master server? Should I use steam integration instead?

fleet sluice
#

I haven't tried it, personally, but a friend did, once.

#

+1 to what EniGma said. I also didn't realise a game's characteristics of being addictive and well designed are independent, until I played ARK and PUBG

#

Hope, indeed.

full bane
#

that either means that their server side validation is non-existing or that the heuristic just sucks

fleet sluice
#

I tend to believe it's the first option ^ lmao

lost inlet
#

and i thought BF3 was bad because damage amount was client authoritive

#

but yeah, this is no validation at all

#

even ShooterGame has some basic validation

#

i went for the lag compensation approach rather than the "i hit you" RPC approach

#

wouldn't be surprised if cheats for PUBG already have a mass kill option in them

thin prawn
#

wow, just wow. I'm kinda speechless. And they still make millions...

#

hilarious and sad at the same time

lost inlet
#

well the king of how not to design netcode is still the arma series

#

i think gta 5 is in the same territory too

worn nymph
#

@thin prawn another option you have is playfab or gamesparks

lost inlet
#

third party services like that are kinda terrifying

#

look at what activision did to demonware

fleet sluice
#

@thin prawn Tens of millions*

thin prawn
#

@worn nymph well, I only need something simple you know. Start the game, click on server browser, choose server and connect. It all works with the blueprint tutorial provided by epic, it's all there and working (tested with 5 friends) but since I need a separate server later on I need to start converting my project and learn how to create a simple system like that. If anyone know "The Stomping Land" (an early access title with dinosaurs) they had the most simplistic system ever but it worked fine

#

and that's basically what I want to achieve ๐Ÿ˜ƒ

#

@fleet sluice that explains btw. why I was shot by a guy with a Crossbow two times trough the wall and died right at the beginning

fleet sluice
#

+1 to that. Similar stuff happened to my friends and I plenty of times

#

I rarely experience bugs in which the houses are not loaded and I can move through them, loot them and even shoot players I can clealry see through the walls

#

Seeing this video made me understand why those hits registered

#

And its sad that this is a bug which works like a cheat. I couldn't find a way to replicate it though lmao

thin prawn
#

crazy

#

as Enigma said, if THEY can do it with such a bad system, there's still hope haha ๐Ÿ˜„

#

There's also another UE4 game on steam right now (early access) that uses the same setup I want to achieve. It's called The Isle

#

So there's no actual "tutorial" on that ?

fleet sluice
#

There are some, but last I checked none worked. There was also a BP multiplayer project with listen servers made by someone at Epic, but last I checked that wasn't working either (or was, but barely and rarely)

#

If I knew something that works 100% as you described earlier, I'd definitely recommend it

full bane
#

huh?

thin prawn
#

That BP version with listen servers is what I have implemented right now

full bane
#

all the listen server stuff works fine

thin prawn
#

and it works with no problems

full bane
#

only problem is that you have to forward ports

#

or write NAT punchthrough stuff

thin prawn
#

Didn't even need to port forward or anything

fleet sluice
#

Port forwards are trivial. Try testing it again on internet when at a time when multiple people test their own, using 480

thin prawn
#

tested it with 5 friends and it worked out of the box ๐Ÿ˜„

fleet sluice
#

Or if your game has low population, you'll always get the 50 lobbies nearest to you, I guess

full bane
#

huh?

fleet sluice
#

But that's not even close to a solution for larger environments and bigger player bases

full bane
#

I mean when you iterally connect to the ip

fleet sluice
#

What

full bane
#

not via steam sessions

thin prawn
#

ah ok

fleet sluice
#

Literally connect to IP doesn't count what

#

That's bypassing everything

#

I thought we were talking about the Steam tutorials out there

#

For server support

full bane
#

you just said listen servers didn't work

#

I assumed you meant in general

thin prawn
#

soooo...there's no actual source where I can learn how to create something like Ark, PUBG, Stomping Land or The Isle do ? Maybe they were all done by old UDK veterans who don't want to share their knowledge ๐Ÿ˜„

fleet sluice
#

I said listen servers don't work as intended (i.e. not going to work for larger player bases) and dedicated servers don't work without modifying the engine a lot

full bane
#

both are working just fine 0o

fleet sluice
#

I am willing to bet at least PUBG and ARK were made by UE developers who thought they were too smart to even look at the replication tutorial

full bane
#

ofc listen servers are limited by the hosts PC

fleet sluice
#

I'm going to back off. I already explained at least 3 times today what are the limitations of Steam with UE, where they come from and even how to fix them inside the engine's source code as they can't be fixed in BP. I don't have time and/or energy to explain everything a 4th time. Everyone who sees this has a scroll button or a keyboard to use the scroll bar.

worn nymph
#

Wow this is still going . Grabs popcorn -> sneaks into the background ๐Ÿ˜€

full bane
#

I am not sure what you are trying to explain tbh

fleet sluice
#

For one last time, connecting via IP uses the engine directly and nothing else. That wasn't, isn't and never will be an indication of a working server architecture

full bane
#

0o

#

you can just write your own session management

#

write your own master server backend

#

and only use steam to make a party

#

and then let all of them join a server this way

thin prawn
#

well, I can't ๐Ÿ˜„ - where to get the knowledge to do exactly this ?

full bane
#

just study network programming

#

๐Ÿ˜„

#

or just look into c++ network frameworks

#

or what unreal ships with

#

or look into this

thin prawn
#

thanks man, really appreciate it!

#

there's hope ๐Ÿ˜„

#

gonna check that out

worn nymph
#

@thin prawn if you can't do it I can make you one . But most likely won't be able to do it till the weekend as I'm quite busy

thin prawn
#

@worn nymph That's very kind of you, but I guess if I can't understand all that by myself I will have a hard time updating/doing my own changes on that

#

except it will also be explained by yourself (I'm sure you don't have the time for that though :D)

worn nymph
#

@thin prawn it's the same with that plugin . It's backend is python and I'm guessing the ue4 part is c++ although he might have exposed it to blueprints you will have a hard time customising it unless you know the languages well . Can't see what you would need to customise though I mean it's literally a list of servers

lost inlet
#

and i'm guessing no authentication

zinc acorn
#

Do I need to pay for servers or anything if I want to do multiplayer?

thin stratus
#

That depends on your Multiplayer

#

If the player shost themselves, then no

#

If you want to have servers out of reach of the players, then yes

twin juniper
#

@thin stratus have u built a linux dedi before?

thin stratus
#

Nope

twin juniper
#

I recently purchased a new PC just to host my servers

#

and i was not sure if i want to use windows or linux

#

lol

thin stratus
#

We are running Windows Servers on Windows 2012 instances atm

#

No need for Linux atm so I haven't touched it

twin juniper
#

@thin stratus

#

why is this checked by default

#

lmao

#

@thin stratus are u using aws?

#

or what

thin stratus
#

Yop

twin juniper
#

oh

#

isnt aws expensive? lol

thin stratus
#

That depends on what your budget is

#

It scales for you so it's technically the best you can do

#

I'm actually using GameLift

#

and not AWS itself

twin juniper
#

I mean

#

why not just buy a computer

#

and host it at ur house

#

like i have experience with Servers

#

and ive managed them many times b4

#

Like

#

wouldnt hosting a server yourself be the cheapest?

#

its a one time fee, only thing u pay for is electricity and internet

#

lol

thin stratus
#

Have fun hosting a computer like that

#

"only electricityy and internet"

#
  1. Depending on the game, one PC can't manage a lot of Dedicated Server instance
  2. Since that means you need multiple PCs, you get tons of electricity problems over time (expensive af)
  3. Your internet needs to be damn fast and have static ips
twin juniper
#

Have u seen these

#

these little things are great for hosting servers like this

#

and by the time i out scale it ill have made enough money

#

to purchase a better solution

#

they barely use any electricity

thin stratus
#

na that's bs

twin juniper
#

?

#

what is

#

i dont see how i would need more than 16gb of ram and an i5 to run a game server

#

with 100 players

#

lol

#

i can already host that much on my desktop

#

had like 20 people on my game

#

no lag, except for crashes (but that was just coding mistakes)

#

like idk, ive had no issues

harsh turtle
#

@thin stratus How much trouble was integrating GameLift? I've been thinking about using that for my dedicated servers..

twin juniper
#

@thin stratus =.=

thin stratus
#

Was in ranked

#

So, first thing is that this still depends on the game

#

If your game is pong, then you can host way more games than if you have a more complex game

#

Then the electricity costs are really high if you have a lot of PCs

#

and we don't use GameLift if we only host a 2 games for 20 people

#

But hundreds of games for thousands of people

#

Then, even if you want to pay hundreds of euros for your electricity, you still need internet that manages to down and upload tons of data the whole time

#

especially if you use a the native impl of everything

#

So you need VERY good internet with a static ip

#

Most countries don't eve offer that to private people

#

So you have need a company setup for that

#

For an indie studio is way better to get GameLift running for the beginning

#

Cause you would also need to code the whole "start server on demand" stuff

#

Which means you need to either do that yourself (takes time) or pay someone (expensive)

#

As a private person, hosting at home just doesn't work. And even if you get company internet, it's really not cheap.

#

It's nothing you easily do

twin juniper
#

Have you heard of NO-IP?

#

It's a program which allows u to set a host name which can act as a Static IP

thin stratus
#

Yeah which needs to always redirect the changing IPs

#

It's DynDNS

twin juniper
#

i would give that to people

#

yea

thin stratus
#

And it exists for ages

twin juniper
#

why not use that though?

#

lol.

thin stratus
#

Because it's also about the speed?

twin juniper
#

How much do you have to pay for AWS?

thin stratus
#

My 100mbit down/40mbit down costs 40+โ‚ฌ per month

twin juniper
#

On a monthly basis

thin stratus
#

and that can't serve 15k ccu

#

That's private info, sorry

twin juniper
#

Lol

#

If its over the cost of electricity + Internet

#

then its not worth it

#

on a monthly basis

thin stratus
#

@harsh turtle We are currently using it in combination with GameSparks. Means the Client talks to GameSparks and GameSparks talks to GameLift.
All in all it's not that hard to setup, but there is like 0 info about it

harsh turtle
#

=/

thin stratus
#

@twin juniper You can't compare that

#

I don't know what internet and electricity costs to provide a running server system for 15k ccu

twin juniper
#

Im not running

#

like 100 servers

#

im running a single server

#

lmao

thin stratus
#

As said, if you host a single server at home feel free

#

That#s not what gamelift is about

twin juniper
#

lol

#

Yea idk what that is

thin stratus
#

Then google it and learn about it first before arguing? :P

twin juniper
#

Im not arguing about gamelift

#

im just arguing that i dont need a dedicated monthly server for a few game servers with only a maximum of like 100 players per server

#

lol

thin stratus
#

I said I'm using GameLift

#

You say it's expensive

#

what else are you arguing about

#

Sure you don't need to

#

it's still kinda expensive though

twin juniper
#

๐Ÿ˜›

#

That's all

#

I've gotten away with running a web server with 4,300~ members

#

on a pc with 4 gb of ram and a pentium processor

#

at my house

#

it had frequently around 300+ users daily

thin stratus
#

WebServer aka webpage?

twin juniper
#

yeah

#

I was using an apache server

#

with a web forum

#

lol

#

mybb

thin stratus
#

So do you think your internet and electricity prices are higher than 5โ‚ฌ a month with that thing running?

twin juniper
#

Uhm

#

went up, but not by a lot

thin stratus
#

My webpage runs on a DigitalOcean droplet for 5โ‚ฌ a month.
Together with a Perforce Server

#

Would never host that at my home

twin juniper
#

๐Ÿ˜›

#

why not?

#

lol

#

do u get a lot of page hits?

thin stratus
#

around 21k per month

#

12k on Blog page and 8k on Job page

#

The thing is, it's just not worth it

twin juniper
#

Idk at work we also host a few rack servers for our clients lol

thin stratus
#

Running a PC the whole night. Buying it. having the internet or setting up the DynDNS

#

If you are a bigger company, then sure, host everything on your end so you can probably maintain it.
Or get a server in the big server farms in frankfurt etc

#

Middle company or indie people might be better with the online services you can pay

#

And yeah, for a private little server for your game, go ahead and host it at home

twin juniper
#

Idk, I just see it as... if people want my project to get bigger. they will throw money at me to help me do it

#

xD

harsh turtle
#

If people are throwing money at you, it's best if you have a plan to scale up quickly and smoothly ^_^

twin juniper
#

mhm

#

only if necessary tho

hollow pond
#

@thin stratus I'm using Gamesparks but I'm not using Gamelift Yet, hosting dedicated servers on a google cloud. Do you have any tips on how to registrate servers on the gamesparks for users to find them? It is still not clear to me if I should do that using a master server or gamesparks provide that, couldn't find much info on Gamesparks regarding that matter, but haven't look a lot tbh.

#

I know it is not exactly about Ue4, but I'm still trying to think if I can do those things using Sparks SDK for UE4, or directly on Servers startin up

thin stratus
#

I don't actually know

#

I think you can probably set something up where the Server uses his server credentials for GameSparks to tell it that there is a new session with IP etc

#

And then have clients ask gamesparks for that list

#

If they offer saving that

#

Our current setup is more towards having GameLift start the Servers on demand

#

The Client never sees any IPs, at least not as a player

#

He just searches and gets thrown into a game, like Overwatch

sterile silo
#

anybody have tips for improving multiplayer performance over unstable wifi? One player is the listen server, but last time we tested some players would disconnect on wifi

chrome bay
#

Fix the wifi :p?

#

That would be my first port of call.

#

Second would be network profiling the game

hollow pond
#

@thin stratus Oh I see, So you've done a matchmaking system, yeah, that's pretty cool. My game is more casual so matchmaking is not yet the best thing to add. Yeah, maybe I can do that with server credentials and manipulate a list with cloud code and nosql

#

Or even loggining as a server... I'll try that

agile lotus
#

Can someone help me figure out an error when a steam client joins a steam listen server? I don't know if the error is even multiplayer related but it only happens in my packaged build when I try join a game.

#

Assertion failed: !bPostTickComponentUpdate [File:D:\Build++UE4+Release-4.15+Compile\Sync\Engine\Source\Runtime\Engine\Private\LevelTick.cpp] [Line: 842]

#

WolfPackBattalion!FDebug::AssertFailed() WolfPackBattalion!UWorld::MarkActorComponentForNeededEndOfFrameUpdate() WolfPackBattalion!UPaperFlipbookComponent::CalculateCurrentFrame() WolfPackBattalion!UPaperFlipbookComponent::CreateSceneProxy() WolfPackBattalion!FScene::AddPrimitive() WolfPackBattalion!UPrimitiveComponent::CreateRenderState_Concurrent() WolfPackBattalion!UActorComponent::RecreateRenderState_Concurrent() WolfPackBattalion!UActorComponent::DoDeferredRenderUpdates_Concurrent() WolfPackBattalion!TActorIteratorBase >::operator++() WolfPackBattalion!ParallelForWithPreWork() WolfPackBattalion!UWorld::SendAllEndOfFrameUpdates() WolfPackBattalion!FRendererModule::BeginRenderingViewFamily() WolfPackBattalion!UGameViewportClient::Draw() WolfPackBattalion!FViewport::Draw() WolfPackBattalion!UGameEngine::RedrawViewports() WolfPackBattalion!UGameEngine::Tick() WolfPackBattalion!FEngineLoop::Tick() WolfPackBattalion!GuardedMain() WolfPackBattalion!GuardedMainWrapper() WolfPackBattalion!WinMain() WolfPackBattalion!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:255] kernel32 ntdll

thin stratus
#

@hollow pond You might get a unique ID when the Server connects to GameSparks

#

Maybe something like the request ID or so that you can save

#

idk :x

hollow pond
#

@thin stratus Yeah. I'll try a bunch of things, but I don't know if I'd be able to login into sparks as servers with basic auth, I'd have to generate a bunch of usernames/passwords for them. I need to take a look at how credentials work

frank portal
#

@cedric_exi why gamelift and not playfab? i was also thinking about, but the free developing on playfab and its features are pretty nice in my opinion ^^

thin stratus
#

@frank portal Playfab is more like gamesparks

#

No hosting

frank portal
#

yes but they have some pretty nice features like photon for multiplayer and many other useful things ^^ also i think u can host, but its not the fastest direct in playfab ^^

thin stratus
#

@hollow pond Device needs to login

#

Server credentials don't

#

They can make requests without login in with actualy data

#

So dedicated server -> server

#

listenserver ->device

#

@frank portal I can do all kinds of stuff wit hgamesparks too

hollow pond
#

Oh, I see. Yeah that makes a lot of sense actually

frank portal
#

sry should write english: yes ik you can do everything in gamesparks but i wanted to know why your team decided gamesparks is better ^^

hollow pond
#

Thanks @thin stratus, being awesome as always

fleet sluice
#

@agile lotus I can't figure out what causes that, but it doesn't seem related to Steam or multiplayer/networking.

agile lotus
#

@fleet sluice Thank you for the info

fleet sluice
#

Np. Can tou please paste that code somewhere where I can see it more organized? It's a mess on my mobile

#

Can you*

#

Encapsulate in ' or pastebin or whatever

thin stratus
#

@frank portal No idea, wasn't my decision

#

Guess support

frank portal
#

playfab also has the same support options i believe ... i am also unsure what to use, but i tend to playfab even both have not the best documentations ^^

thin stratus
#

GameSparks gave us special support

#

And the Plugin (once properly rewritten) works quite well

#

Docs on GameSparks are fine

#

They have a whole section with tutorials and examples

frank portal
#

ok i looked at some basic documemtations and both were almost the same and i was really surprised when i logged into photon i got a email some days ago and yeah ^^ think both are good, but starting without any costs i am on playfab side :P

fleet sluice
#

Could it be something within your level BP?

agile lotus
#

My level BP's are blank

thin stratus
#

Are you adding any kind of component

#

Somewhere?

#

Looks like the PaperFlipbookComponent is doing shit

#

Maybe not registered?

agile lotus
#

my whole game is made of flipbooks pretty much

#

Did 4.15 do anything to flipbooks?

#

I never had this issue on 4.12

thin stratus
#

No idea

wary willow
#

What's up with Teleport on Client? If I run it straight from the event to teleport, it briefly TPs to the location I want and then a frame later comes back to the original position.

I looked this up: https://answers.unrealengine.com/questions/292623/teleportation-in-multiplayer.html and sadly, that actually doesn't do anything. https://gyazo.com/c8cf4ba5ea0921451d51c9eb02196f52

Server works just fine, so I thought it was some simple replication issue, and I am sure it is, but I've tried it all. Multi, makes it work like if I plugged it straight in like this: https://gyazo.com/59cb39c8e75601c488a5c094a4ca1c0a

The Actor AND Destination both print out the correct actor/location, so that's not the issue, it just doesn't want to teleport correctly the actor.

Fixed it by just having the teleport logic inside the character, which thinking about it more, makes more sense, since I can call this function later by anything I want

hollow pond
#

I had a problema earlier on, could someone explain me what could be wrong?
On WASD I was asking Server to handle input, it them Multicast/Send to client with the proper world direction / scale to Add Movement Input, but Clients just wouldn't Move when on ground, only when falling.

This only happened on dedicated servers. I just ignored all that and did a Add Movement input directly on client and stopped asking the server to do it.

#

Doesn't make sense at all for me that it would work on jumps/falling and not on ground movement

brittle sinew
#

Not sure as to exactly what would be causing that type of behavior, but are you putting this input on a character?

#

If so, the CharacterMovementComponent handles all the replication and what's called a proxy system for you, no need to manually call up to the server and multicast movement

#

It might have to do with the fact that the multicast might've been overwriting your moved position on the client, but when you're falling, you're accelerating, so the last update would've been at a slower movement velocity, allowing you to move

#

That's just a really basic theory though, no idea if that's really what would cause something like that

#

I'm sure there are holes in it compared with the behavior expressed ๐Ÿ˜ƒ

hollow pond
#

@brittle sinew Yeah, I was using character movement component but I wanted to do some other server stuff with user input before actually adding movement. I understand the proxy thing but for me it still doesn't even make sense that just by asking the server to call client and the client add movement input without the server doing anything wouldn't work and the character would be there, stopepd

#

stopped*

brittle sinew
#

I would think the value you receive from the server is clashing with the local one

#

Since the server value is older

#

Well, actually, you're asking for input, not dictating location

#

So not 100% at that point

hollow pond
#

Yeah, I'm still confused but what you're saying makes sense

brittle sinew
#

I would be confused if I were you, I don't really know what the issue is fully ๐Ÿ˜„

#

Kinda just putting (as educated as possible) ideas out there

hollow pond
#

Yeah, and to get me even more confused is that on listen servers it would work like a charm

#

Even when passing messages exactly the same way, client->server->client

main sentinel
#

Hello everyone! I have already done 2 very simple multiplayer games using BP. I'm set to work on a much more complex project that will involve steam integration and also Google Gaming Solution: https://cloud.google.com/solutions/gaming/dedicated-server-gaming-solution/

Should I continue this other game using Blueprints or do you guys think that for this level of complexity, I must use C++? I'm a experienced developer and love C++. But I really enjoy working with BP on UE4, so if I could do everything using bp, I would prefer instead of C++

what are your thoughts on this?

wary willow
#

Unlessโ€‹ that has a plugin for UE4...CPP it is

#

Or both

twin juniper
#

Do I need to have steam running in order to allow my server to run?

zinc acorn
#

what kind of multiplayer do i need for an fps game

severe widget
#

Probably want TDM at a minimum.

fleet sluice
#

@twin juniper No

dense citrus
#

I`m looking for good source, how to make a Steam ready Dedicated Server?

void canopy
#

How to get player controller id ?

#

I'm using int32 id = GetLocalPlayer()->GetControllerId();

#

but its giving me numm value :/

#

null*

thin stratus
#

@wary willow The ServerRPC solution isn't even calling the HELLO?

agile lotus
#

When I host a listen server for my 4 player game and connect 3 other computers with their own packaged builds to the server the first client to join my server (Player 2) crashes when seamless travelling while player 1, player 3 and player 4 travel fine

#

Player 2 crashes with this error

Assertion failed: !bPostTickComponentUpdate [File:D:\Build++UE4+Release-4.15+Compile\Sync\Engine\Source\Runtime\Engine\Private\LevelTick.cpp] [Line: 842]

KERNELBASE.dll!0x00000000928A9E08
WolfPackBattalion.exe!FOutputDeviceWindowsError::Serialize()
WolfPackBattalion.exe!FOutputDevice::Logf__VA()
WolfPackBattalion.exe!FDebug::AssertFailed()
WolfPackBattalion.exe!UWorld::MarkActorComponentForNeededEndOfFrameUpdate()
WolfPackBattalion.exe!UPaperFlipbookComponent::CalculateCurrentFrame()
WolfPackBattalion.exe!UPaperFlipbookComponent::CreateSceneProxy()
WolfPackBattalion.exe!FScene::AddPrimitive()
WolfPackBattalion.exe!UPrimitiveComponent::CreateRenderState_Concurrent()
WolfPackBattalion.exe!UActorComponent::RecreateRenderState_Concurrent()
WolfPackBattalion.exe!UActorComponent::DoDeferredRenderUpdates_Concurrent()
WolfPackBattalion.exe!TActorIteratorBase<TActorIterator<AMatineeActor> >::operator++()
WolfPackBattalion.exe!ParallelForWithPreWork()
WolfPackBattalion.exe!UWorld::SendAllEndOfFrameUpdates()
WolfPackBattalion.exe!FRendererModule::BeginRenderingViewFamily()
WolfPackBattalion.exe!UGameViewportClient::Draw()
WolfPackBattalion.exe!FViewport::Draw()
WolfPackBattalion.exe!UGameEngine::RedrawViewports()
WolfPackBattalion.exe!UGameEngine::Tick()
WolfPackBattalion.exe!FEngineLoop::Tick()
WolfPackBattalion.exe!GuardedMain()
WolfPackBattalion.exe!GuardedMainWrapper()
WolfPackBattalion.exe!WinMain()
WolfPackBattalion.exe!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:255]
KERNEL32.DLL!0x0000000092CD2774
ntdll.dll!0x0000000095660D61
ntdll.dll!0x0000000095660D61

chrome bay
#

Run the game with the visual studio debugger attached. It's usually impossible to find the problem just from a callstack alone

#

Looks like the error is happening in UWorld::MarkActorComponentForNeededEndOfFrameUpdate() though, since that's the last thing that gets called before the assertion fires

long hollow
lost inlet
#

gamelift is overpriced for what it is

chrome bay
twin juniper
#

@chrome bay yeah OVH has always seemed to have pretty good deals

chrome bay
#

I use them for my VPS, they're so cheap compared to most competitors!

#

takes a few days to get your server setup though

twin juniper
#

yeah

#

coz they do it all manually

#

lol

raven viper
#

Hey peeps!

Anyone knows why is this happening? If we are playing the game in a session, and one closes the game a NetworkError node gets called. However if the internet connection is terminated in ANY ways (turning off WiFi, etc) nothing is happening. They are both in the "session" but not seeing eachother's movement and actions. Anyone knows how to actually get them disconnected in case the internet dies, and call the network error node?

wary willow
#

@thin stratus Nah it didn't, that's the crazy part.

#

Only when in Multicast did it work as if just hooked up, but calling to server in that particular BP did nothing.

#

(It was a spawning menu)

#

But, having the TP logic inside the character (literally, just did the same thing I did in that BP and moved it over to Character BP, and called it from spawn menu BP) fixed it.

#

@lost inlet How much is it on average?

lost inlet
#

much more than just rolling it yourself with existing AWS features

#

there is really nothing specific to it about running game servers

#

it doesn't even have decent version management

#

EC2 is a pretty expensive way of hosting your game servers to start with anyway

twin juniper
#

my belief has always been

#

start with a simple VPS

#

and go from there

#

lol

#

or host it in house

wary willow
#

ยฏ_(ใƒ„)_/ยฏ

#

It works, so I'm moving on

twin juniper
#

So if I set an actor to be replicated

#

what exactly is being replicated

#

other than its existance

wary willow
#

that

twin juniper
#

thats it?

wary willow
#

You still have to replicate variables

#

And movement, if you check that off

#

If it doesn't move, you shouldn't have it checked off

#

That's what I've done anyway

#

Usually get some warning about lighting if not anyway

worn nymph
#

So has anyone actually integrated the gamelift plugin and used it ? Their documentation is awful ?

twin juniper
#

if i call Switch Has Authory() => and drag from authority

#

does that mean

#

i dont need a server rpc

wary willow
#

@worn nymph AFAIK only like one dev team has

twin juniper
#

because its running from authority lol

wary willow
#

Probably because of documentation

#

@twin juniper Um, well, it's being called from the server's version of that actor

twin juniper
#

lol amazon, the only company on the internet which charges per hour for server usage

wary willow
#

But that might not have access to the server

twin juniper
#

no other company does that

#

billions of web pages, only one uses per hour sales model

wary willow
#

And probably won't replicate to client

twin juniper
#

oh

#

its an actor originally placed in scene

wary willow
#

You'll still need to multi that

twin juniper
#

i was under the understanding

wary willow
#

Ah

twin juniper
#

that if u placed it in scene (like in editor)

#

that the server becomes owner by default

#

also

#

gamelift looks expensive as shit

wary willow
twin juniper
#

lul

#

Has anyone here gotten to build a dedi for linux

thin stratus
#

@wary willow who owned the bp?

#

Haven't read all of your messages yet. Not home

hollow pond
#

@twin juniper Google also charges per hour =p on cloud.google

thin prawn
#

does anyone know what playerunknowns battlegrounds does ? is it dedicated or listen servers ?

twin juniper
#

@thin prawn its a session system i think

#

no idea tho

#

never played it

#

you trying to copy them? lmao

#

@hollow pond Yeah I think its a really dumb setup

#

how does a "per hour" system even work?

#

based on what? just having it turned on? a single connection?

#

lol

thin prawn
#

@twin juniper yea, releasing next week. Nah, just curious ๐Ÿ˜ƒ

twin juniper
#

what

hollow pond
#

@twin juniper It works based on a lot of things. On the Instances you're running, their capabilities, ccu. I don't really think it is a dumb setup. Everything has its price that is added accordingly to your needs, and that is an awesome thing to have when thinking on scaling things on demand. If your servers out of nowhere Peaks and you need to add a bunch of new resources it just autoscales and you'll be only charged by the used time of those things.

twin juniper
#

@hollow pond Yes, but it also means you don't get a straight answer of how much money you are going to need. Personally, I like to have a straight answer of how much I am going to need so I can budget appropriately.

hollow pond
#

@twin juniper But, you can. You can just configure not having auto scalling, you can set your maximum budget and the system auto scales for that

#

These solutions are not dumb =p You can do pretty much everything with it and have everything custom made for your specific needs. I can know precisely how much I'm gonna spend on a month using my google cloud

thin stratus
#

They are anything but dumb :P

#

And after the first month you can technically calculate what you need to pay based on x ccu

lost inlet
#

amazon are not the only company that has hourly server charges lmao

main sentinel
#

You are right @hollow pond . I can't think of a better and fairer system when you have a matchmaking system. That means no standby servers or queues and you only pay for the exact amount that you're using

#

and @lost inlet . What other services do you know besides Google Server Gaming solution or Game Lift from Amazon?

lost inlet
#

google isn't a specific solution, that page is basically telling all the existing generic services can be used to host game servers on their platform

#

multiplay do something like gamelift but they've actually worked with actual games companies so if you partner with them it would be more beneficial than gamelift

#

you can also try cheaper VPS providers like digitalocean, linode or vultr depending on how much CPU you really need

main sentinel
#

I dont think digital ocean would be very good for this. Seems like there's gonna be a lot more work than using a service that was designed for multiplayer games like gamelift

#

And I'll check Multiplay out

lost inlet
#

i saw their demo at GDC

#

it's really nothing special at all

#

mostly with deploying new versions

#

you have to create a new fleet with the new version rather than being able to do in-place upgrades

#

we developed an in-house tool to scale servers for our source engine games and while it isn't perfect, it's probably a lot better than gamelift

main sentinel
#

The problem for me is that I'm alone in this project. So, using an existing solution is probably the only option for me if I want to get something done "quick"

lost inlet
#

i really wouldn't call gamelift a solution, more like a creator of new problems

twin juniper
#

is enum replication still sent as a uint8 ? no special gimmiks anywhere ?

lost inlet
#

well that's how it's represented in memory so i would safely assume so

sharp mirage
#

Hey guys, I have a question about using ReplicatedUsing in C++

#

is this reliable and will always get called on the clients?

worn nymph
#

Anyone know how to simulate physics for rag doll on a dedicated server . I'm just trying to make it so once death anim has finished the body rag dolls . But I either get the body falling through the floor or it just flies off into the air and spins around like crazy . To be honest it might not even be something I'm doing wrong I'm testing using a Mixamo character so the physics asset might not be correctly setup for rag doll?

twin juniper
#

@worn nymph change it to the mannequin

worn nymph
#

@twin juniper yeah will do just thought I'd mention it in case anyone had similar experience or if I had to do anything different other than the replication of course

twin juniper
#

Does it do the same in PIE?

worn nymph
#

Yeah

twin juniper
#

With one player?

sharp mirage
#

okay, so I am trying to simulate FX on clients when a client fires a weapon. What is the best way to accomplish this?
I am currently calling a server function to increment a variable(with ReplicatedUsing) which sends Notify events to the clients ( COND_SkipOwner).
Problem is I dont always get the notify events on the clients

#

is there a better way of doing this?

worn nymph
#

@twin juniper not sure I test with two on one player I shoot the other player . He death anims to the ground simulate physics gets called through anim notify which starts the rpc events needed to replicate and then the player I shot goes flying off into the air spinning the camera and mesh like crazy

#

I'm at work I'll post bluelrints later

slim holly
#

question on dedicated servers, there's a checkbox somewhere in skeletal mesh to update joints on dedicated servers too

#

allthou Im not sure is that the issue

thin stratus
#

@sharp mirage this is technically a good way. It's how epic did it in the shootergame

#

Skipowner makes it so that the local client doesn't call the onrep

#

Because you usually handle the fx on the local owning client directly when pressing "fire"

#

Otherwise he feels a delay

sharp mirage
#

@thin stratus the problem is I don't always see the notify events on the clients

rugged patrol
#

Hello. I'm having a bit of trouble with my game. I built a Windows Client and Server and they work. I built the Linux dedicated server and I can connect from the Windows client to it. However, the Mac client is getting a "Client connecting with invalid version" error in the server log. Seems like something that should be easy to fix, but not sure where would the version go.

thin stratus
#

@sharp mirage you are incrementing the variable, right?

#

And if you stop shooting you set it back to 0?

sharp mirage
#

yup, thats correct

thin stratus
#

The fall should happen when the value changes

#

Too many changes might get wrapped into one though

#

Hmmm.

#

@rugged patrol You need to make sure that the engine versions are the same

sharp mirage
#

ah okay

thin stratus
#

You can't build the client with the mac launcher version while using source on win and Linux

#

You need to stick to zhe same engine

#

@sharp mirage at some point, when your weapon shoots very fast, it migjt be better to think about a better way

#

Maybe only signal the point you start shooten and end shooting

#

And let the other clients then perform the fx stuff between both calld

#

Instead of sending each call to play fx

sharp mirage
#

gotcha

#

thanks @thin stratus

rugged patrol
#

Makes sense. I built the Windows and Linux builds from my windows machine which has UE built from source.

#

I'll probably have to grab the same commit and build it on my Mac.

#

Thanks, @thin stratus

hollow pond
#

@worn nymph How did you replicate the physics simulation? Or do you just play them in both clients and let them be? =p

weak meteor
#

Has anyone used Child Actors with replicated Blueprints? Are there any known quirks? I'm considering using them quite extensively, and they seem fine so far, but am not so confident in them...

worn nymph
#

@twin juniper yeah it is the physics asset it works fine using the unreal manequin

hollow pond
#

@worn nymph Does the ragdoll replicates the same? Or do you have 2 separated simulation with that?

worn nymph
#

not sure cant test properly because i dunno how to sort out the other physics body

verbal slate
#

Anybody could help me out with replicating anim montages please?

hasty adder
#

How's the animation called?

verbal slate
#

I currently have this setup:

  • on ever characters tick I check for bool bIsAttacking -> if it's true then I can call function Attack

  • bIsAttacking is replicated like this DOREPLIFETIME_CONDITION(AFFCharacter, bIsAttacking, COND_SkipOwner);

  • on key press I call AttackStart which sets bIsAttacking to true which means function Attack is called

  • Attack() function:

    UFFAnimInstance* AnimInstanceRef = Cast<UFFAnimInstance>(GetMesh()->GetAnimInstance());

    if (AnimInstanceRef)
    AnimInstanceRef->AttackLight();

#

In AnimInstance I do TryGetPawnOwner and then get montage and play it

#

Currently it's not replicated even if I attack on server

hasty adder
#

So client only sees it?

verbal slate
#

only local player sees animation

hasty adder
#

Owner client that is yeah

#

Well must admit I'm mostly in blueprint world.. And these bools I handle with a replicated value on pawn. Which is grabbed in anim blueprint to set a bool in the anim blueprint. That's replicated as well

verbal slate
#

I think it should work but I have no idea why it doesn't work

#

I already made similar mechanic but using normal animation, not anim montage

hasty adder
#

Hm strange server wouldn't see if if its replicated. If the server side sees it we'd atleast know that it's just bot@multi casting the value to everyone to know.

#

ER phone correct

#

Not multi

rugged patrol
#

Any idea why my cross-compiled (from source, 4.15.2) linux dedicated server would die with a failed assert (Detected negative delta time)?

jolly siren
#

I just got that recently too. Only happened once tho. On 4.15.1, didn't see it in previous versions.

rugged patrol
#

The exact same build worked yesterday but now dies as soon as I run the dedicated server process.

jolly siren
#

Every time?

#

I've only had it once

#

have you tried installing the thing it tells you in the logs?

rugged patrol
#

Hmm, it seems to not crash now. But I did manage to get a crash when starting it like 5 times in a row earlier.

#

That seems like a windows driver. This is a linux server.

jolly siren
#

ahh okay yeah I'm on linux too

#

let me know if you figure it out

rugged patrol
#

it just works now

#

I'll get back if I reproduce / figure out how to fix it

jolly siren
#

has anyone seen these Static actor failed to load, SerializeNewActor failed to find/spawn actor, errors on travel?

#

It only happens sometimes and I'm still trying to figure out why

#

@rough iron any ideas?

twin juniper
#

Has anyone solved the issue with ping over steam displaying 9,999?

twin juniper
#

@worn nymph I saw that you posted about this problem in one of the answerhub threads, did you ever get around to solving it?

#

Which is a little disturbing...

#

I want to filter servers by ping for each user but I can't do that if they all return 9999

jolly siren
#

What version are you on?

#

I haven't seen that issue in a long time

twin juniper
#

4.15.2

#

Even when using steams OnlineSubsystem?

#

It doesn't happen if you're on the same network

#

If I play LAN it works just fine

#

And as per the issue, it's still backlogged and not fixed

jolly siren
#

yes

#

with steam

#

and not on the same network

#

PingInMs works for me

#

I'm using a dedicated server tho

paper furnace
#

So this might be a noob question, and I'm quite new to C++ on Unreal, but I'm trying to use FUniqueNetIdString in order to create a UniqueNetId from the Player ID string that oculus returns in blueprint, in order to set the player state ID accordingly. Unfortunately, it is not finding this class, so I tried to add the Online Subsystem as a public dependency in my build.cs file, and when I include it in my class, it brings up like 33 errors from the OnlineSubsystem.h file. What am I doing wrong?

twin juniper
#

@erebel55 It only seems to be an issue with listen

worn nymph
#

@twin juniper it's not a bug it's not implemented properly the 999 is just some default value the programmer entered . The steam plugin is outdated and missing a lot of api functionality . Speak to @fleet sluice he knows more about steam . I'm not really good to ask I realised how bad it was back then and switched to dedicated servers haven't touched steam since . Sorry

hasty adder
#

Speaking of ping. What bout a pseudo ping of sorts. Message sent with say a time stamp to a server and server sends a reply back with same time stamp then get the difference in that time stamp and current time

fleet sluice
#

@worn nymph Heh thanks for the recommendation!
@twin juniper Unfortunately, I don't know by hand why they show ping 9999. I'll have to look into it when I get home. Here's what I believe is happening: typically, a session in Unreal terminology is a lobby in Steam terminology (I think there's a bIsPresence property to turn the usage of lobbies off and use the regular server or something, but I don't remember the exact details on why this doesn't work or doesn't work properly). Lobbies don't have associated ping information as they are abstract concepts and live inside the Steam backend so every client/user obtains data via their Steam client application on their PC. Thus, Unreal is showing you lobby results and has no way of obtaining ping information.

thin stratus
#

The 9999 ping is hardcoded. The steam reply for the session list is not properly updating it so it stays as the default value

worn nymph
rough iron
#

@jolly siren worldsettings? mhh seamless travel chaning the game mode?

#

ogPlayerController:Verbose: NULL GameState when trying to spawn spectator!

jolly siren
#

I get that warning every time, even when it works. And the gamemode isn't changing.

#

@rough iron One thing I did notice is that ClientPostLogin is called BEFORE the seamless travel finishes when it breaks. And AFTER the seamless travel finishes when it works.

#

And I am calling ClientPostLogin from GenericPlayerInitialization

rough iron
#

are you calling ClientPostLogin yourself?

jolly siren
#

yes, from GenericPlayerInitialization. ClientPostLogin isn't an ootb function

rough iron
#

the engine expects that that function get's called only when you first connect to a game

#

it get's called from your GameMode in the login process

#

strange stings can happen if you call it yourself

jolly siren
#

which function?

rough iron
#

ClientPostLogin

jolly siren
#

oh I thought that wasn't an out of the box function, checking for it

rough iron
#

ok, no it's not sorry

#

but there is one that is called that you shouldn't

#

let me revise it ^^

jolly siren
#

okay

#

This is the difference between the logs when it works and when it breaks

#

so it seems like it is a timing issue

#

hmm yeah the GameMode isn't constructed when it breaks

#

But that is probably because the worldsettings are failing to serialize

#

along with the rest of those actors. hmmm ๐Ÿ˜ฆ

sterile pebble
#

does set actor tick enabled replicates to clients? Or it wont tick on clients if it does not tick on server? damn..

jolly siren
#

argh I can't see to reproduce this issue in the editor using multi process, even when introducing simulated lag

jolly siren
#

it seems like this is the issue I'm running into or at least something similar ๐Ÿ˜ฑ

paper furnace
#

I can't include "Online.h" in any of my files. It is riddled with errors

twin juniper
#

@paper furnace did you include the subsystem

#

in your project .cs file

paper furnace
#

@twin juniper I included it in my build.cs file by uncommenting where it says PrivateDependancyModuleNames.Add("OnlineSubsystem"); I also tried including it as a public dependency as well, to no avail. My defaultEngine.ini has all the right prep code as well

twin juniper
#

Do you have visual assist

#

lol

#

because i rememebr having an issue like that, it wasnt a real error

#

just intellisense squiggly lines

paper furnace
twin juniper
#

send your project build cs file

paper furnace
twin juniper
#

This is how I have my project.h file setup

#

no errors lol

paper furnace
#

Super jealous lol

twin juniper
#

ohhh

#

i know what it is

#

Lol

#

after u add that

#

go to Edit => Plugins

#

then OnlineSubsystems

#

and make sure its checked there

#

then Generate project files

#

and it should work then

paper furnace
twin juniper
#

you are using oculus

#

right?

#

make sure that one is checked

#

lol

paper furnace
#

Yea that's checked too...so close!

#

Where's generate project files?

twin juniper
#

the .uproject file

#

right click it and click "Generate Visual studio Project Files"

#

also

#

right click the .uproject file, and open it in notepad

#

then paste whats in it into here

paper furnace
#

{
"FileVersion": 3,
"EngineAssociation": "4.15",
"Category": "",
"Description": "",
"Modules": [
{
"Name": "OnlineTest",
"Type": "Runtime",
"LoadingPhase": "Default"
}
]
}

#

Can't find that option when I right click it, unfortunately

#

Nvm found the option when right clicking on file explorer

twin juniper
#

lol

paper furnace
#

@twin juniper Yeaaa still getting the error...can't understand why. Would it be too much to ask you to send me a blank project with it successfully including the OnlineSubsystem.h file?

twin juniper
#

@paper furnace i would if i wasnt already working on something

#

lol

paper furnace
#

@twin juniper I hear ya...well if you find the time at some point, it would be greatly appreciated. Thanks for the help

twin juniper
#

@paper furnace are you use you generated project files

#

also

#

"Plugins": [
{
"Name": "GearVR",
"Enabled": false
}
]

#

you should have a plugins section

#

in your uproject

#

i noticed u dont have the one for the subsystem

#

check and uncheck the plugin

#

and it should add it

#

then generate project files

#

and try again

paper furnace
#

@twin juniper just did what you said. The plugins section now exists, but still getting the errors ๐Ÿ˜ฆ

jolly siren
#

lol these pictures

twin juniper
#

xD

#

@paper furnace also add the modules

#
    "EngineAssociation": "{}",
    "Category": "",
    "Description": "",
    "Modules": [
        {
            "Name": "MyGame",
            "Type": "Runtime",
            "LoadingPhase": "Default",
            "AdditionalDependencies": [
                "Engine",
                "Core",
                "CoreUObject",
                "InputCore",
                "HeadMountedDisplay",
                "OnlineSubsystem",
                "OnlineSubsystemUtils",
                "Json",
                "JsonUtilities",
                "UMG",
                "Slate",
                "SlateCore",
                "Foliage"
            ]
        }
    ],```
#

should look like that

twin juniper
#

hey so if anyone is on, something odd is happening. I am trying to possess my Character class I made (as a mounting system), I'm only able to move the character in single player when I possess it. It is possessing it but its not letting me move it. When I do DisplayAll on my classes here's what they look like (the first one is when I'm possessing the main character and able to move aroun perfectly fine (this is the VeritexCharacter.cpp class).
http://i.imgur.com/Ds282Bf.png
When I possess the mount:
http://i.imgur.com/tIgnEPH.png
If you notice the character changes to a simulated proxy and nothing changes on testmunt

#

any ideas?

#

also the mount was palced into the scene

#

not spawned in using SpawnActor<>()

twin juniper
#

So for some reason, everything in the Possess() function is being called, except for SetAutonomous() and SetOwner(), and when I try to call it manually it doesn't work.

lost inlet
#

@paper furnace print screen my dude

#

or snipping tool, or sharex

thin stratus
#

@twin juniper how do you call it

#

Possess needs to happen on the server

#

How are you doing that, since the actor is server owned and doesn't allow server rpcs?

#

Cause i assume you are ending up calling posses on the client

slim holly
#

@thin stratus you know how could I do a simulated character launch on client?

#

(sudden impulse)

#

without server interfering too much with the correction

chrome bay
#

Wanna know something fun

#

LawBreakers i built on the ShooterGame sample

#

How about that

thin stratus
#

@slim holly What exactly do you mean? You call LaunchCharacter and the server is trying to correct the whole time?

slim holly
#

I mean Launch character works but it has nasty ping*2 delay

#

even at 100ms it's very noticeable

chrome bay
#

You calling it both client and server side?

slim holly
#

iirc launch gets ignored on client

#

along with most velocity modifying things

chrome bay
#

An alternative way (and possibly the best way), would be to directly modify Velocity on Client and Server

#

since that's essentially what 'Jump' does

slim holly
#

I tried, but getting the location to match before movement correction kicks in is super hard

#

now, did check that the path from projectile simulation is pretty dead on, so I could use that on client side for like a 0.2 seconds before handing over the location control back to server

#

I just dont know how to momentarily override that

chrome bay
#

You doing this in BP or C++ btw?

slim holly
#

BP mainly, My c++ aint so fluent

chrome bay
#

ok

#

From what I can understand, the way to launch a character would be to ensure that whatever 'launches' them has it's behaviour synced as well

#

Then call launch both client and server side

#

LaunchCharacter doesn't get ignored client side, according to C++

slim holly
#

hmm ๐Ÿค”

chrome bay
#

Hmm

#

Problem with Launch Velocity is, it actually sets velocity directly

slim holly
#

onlaunch event did trigger on client

#

but it had no effect

chrome bay
#
{
    if (!PendingLaunchVelocity.IsZero() && HasValidData())
    {
        Velocity = PendingLaunchVelocity;
        SetMovementMode(MOVE_Falling);
        PendingLaunchVelocity = FVector::ZeroVector;
        return true;
    }

    return false;
}```
slim holly
#

so it's just SetVelocity, but queued on next movement tick

chrome bay
#

Mind you so does 'Jump' actually

#

What should happen is, both client launches, server also launches, by the time correction comes around they should have both launched at the same time (ish)

slim holly
#

I got it working on regular doublejump, but it's locked to z+

#

I had theory tho about using custom movement mode

#

since it uses different max speed value, so the prediction/correction margin could be bigger too

thin stratus
#

I did not use Launch Character in my HookUp Swinging game

#

As Launching Character was really weird in na network environment

#

I ended up really modifying the velocity directly

twin juniper
#

@thin stratus The possess works fine, its actually moving the camera, and I can rotate the new actor by moving the mouse. The only thing I can't do is move the actual character when AddMovementInput() is called

#

Literally, walk upto mount, press E, call ServerRPC "Server_Mount" call possess, pass the controller and the actor to possess into this RPC, it moves the camera, lets me rotate, but i cant move

thin stratus
#

What's the class of the mount?

twin juniper
#

its the strangest thing because ti know its not the movement component, it works fine in Single player, but then I also know the possess() function is going through because it mmoves camera, and lets me rotate the object. The only thing that's locked up is the actual movement. I even tried to call AddMovementInput() in an RPC... nothing happened

#

Its

#

ACharacter

thin stratus
#

What happens if you start as the mount

#

instead of the character

#

does it work then?

#

Just to make sure the class itself is not bugged

twin juniper
#

well, i know for a fact it works in single player

#

like im able to possess, unpossess, and move freely

thin stratus
#

Na, that's not helpfull

#

Check if the mount works in multiplayer if you spawn as it

twin juniper
#

k

thin stratus
#

If yes, then we need to check why the possess breaks it

#

if not, then we need check what the class is doing wrong

twin juniper
#

ill just change the DefaultPawn in game mode

#

to the mount

#

and see if it works

thin stratus
#

Yus

twin juniper
#

@thin stratus so for some reason i changed the default pawn yet its still spawning the old pawn

#

Lolwtf

thin stratus
#

Aren't you spawning that somewhere else?

#

Like OnPostLogin or so?

twin juniper
#

ohh yeah

#

shit

#

ill just comment that out lol

#

@thin stratus yeah so when i spawn in as it its the same thing btw, cabnt move

thin stratus
#

Yeah then the Mount itself is the problem

#

First thing to check is if you properly set it to replicate and replicate movement

#

Even if that's beginners mistake, we all have that sometimes

twin juniper
#

I mean thats my constructor lol

#

simple stuff

thin stratus
#

Alright

twin juniper
#

thats the base mount class

thin stratus
#

It's directly from ACharacter, right?

twin juniper
#

yea

#

i know i named it pawn

#

lol

#

it is a character tho

thin stratus
#

Then next thing is checking if the axis events are calling

#

and if yes, if the value is changing when you press buttons

twin juniper
#
{```
#

yep i did a debug log when calling AddmovementInput

#

it still did the debug log

thin stratus
#

So the Axis event is calling

#

Is the Value changing?

twin juniper
#

yep

#

goes from 1 to -1

#

forward/back

thin stratus
#

Hmm, tricky

#

Do you have a lot of code in that hting?

#

Otherwise, mind sharing the header and cpp on hastebin

twin juniper
#

uhm

thin stratus
#

So i can have a look

twin juniper
#

its small

#

i just started on it

#

lol

#

yea hold up

#

thats the .h

#

lemme send u the .cpp

#

thats the cpp

twin juniper
#

@thin stratus Tell me if you figure anything out.

thin stratus
#

@twin juniper The GetLifeTimeReplicated Props

#

You are not calling the super

#

Maybe that's the cause

twin juniper
#

maybe

#

lemme try

thin stratus
#

Despite that I can't see anything weird

twin juniper
#

whelp

#

that seems to have fxed it

#

LOL

#

idk why tho

#

but thanks man!

#

probably some replication stuff in there with movement

thin stratus
#

Character probably has the charactermovementcomponent in its own GetLiftTime function

#

and if you don't call the Super (parent) function, it doesn't replicate them anymore

twin juniper
#

yeah

#

god damn i knwo exactly why i didnt have that too

#

its because i used visual assist

#

and they dont add Super calls

#

when creating the functions

#

so i just forgot lol

jolly siren
#

so on my travel replication issue thing. you get stuck in limbo at a playerstart on the map. and you can't see any other characters on the map even when in view. but you can hear sounds like doors opening or the other player shooting.

vocal ingot
#

@twin juniper it's a bug. Restarting Ue4 editor usually fixes it. (The defaule spawn bug where you change it but it still spawns the old one)

twin juniper
#

@vocal ingot i ended up fixing it, it was a different problem :p

#

that happened because my PostLogin() handles spawning and possession

vocal ingot
#

oh, okay

#

Also, I have a question. For example my game has character selection and I too do my spawning in OnPostLogin (there is no default pawn). How do I know which character the user has selected in OnPostLogin and then spawn that character from the server?

twin juniper
#

uhm

#

dont use onpostlogin

#

create a widget

#

then spawn the actor using SpawnActor<>

#

and possess it using the player controler

#

i mean u might be able to do that on postogin

#

but its going to happen every time u login

#

lol

lost inlet
#

you can send some data in the login URL if you really wanted, depending how complex the choice is

twin juniper
#

yeah idk anything about the login URL

#

it probably is some sort of POST request right?

#

is this for like, gamesparks or something

#

lol

#

the aws stuff

lost inlet
#

if it's something stored in a persistant backend, you'll want to fetch that on login, but while that's being retrieved just spawn them as a spectator pawn or something

#

then when it's received, spawn them as the appropriate pawn

#

but rarely will a multiplayer game (that isn't an MMO) just plop you in the game without some form of thing to confirm

vocal ingot
#

@twin juniper in my game you select character in main menu and when you join there is an algorithm which automatically decides your team and where you spawn

#

I just want to spawn a specific character specified by that player that is being spawned

#

@lost inlet what's a login URL?

lost inlet
#

travelling in UE4 uses URLs

#

common example: MyMap?Game=MyGameModeClass

#

this also applies to connecting to a server

#

you can use this to append this URL

#

which can be retrieved serverside on connect

jolly siren
#

Does the ServerTravel console command work for anyone?

#

nvm guess it doesn't work in editor

thin stratus
#

@vocal ingot You can technically just add an option to the connection URL

#

Connection URL means the IP for example

vocal ingot
#

Thanks! Will try it

twin juniper
#

@thin stratus hey when I possess this pawn, is there any way of moving the camera back? Isn't my camera still attached to the other character?

#

like, its literally inside the body of the thing

#

lolol

thin stratus
#

Possessing will move the viewtarget

twin juniper
#

yeah i know that much, but what if i want to zoom out

thin stratus
#

@vocal ingot Idk if you use C++ or BPs, but in BPs you would do it via ClientTravel and the URL is then sth like 127.0.0.1?Key1=Value1?Key2=Value2

#

I guess when using the "OpenLevel" node, you can do the same

vocal ingot
#

I use both

twin juniper
#

like Possess() => Zoom out based on size of mount

#

lol

thin stratus
#

Or just use a consolecommand

#

For joining sessions, I actually don't know how to specific an option

#

especially for things like steam it might be that you need to follow specific rules

#

@twin juniper Well the Server has the "OnPossessed" event

#

You might be able to use that

twin juniper
#

Isn't that on the character itself

#

lol

#

like its character specific