Network Multiplayer Fundamentals - February 27 - Live from HQ

Will this cover anything about the replication graph, or will this focus in on the more blueprint based replication tools that exist in the current gameplay framework, similar to eXi’s network compendium?

Will there be any discussion about how to easily replicate movement in a top-down project? Are there easier ways than having to have an AI controller controlling an AI pawn that guides the character? Thanks!

[QUESTION] Would you be able to go over having split screen + multiplayer? Like having 2 players coming from one client instance(I assume thats the best way to say it) and then another client that is just 1 player sort of thing.

Thanks for your response, @MikhailPrinke! It sounds like we were heading in the right direction, which is encouraging. The process we’re trying is to load the RGBA pixel information of the image into a TArray<uint8> on the server. The server then passes that TArray on to the clients with a multicast RPC. In that function, the server and all the clients have the instructions to build their own UTextures using Memcpy from the TArray they received.

It works great for small images, and we only do this occasionally when the user chooses to load an external image from the server’s hard drive, so we’re prepared for any hitches. The problem we hit is the following error, this one in particular happens for a 256x256 sized image:


LogRepTraffic: Error: SerializeProperties_DynamicArray_r: ArraySize (262144) > net.MaxRepArraySize(65535) (InRawTexture). Net.MaxRepArraySize can be updated in Project Settings under Network Settings.

Max Array Size and Max Array Memory in Project Settings are both maxed at 65535. Would the best option be to break the TArray up into chunks to build the image over a few frames? And could you speak to why these settings are important, and if there are any plans to increase the values past 65535? I can definitely see why you’d normally want them to be (very) limited, but it can be useful for projects that are less game-focused and are willing to break the rules a bit. :slight_smile:

I am not begging for the ultimate production solution here but if I would make a comparison between UE4 and Blender, then UE4 itself is feeling like Blender 2.82 while it’s networking part is as user-friendly as Blender 2.49. It’s like playing the MYST games and appears to be more complex than studying the basics of heart surgery. And trust me, I had to study such stuff for medical animations years ago.

As an Artist, I am already happy to have templates like the third-person character that I can understand and build up my little game-prototypes from it. At the moment, I am trying my best as a non-programmer to set up a very simple persistent server for another prototype. Persistent in the form of Conan Exiles. Clients can log-in, chat, doing things, log-out. Of course, at some point after a vertical slice, all of these network systems would be remade by network programmers. For now, I try my best to understand all the terminology but even with certain tutorials and docs, it’s a ton of exhausting trial and error.

This is an honest opinion on how I see networking in UE4 and even Unity and are in high hopes that all of this might become a lot more user-friendly or at least easier to understand one day.
I am really happy and looking forward to the 27th to learn something new about how all of this works and hope to use it wisely in my next little game.

Kind regards and have a wonderful Sunday,
Kaji

Hi there!
I know this is a niche area, so it will not be the focus, but perhaps a few minutes could be devoted to it:

Fundamentals regarding networking of VR games which make heavy use of IK driven by motion controllers / headsets etc to drive parts of the skeletal mesh.

While still in its infancy, this area will clearly grow in the next years, Oculus pouring money into becasue of Quest.

Great topic, but I agree with DomusLudus and Mewthree there’s already great content on the basics online. Great courses on Udemy. But some key elements are always missing. It’s the little things like all do you keep player information in between map, since the player state is destroyed. How to implement Seamless server travel. All the Gamemode functions to manage the game state. I’m hoping to get some insight into that. Will there be?

Hey Victor Thank you so much for putting this one together, got a couple of questions for the session.

In a recent live stream Michael Noland mention that we shouldn’t get player controller 0 because there are controllers on both client and server

Can you show us some examples of how to do communication to do this sort of communication, when it comes to multiplayer

I would like to know the PROS and CONS of storing things in components vs containers like the player character.

MikhailPrinke In the current build I’m unable to join sessions from and Android hosted by PC or even another Android. Also, my older Android phone can host a session and a PC can join but when I tried to do that with a newer phone ( Poco f1) nothing happened. What might be happening here?

Also, will you talk about cross-platform sessions in Online and LAN?

Does this live stream cover Networking with C++ or just Blueprints?
Also, does this involve Cross Platform Networking?

If not, when are you planning to conduct a session on that?

I would love to know how to use Gameplay Ability System with mulitplayer in mind. Both c++ and blueprint sides of it, maybe some general rules to follow as well. I have read that the system is build with network in mind but still you released the Action RPG sample which is built upon it and accorning to a livestream some time ago will not work with multiplayer.

Thanks

I’d like to see a bit of this as well… if you can’t cover it this time can it be a future webcast session?

Big thanks…

It would be cool if this demo also showed how to do back end authentication. I already know how to do this personally with GameSpark, and I would be willing to provide the code that works with 4.24

So, this is something I brought up years ago, but I might as well bring it up again, as I’ve seen so much misinformation spread in various discords about Networking in Unreal.

I would like if you could tell the stream WHY you are programming something the way you are programming.
I have found people really understand replication in Unreal when you let them in on why your doing what your doing. They can see HOW we are programming it by the visual nature of BP or code.but WHY your doing it some specific way is never clear when looking and focusing on only the HOW.

For example. Taken from page 42 in eXi’s Network Compendium.
https://i.imgur.com/VnPZev3.png

These two graph cutouts are really interesting because it subtly touches on abstraction in the context of both Unreal AND Networking.
Here they are separating networking function and the actual code. This is really important, because: The variable inside TestGameState is replicated, and has implemented a non replicated “IncreaseVariable” CustomEvent which increases the value of OurVariable by 1. Then outside of TestGameState we are implementing the ExecutesOnServer “Server_IncreaseVariable” CustomEvent. Which calls that non-replicated function inside TestGameState.

You could have done this exact thing a number of different ways, including this way. BUT Essentially what im saying is there are like 9 million ways to skin a cat, tell the kiddies why you skinned the cat which ever way you skinned it. So that when they go to skin their cats they understand the reasoning behind why something is setup the way it was.

EDIT: Also, i don’t believe its Epics job to tell us why, that’s more of what University would be for. However, it’s so informative and helpful I couldn’t help but ask.

Hello!
PLEASE SHOW / TELL !
How to make Lobby via Steam in UE game ?!
Thank You So Much!

I would love to hear any updates about the network prediction plugin in the works. And when is a general time we can expect the release of it.

Excited to see what more this can open up for us. Our only real resource has been eXi’s compendium!

The plugin is in active development, no release date to announce at this point. The best place to follow along is in the readme on GitHub: https://github.com/EpicGames/UnrealEngine/blob/cae4ef590cb470651784bff25112e1ec599f10dd/Engine/Plugins/Runtime/NetworkPrediction/readme.txt

We’ll be working with Blueprints during the stream, but the fundamental concepts apply across both C++ and Blueprints. For cross-platform networking, stay tuned for updates to Epic Online Services!

Hi, I won’t be able to watch it live so going to ask questions here.

World composition and more specifically origin shifting is marked as “might not work in multiplayer” for quite a long time.
However, I occasionally see references to changelogs, people talking about using it within a multiplayer context, with the caveat that the server has all streaming levels loaded in at the same time. Could you go over any known examples of projects that use the built-in origin shifting, or along with possibly world composition for a larger session or persistent multiplayer (if so what additional things have the done to make it work).
I want to know how feasible it is to combine these technologies together for larger open-world settings.