Network Multiplayer Fundamentals - February 27 - Live from HQ

Hi, a brief covering on how best do possessing (mount/enter) . like getting on a rideable bike, horse and the rider mounts the bike not using the visibilyty or hide mesh but play a enter animation and play the movement and all animations. Something else then shooting a gun :-), thx

+1 !!!

As good as the stream was today at conveying the basics of networking using Unreal Engine. I’m highly disappointed in Epic Games for deciding to stop sponsoring the ‘Unreal Engine’ category on twitch. The community that streams within that category is awesome, and is a great resource for new developers to get some answers to questions live. We within the category community have built incredible friendships and incredible achievements on our projects due to the existence of the category.

I would really like for you to hopefully get together with the streaming community that actually streams in the category and get feedback from them, before deciding to take a huge change like that to the community.

Thanks for the support.

-During the stream you guys mentioned examples of what not to make reliable, such as movement SFX, VFX etc.So a good practice for making reliable things would be to only mark things that have to do with gameplay?

-Is there any way of play testing the audio replication in the server pie editor window for instance, if not how do you guys approach this ?

Thanks in advance.

Hi Saxanth!

Several streamers have been switching back and forth between Science and Technology and Unreal Engine to try and capture as wide of an audience as possible. We’d rather not divide the community, and to help grow it, Science and Technology is a better fit since we can all connect and share with other creators around the world, regardless of platform. We’re currently working with Twitch to find other ways to identify Unreal Engine specific content, and we’ll let you know more as soon as we have something concrete to share.

Remember that you can always @ us or PM here on the forums!

Hi a copy of the project that was used as demonstration in the stream has not been posted yet is that right? (download link)
Just want to make sure I dont miss it TY :slight_smile:

Hi,

you mentioned in the stream that host migration is built in UE4 and that the workflow might be documented somwhere. Could you post a link? Or detail the steps that have to be taken?

Hey, thanks for covering networking on stream guys!

Though all the info has been covered before in many places, even on stream…

I would also love to see a breakdown of how the PlayerMovementComponent handles networking, since it serves as a good example of how to do predictive networking.

It would be great to also see more advanced concepts covered, such as rollback hit detection, although the documentation might be a better place for this.

Perhaps topics such as these could be covered together with the release of the networking prediction plugin?

Hello,
First I want to say thank you for the great stream.

I would like to ask about networking in an RTS project with something like 8 players, as the players do not control any real pawn on the level and just sending the commands (sending from client to server & then execute that command on AI characters from server), how we can optimize the AI characters?

for example, as you demonstrate in the stream & other samples by epic like the shooter game project in C++, for commands when a character input happens like the LMB for fire weapon we need to pass that to the server and etc to run that command correctly on the owning clients & others, do we need to pass fire command from AI characters to server too or everything happens on the server for them?

Totally if you can give some information for AI characters in a network game that would be great.

do they cover melee hitting in this live stream thousand tutorials on shooting

I am about 22 mins in and so far, it’s utterly amazing. Up to this mark it is exactly what i was talking about. Very well done. Thank you for focusing on why things need to be setup a certain way. I know this will be useful for everyone, be it actual reference, or to be able to link as a reference. Superb stuff.

Edit, finished it, freaking Epic, Epic.

  1. When a replicated array is changed on the server (let’s say an item is added), is the entire array sent over the network to all connected clients, or is just the change to the array sent over the network?

  2. Is the behavior the same regardless of the type of the array (array of ints, floats, structs, etc.)?

  3. Any plans to support replicated data maps (the variable type)?

Thanks for this unreal inside
@VictorLerp Can u please share the Network Companion Graph that you guys talked about? you know the one is that sat on your background for 2 years.

@Arman

Also adding it to the resources section.

Any of the promised follow-ups, such as (1) Host Migration [timestamp: 1:16:24] and (2) staying in the already loaded level when joining a server (e.g. lobby) [timestamp: 1:14:22)]?

We’re planning to do another Networking livestream this year with questions that we couldn’t answer at the time :slight_smile:

If you want to use Steam Lobbies, check out the SteamCore:: plugin, it has functionality to handle Steam Lobbies & there is a downloadable example on how to create and find lobbies

Funny you should mention this, because we recently revised the Character Movement Component documentation with a full breakdown of how it works. :slight_smile:

https://docs.unrealengine.com/en-US/…ent/index.html

I’m more of a fan of melee-oriented games myself. In this instance, a projectile served as a clearer illustration of the replication process. :slight_smile: Much easier to tell what’s going on when you’ve got a spawned object to work with.

To handle a melee attack, when you fire the weapon, you play an animation montage and use an animation event to trigger a hit box associated with the weapon or run a box trace. In either case, you find overlapped opponents, then cause damage to the valid targets.

It is very likely you want your hit box to be “active” for longer than one frame. This would potentially cause actors caught in the box to be damaged every frame. So, you build a list of hit targets, and exclude anybody from being added to the list if they’re already in it. If you want a melee hit to deal damage multiple times during an animation, like with certain fighting game bosses (Justice from Guilty Gear comes to mind), you can clear out the list of hit targets to refresh it and allow the attack to damage actors again.

To handle this over a network, it’s necessary to trigger the same anim montage for the attack both on the server and on the clients. The Gameplay Ability System has features built-in for handling this process, and in the Character Movement Component we detail how root motion replication and root motion sources are handled, enabling you to create complex movement. Otherwise, the process for registering hits needs to occur authoritatively. Some client-predictive logic may be required depending on your needs for responsiveness or variety in melee attacks, similar to what Victor and I discussed for client-predictive projectile firing.

This livestream covered Blueprints. For a C++ oriented lesson, you can refer to the Multiplayer Programming Quick Start Guide, which covers most of the same topics in C++.