Come Learn Blueprint Multiplayer with me! (aka 's a Glutton for Punishment)

I haven’t read through this post yet, but if the title is any indication of the contents, I am SUPER excited to see this project develop!

Quick (and probably really stupid) question, though: does any of this involve the making of a co-op game?

Doesn’t matter, it’s the same mechanism if you want to do co-op. If you understand how replication works, other parts will fall into game design realm.

Gotcha, thanks!

This is the state of my game, coming along nicely. Blueprint is FAST for iteration, holy cow.

https://drive.google.com/folderview?id=0Bwoy4ZeER8JjMGp3VS1VMFZ2czQ&usp=sharing

Run Client.bat to connect to my listen server I’ll keep up. This link will always contain the latest build of my game so you can bookmark it if you’d like to keep tabs.

Don’t know if still following this thread.
I just finished exploring PlayerState, used to count kill/death etc per game.(I think it could possibly carry over to next level if I remember it right.)
Pretty basic rules to follow:

  1. you still need to set replication for you PlayerState variables.
  2. PlayerState is owned by server side Controller(replicates to local but should only update on server.)
  3. HUD can just get whatever local copy to update on screen info required.

Other things learned:

  1. when you copy a graph with a timeline node, the curves channels won’t copy properly.
  2. spring arm seems to collide with projectiles from example content.
  3. migrate asset links way too many assets, need a way to remove references after nodes deleted in graph.
  4. relate to 3, create a copy of an asset make original asset a reference, we need a “duplicate”. So after we clean up the duplicated BP, we can migrate minimum assets over.

I am still following this thread! :smiley: I’ve just been an absentee father to it :frowning:
I’m so happy to see so much discovery and success! I’ve had limited time to actually work on anything other than my Quad copter game. I’ve taken what i’ve learned here and incorporated it with SUCCESS! :smiley:

I’m also working on events and state and replication, so I’m curious to see what you find. All the fancy HID stuff I’d figured out for single player is totally broken. I’m also extremely distractable and decided to work on some level design and learning Landscapes and the texturing of those using slope to determine the texture.

Hopefully I’ll have some time today to make some headway and try out some of these demos posted!

Thank everyone. Great posts!!

I used the info to add basic Multiplayer to the rolling ball template. The hardest thing was trying to get the physics to be handled by the server. I had some great laughs as I tried to figure out what to call that would show the marble rolling properly.

VERY good job. I will be implementing this myself :slight_smile:

Thanks, that saved me today :slight_smile: It’s logical, but I just couldn’t figure it out myself :rolleyes:

I was looking over this thread and while yes it will work logically, there may be an issue with sending so many RPCs which are designed for transient actions as opposed to state. So sending an RPC for movement would be deadly in terms of a larger scaled game. Typically you don’t want to be running RPCs for movement. Unless I am wrong about this. RPCs were designed for non-reliable actions (mostly), and because movement is so important, it could cause many issues in the grand scheme of things.

I absolutely agree. I’ve been worried about that as well. What’s the better option tho?
Edit: The reason i’m using an RPC, rather than the in-built movement replication or replicating the location, etc. Is to reduce input lag and smoothness. I have ti set up right now so that it’s only replicating movement using an RPC from the server to the individual client (Not multicasting to everybody)

Well movement is already replicated if you set it to replicate. The server will handle the movement and replicate it to all the other clients that are relevant.

Indeed, that’s how the pawns replicate their position to each of the clients. Where I ended up using the RPC was to send the transform back to the owning Client as the movement, etc. is being handled on the server and the replication code doesn’t handle that right (I was moving on all the OTHER clients screens!)

I’ve also improved this call so it’s not sending the entire transform, just the location as a vector and the rotation as a Quantized vector. This SHOULD reduce the overhead.

However, your point is a good one to keep in mind. The use of an RPC on a Tick Event should be limited and avoided as much as possible, and if you’re not doing the movement server-side don’t do it!

Hi ,

Your tutorial has been a great resource for me while starting to learn about blueprints.  Everything seems to work, though the update rate is poor, but I've not been able to figure out how to start up a multiplayer game that connects to a different machine.  I'm clearly missing something basic in the setup - following some threads using open or travel or serverTravel failed to work.  Do you have a good pointer to some step by step instructions? Thanks.

Have you make sure the router side of thing is done properly? Or are you just testing in a single subnet(LAN) setting?

Hi - thanks for posting this - it would have taken me forever to get my respawn to work.

Question 1) my PlayerState - where do I tell the engine to use my blueprint with my expanded properties. Am I even approaching this right/can this be done in blue prints at the moment

Question 2) player name - I tried Haha71687s game - great work (p.s dont forget to update your client bat to 127.0.0.1 if testing local) - anyhoo - how do i set my player name? I assume this might be the answer to my first question

for Q1, when you edit your game mode BP, go to “defaults”, and expand the GameMode section, you can select which player states to use.
Q2, I assume there is a connect argument/console command that lets you change it.

yes this whole issue was i didnt see that little pull down to set my custom player state - i’ve made great progress since - thanks

Glad you got that worked out. Now, can you help me understand when/why to use a custom player state, rather than just putting it all in the PC?

@, I think(based on my poor memory while figuring out respawn) player state are there for when you need to carry something over to next level.
PC on the server side might not survive level change(ie player might disconnect and then reconnect when level loading is complete as in many FPS games).
So server side player state is useful if say the player hash matched, they just hook up that player to original slot.

But, this is just my poor guess with the code I’ve seen(that was based on 4.0.1). Hopefully a Epic guy can see this and explain it better than I do.