Download

[Twitch] Networking, and Game Jam Theme Announce! - Nov 13, 2014 @ 2PM ET

WHAT
Networking in UE4!

  • Framework Discussion
  • Network Demos
  • Making MP games easier/possible with only BPs
  • Turn Based MP support
  • Performance
  • Better Profiling Tools for MP
  • Other pro-tips and roadmap pit stops!

p.s. Hey, 7DFPS folks, help us help you! Anything we can answer on the stream to give your projects a bump?

p.p.s. We’ll also announce the theme for the November Unreal Engine game jam!

WHEN
Thursday, Nov. 13th @ 2PM ET - Countdown]

WHERE
www.twitch.tv/unrealengine

WHO
Dana Cowley - Sr. Marketing Manager
Ryan Gerleve - Engine Programmer
John Pollard - Lead Programmer

Questions? Let’s hear 'em!

Sounds awesome, I’ll be there.

I have problem dealing damage from Client to Server using Blueprints only (Server to client works fine). Could you guys check it out and share what and where the problem was?

Couple from me;

How would you go about getting resolution of client screen (viewport) ?

Or, how about going around tracing which is offseted by position of crosshair on screen. Say that crosshair is offseted from center by 50px down and 50px left. All tracing is done on server. But server doesn’t know anything about player screen resolution which is critical to make it work (deproject). Any ideas how to approach that ?

Very nice! I’ll be tuning in for the networking discussion - great topic :slight_smile:

And welcome back to the stream Dana!

I can’t wait for that stream I’ve been wanting to get people in the Maze with me ! Still haven’t look at Networking, so I look forward to that as a starting point !

Awesome topic :D.
I’d really love to have a better idea of when to use what ‘core blueprints’ for sharing/synching data between players and the state of the gameplay.
For example what should be stored on character state/character pawn/game state/game mode/game instance, and what should be sent to what, if possible in the context of a battle arena game.
Also what are the best methods of transferring data for all players between levels via the game instance and transferring them to new areas.
Another question I’d really love to know the answer to is if there is an easy method of being able to reconnect a player to a world that was randomly generated with instanced objects from the server-and have the client know what objects were spawned and where?

Looking forward to this one

Haven’t been able to play around with the networking features yet,
but this will see definitely be a must watch for me!

I look forward to every Thursday for these. Can’t wait to tune in live…I’ve not really played around with any form of networking so far, so it’ll be a great opportunity to learn some of those features.

If you’re doing a community spotlight, I’d love it if you could feature Dinosaur Run if possible, it’s a game I’m creating for my 3-year-old son. It’s currently in BETA

https://youtube.com/watch?v=9q84DI6I90g

Forum thread here : https://forums.unrealengine.com/showthread.php?51636-Dinosaur-Run

I’m currently still struggling to find a solution for this, for my 7dfps project: How to get a bullet hit me but then pass through me? - UE4 AnswerHub
Having some problems with matinee and animating materials here: https://forums.unrealengine.com/showthread.php?51696-Matinee-Material-Animation-doesn-t-work See my last post there.
I’m sure I will have more questions but often I get them answered relatively quickly on the AnswerHub already.

Looking forward to seeing this. :slight_smile:

[Question] Can we get a short explination on how repication conditions work?
Edit: So i think this should get us started on conditions, cheers!
https://forums.unrealengine.com/showthread.php?1690-New-blog-post-Network-Tips-and-Tricks

[Question] Is the max world size in UE 4 the same as for singel player and multiplayer, if not what is the max size?

Looking forward to this stream :smiley:
Cheers!

[Question] I just started a multiplayer game, and am wondering what the best method to build a lobby is. Can I do this all with blueprints or do I need to break out the c++?

Hi!

7dfps is my first real work in UE4 so the following questions/comments might be obvious to folks, but I’m including them in the hopes that someone finds something useful. :slight_smile:

Networking Questions:

  • How do you recommend a remote team test network games? We’re used to having a master server to connect to for creating/finding/joining games, dealing with nat punchthrough, etc. From digging into it it appears that UE4 doesn’t have those capabilities right now. For distributing a game jam game, how should I best instruct players to create and find games?

  • What’s the best way to handle a value that needs to be controlled by the client but replicated across all players? For example, in my game the guns are lasers mounted to the head of a t-rex. When the player looks up and down I adjust the rotation of the neck so the head/guns are pointing in the direction that the player is aiming. Right now I’m using a custom event to send that value to the server, which then replicates that to all clients. Is there a better way to handle this? It may also be worth noting that the variable and logic are currently all in the character blueprint. Would the behavior change if it was in the player controller blueprint instead?

  • How does variable replication in animation blueprints work? I see the option for variables to be replicated, but I couldn’t find any examples in the docum

  • What’s the recommended way to persist data across levels? Any gotchas to be aware of?

Misc Comments:

  • When spawning 2 clients for testing network stuff, I get this warning repeatedly and I don’t know what it means, but it kills performance (60fps->7fps) if I have the output log visible:

LogNetPackageMap:Warning: FNetGUIDCache::SupportsObject: LandscapeHeightfieldCollisionComponent /Game/Maps/UEDPIE_2_arena_1.arena_1:PersistentLevel.Landscape_0.LandscapeHeightfieldCollisionComponent_44 NOT Supported.

I have a similar issue if you’re standing on top of a BSP brush instead of a landscape.

  • I’d really love to see a tutorial around creating an animated mesh in blender and importing it into UE4 with scale/orientation/etc all handled properly. We’ve found a set of steps that is (mostly) working for us but a straightforward set of steps to follow would have been hugely useful.

I’ll post again if I think of any other questions/issues but that’s what I’ve got for now. Looking forward to the stream!

[Question] What is the preferred method of syncing a non-root motion full body animation across a server to all clients? For example, a full body attack montage from an AI that is triggered via server side logic/behavior tree. Currently I have a custom struct that is replicated and plays the animation via a repnotify.
If the animation needs to be synced with a specific player’s animation than I run into lag/delay related issues as I currently haven’t baked in any ping based or latency delay for the execution of the Animation on the server.

[Question] Is there any chance there will be added support for nested replicated sub-objects or more specifically, components within components? By default when a subobject is replicated the owner is always set to be the root actor regardless if it’s owner is the root actor or a child component. See this forum post for more context. I could implement the bunch modification side of things, but I worry about issues I would introduce with setting the stable name logic for proper serialization.

[Question] For a multiplayer game with a large # of gameplay significant rigid body related actors. Is replicating all of them the only/simple way to maintain some sense of syncing/determinism among the actors since physx in Unreal is not deterministic? I know for some of the vehicles more sub-stepping is done on a thread different from the main so using logic based on game state would probably not be valid.

[Question] Does Epic route all RPC calls through player based actors to get their actor channel? I’ve ran into a few situations where I want to execute an RPC on a dynamic replicated actor and find that I have to find an associated player to get its net connection in code. It seems this is the default case as its whats done in the gameplay abilities module. It would be nice if there was an easier way of doing this, but I guess its the nature of the system.

Thanks in advance.

Hey everyone, thanks a lot for your questions. We look forward to seeing you soon.

Cheers,
Dana

A couple more questions I forgot to ask before-
I’ve heard some multiplayer games not needing players to go through the trouble of setting up port forwarding or just ticking a button to have it port forward automatically, this would be especially helpful for adding accessibility to a game and giving people an easier time trying it out. Is there any available way of doing this with blueprints or is this something only accomplish-able via a service like Steam?

Is there an easy way to setup animation synchronization for non-character blueprints. The mesh of the character blueprints synchronizes automatically, but regrettably there are still some limitations caused by the character blueprint that make it unavailable for use in certain game types which still need a character with animation. Trying to setup character animation synchronization manually is a nightmare right now compared to it simply being done automatically, is there any recommended method besides having to tell the server each time your animation changes which is easier, or is animation synchronization a potential feature addition in a near-future release?

Questions

I’m very interested in networking performance tips:

What is the reasoning behind the default 10kbps channel limit? What’s a good limit for a PC game? What about an XBone / PS4 game?

How many simultaneous Characters can be well supported in a listen-server game? - Even a crude ballpark on this would be great.

How can we optimize AI & Player Characters for network efficiency?

What’s the best approach to avoid movement lag with fast-moving actors? For example a replicated rocket actor with a ProjectileMovementComponent can be pretty choppy on the client. Using a PhysicsThruster on a physics-based actor doesn’t seem any better.

Thanks!