
Mirrored Multiplayer
Everything is Mirrored
Mirrored multiplayer is our sync mechanism. This will be quite a different flavor from other game engines, but it'll provide a smoother and much-more-fun dev experience. Buckle up!
Choose What Not to Sync
- Many game engines: "Nothing is synced: choose what to sync".
- Mirror Engine: "Everything is synced: choose what not to sync". We flip the paradigm on its head.
What's Synced?
Everything.
Seriously?
Yes.
Are There Exceptions?
Yes! In general, if it exists for you, it exists for everyone else, but there are key exceptions.
Mirror Engine mirrors how the real world works, to keep things as simple as possible. If you're painting a wall with 2 people, you'd see the same wall and the same paint with no differences.
For example, would these be "synced"?
- A gun on a table? Yes.
- A player's inventory? Yes.
- A monster's stats? Yes.
- What the person next to you just shouted? Yes.
- How fast a car can drive? Yes.
- The weather? Yes.
Alternatively, these would not be "synced":
- A thought in your head? No.
- A heads-up display on your glasses? No.
How Are Assets Synced?
Asset files are streamed to all players in real-time.
No need to build the game locally and send it to everyone: An asset in-world for you means it exists for everyone.
In the future, Mirror Engine will support automatic asset optimization through level of detail (LOD) and other runtime techniques.
See our Assets page for more details.
Won't This Destroy Bandwidth?
No, Mirror Engine is optimized for this. Though it's technically challenging internally, we believe this makes the easiest and most fun game dev experience for you.
That said, there are still limitations to this approach since only so so many bytes can be sent over the network to all players in a game. Since this is a new approach, we'll have a few kinks to work out and always welcome your thoughts.
Current Limitations
- Physics: Static and kinematic objects are synced, but dynamic objects are not. You and other players can run into a wall, but if the wall becomes a dynamic object (e.g. its blown to pieces), the physics of the wall fragments are still physical, but not everyone sees the exact same thing.
- We plan to integrate full physics sync down the road. Let us know if this is something you're particularly interested in.
- Particles: Particle settings are synced, but exact particle output is not synced. So if you create a smoke effect, everyone will see the same effect, but smoke particle A will not be in the exact same position/rotation/scale as smoke particle A for everyone else.
- Don't fret: Since the Particle Component settings are synced, the experience is still largely the same for all players.
We'll add more how-to details here once features are released.