Replication/Discussing
Wormbo: Alright, this is about how to structure the replication pages in a way that actually takes confusion away instead of adding to it. Here's a first idea.
Basically we need:
- a main topic page
- This should only serve as a short introduction and for structuring the whole complex of replication tutorials. It should not contain anything specific, i.e. no talk about actual replication techniques, like it does now.
- an introduction
- What is replication? Why do we need it? How is it done in the Unreal Engine? Not that the last question should only be answered in a general way here. Still no actual examples on this page!
- the basics
- I think it's a good idea to tell people about NetMode, Role and RemoteRole for a start. Talking about relevance and actor replication would probably fit as well. Maybe a simple server-client example (e.g. a mutator that can spawn things) should be used to explain this.
- variable replication
- After the coder knows how to get actors to remote clients he's ready to try replicating variables. An example based on the basic actor spawning mutator could be used here.
From here on it gets a little complicated. Maybe something like this would work out:
- using simulated functions
- Based on the knowledge about Roles this page could explain the details about using simulated engine events to call own code clientsidely. It should point out the traps of non-simulated functions in a calling chain (superclass versions of functions, etc.) and make absolutely sure people don't think of simulated functions as multicast function replication!
- replicated functions
- This is where coders seem to have the most problems with. This should be explained in great detail and with simple examples.
Maybe it's also a good idea to create a complex example mod that is used throughout the whole replication section.
Current Replication Structure
- Introduction to Replication
- Replication
- Replication Block
- Role and RemoteRole, and NetMode.
- Netcode Idioms
- Simulated Function
- Replicated Function
- Actor/Replication
- KActor Replication
- Vehicles/Replication
- Animation Replication
- Another Look At Replication
- Replication examples
Discussion
SuperApe: Added Current Replication Structure. Yay, Wormbo! I can't wait to see this come together in a cohesive way. It really needs to be organized better. When I get more information from one BUF Forum post than I can get in five wiki pages, something's wrong:
Wormbo regarding weapons replication:
The wiki mentions that function broadcasting is not possible. Also, the Weapon actor is only available on the server and the owning client becasue it's invisible to other players. You'd have to replicate via the attachment.
To force nearly instant replication, you can use the same trick Epic uses in a lot of places: "NetUpdateTime = Level.TimeSeconds - 1"
To ensure a group of values reaches the client at the same time, you can group them into a struct. You can detect the arrival of a replicated value with the PostNetReceive() event.
Fyfe: Wormbo's layout of the topic looks good. I would add (either as a seperate page, or to the intro) a description of how the networking works in the unreal engine, something along the lines of the first 2 sections of [Unreal Network Architecture]. Replication is a solution to a problem, I think it would be a good idea to out line what the problem is that Replication solves. It doesn't need to be technical, just enough so the reader has a clue what replication is trying to do.
To expand on Wormbo's layout:
- Replication – This contains the basic concept of network play and a breif intro to replication
- Key Concepts
- Types of Replication (Replication/Message Types)
- Actor Replication
- Variable Replication
- Functioin Replication – Just a summary here this needs it's own section
- Replication Block
- Function Replication
- Karma/Animation Replication – Not sure if this is needed, but there are pages on the topics.
- [Player Prediction]? – An advanced topic, more for those who want to know how it works on a lower level.
- FAQ – If the above is do right this shouldn't be needed, but the world is great at inventing better idiots