mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-18 02:50:32 +00:00
readme update
This commit is contained in:
parent
c179d233a1
commit
579fd68d56
87
README.md
87
README.md
@ -15,39 +15,68 @@
|
|||||||
|
|
||||||
<img src="https://user-images.githubusercontent.com/16416509/119117854-3e4e2b80-ba5c-11eb-8236-ce6cfd2b6b07.png" title="Original Concept Art for Games that made us dream. Copyright Blizzard, Blizzard, Riot Games, Joymax in that order."/>
|
<img src="https://user-images.githubusercontent.com/16416509/119117854-3e4e2b80-ba5c-11eb-8236-ce6cfd2b6b07.png" title="Original Concept Art for Games that made us dream. Copyright Blizzard, Blizzard, Riot Games, Joymax in that order."/>
|
||||||
|
|
||||||
## Mirror
|
## Mirror Networking
|
||||||
Mirror is a **high level** Networking library for **Unity 2019/2020 LTS**, compatible with different **low level** [Transports](https://github.com/vis2k/Mirror#low-level-transports).
|
The **#1** free **open source** game networking library for **Unity 2019 / 2020 / 2021**.
|
||||||
|
|
||||||
Mirror is for indie games & small [MMOs](https://www.youtube.com/watch?v=mDCNff1S9ZU), made by the developers of [uMMORPG](https://assetstore.unity.com/packages/templates/systems/ummorpg-components-edition-159401) and [Cubica](https://www.youtube.com/watch?v=D_f_MntrLVE).
|
Used **in production** by major hits like [**Population: ONE**](https://www.populationonevr.com/) and many [more](#made-with-mirror).
|
||||||
|
|
||||||
Mirror is optimized for **ease of use** & **probability of success**.
|
Originally based on [**UNET**](https://blog.unity.com/technology/announcing-unet-new-unity-multiplayer-technology): battle tested **since 2014** for 8 years and counting!
|
||||||
|
|
||||||
We needed a networking library that allows us to **[launch our games](https://mirror-networking.com/showcase/)** and **survive the next decade**.
|
Mirror is **[stable](https://mirror-networking.gitbook.io/docs/general/tests)**, [**modular**](https://github.com/vis2k/Mirror#low-level-transports) & **[easy to use](https://mirror-networking.gitbook.io/)** for all types of games, even [MMORPGs](https://www.youtube.com/watch?v=mDCNff1S9ZU) 🎮.
|
||||||
|
|
||||||
Mirror is **[stable](https://mirror-networking.gitbook.io/docs/general/tests)** & **[production](https://www.oculus.com/experiences/quest/2564158073609422/)** ready.
|
**Made in 🇩🇪🇺🇸🇬🇧🇸🇬🇹🇼 with ❤️**.
|
||||||
|
|
||||||
---
|
---
|
||||||
## Free & Open
|
|
||||||
Mirror is **free & open source**!
|
|
||||||
* Code: MIT licensed.
|
|
||||||
* Dedicated Servers: [Anywhere](https://mirror-networking.gitbook.io/docs/guides/server-hosting)!
|
|
||||||
* Player Hosted: [Free Epic Relay](https://github.com/FakeByte/EpicOnlineTransport)!
|
|
||||||
|
|
||||||
We need Mirror for our own games, which is why we will never charge anything.
|
|
||||||
|
|
||||||
Funded only by [Donations](https://github.com/sponsors/vis2k) from our [fantastic community](https://discordapp.com/invite/N9QVxbM) of over 10,000 people.
|
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
The **Server & Client** are **ONE project** in order to achieve an order of magnitude gain in productivity.
|
The **Server & Client** are **ONE project** in order to achieve maximum productivity.
|
||||||
|
|
||||||
Making multiplayer games this way is fun & easy. Instead of MonoBehaviour, Mirror provides **NetworkBehaviour** components with:
|
Simply use **NetworkBehaviour** instead of **MonoBehaviour**.
|
||||||
* **[Server]** / **[Client]** tags for server-only / client-only code
|
|
||||||
* **[Command]** for Client->Server function calls (e.g. UseItem)
|
|
||||||
* **[ClientRpc]** / **[TargetRpc]** for Server->Client function calls (e.g. AddChatMessage)
|
|
||||||
* **[SyncVar]** / SyncList to automatically synchronize variables from Server->Client
|
|
||||||
|
|
||||||
|
Making multiplayer games this way is fun & easy:
|
||||||
|
|
||||||
|
```cs
|
||||||
|
public class Player : NetworkBehaviour
|
||||||
|
{
|
||||||
|
// synced automatically
|
||||||
|
[SyncVar] public int health = 100;
|
||||||
|
|
||||||
|
// lists, dictionaries, sets too
|
||||||
|
SyncList<Item> inventory = new SyncList<Item>();
|
||||||
|
|
||||||
|
// server/client-only code
|
||||||
|
[Server] void LevelUp() {}
|
||||||
|
[Client] void Animate() {}
|
||||||
|
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
// isServer/isClient for runtime checks
|
||||||
|
if (isServer) Heal();
|
||||||
|
if (isClient) Move();
|
||||||
|
}
|
||||||
|
|
||||||
|
// zero overhead remote calls
|
||||||
|
[Command] void CmdUseItem(int slot) {} // client to server
|
||||||
|
[Rpc] void RpcRespawn() {} // server to all clients
|
||||||
|
[TargetRpc] void Hello() {} // server to one client
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
There's also **NetworkServer** & **NetworkClient**. And that's about it 🤩.
|
||||||
|
|
||||||
|
---
|
||||||
|
## Free, Open & Community Funded
|
||||||
|
Mirror is **free & open source** (MIT Licensed).
|
||||||
|
|
||||||
|
"Free" as in free beer, and freedom to use it any way you like.
|
||||||
|
|
||||||
|
- Run [Dedicated Servers](https://mirror-networking.gitbook.io/docs/guides/server-hosting) anywhere.
|
||||||
|
- Free player hosted games thanks to [Epic Relay](https://github.com/FakeByte/EpicOnlineTransport)!
|
||||||
|
|
||||||
|
Mirror is funded by [**Donations**](https://github.com/sponsors/vis2k) from our [fantastic community](https://discordapp.com/invite/N9QVxbM) of over 14,000 users!
|
||||||
|
|
||||||
|
---
|
||||||
## Getting Started
|
## Getting Started
|
||||||
Get **Unity 2020 LTS**, download [Mirror on the Asset Store](https://assetstore.unity.com/packages/tools/network/mirror-129321), open one of the examples & press Play!
|
Get **Unity 2019 / 2020 / 2021 LTS**, [Download Mirror](https://assetstore.unity.com/packages/tools/network/mirror-129321), open one of the examples & press Play!
|
||||||
|
|
||||||
Check out our [Documentation](https://mirror-networking.gitbook.io/) to learn how it all works.
|
Check out our [Documentation](https://mirror-networking.gitbook.io/) to learn how it all works.
|
||||||
|
|
||||||
@ -153,7 +182,8 @@ If you use Mirror in production, consider Mirror LTS!
|
|||||||
|
|
||||||
All sponsors are invited to the [Mirror V46 LTS Repository](https://github.com/MirrorNetworking/Mirror-46-LTS) automatically.
|
All sponsors are invited to the [Mirror V46 LTS Repository](https://github.com/MirrorNetworking/Mirror-46-LTS) automatically.
|
||||||
|
|
||||||
## Low Level Transports
|
## Modular Transports
|
||||||
|
Mirror uses **KCP** (reliable UDP) by default, but you may use any of our community transports for low level packet sending:
|
||||||
* (built in) [KCP](https://github.com/vis2k/kcp2k): reliable UDP
|
* (built in) [KCP](https://github.com/vis2k/kcp2k): reliable UDP
|
||||||
* (built in) [Telepathy](https://github.com/vis2k/Telepathy): TCP
|
* (built in) [Telepathy](https://github.com/vis2k/Telepathy): TCP
|
||||||
* (built in) [Websockets](https://github.com/MirrorNetworking/SimpleWebTransport): Websockets
|
* (built in) [Websockets](https://github.com/MirrorNetworking/SimpleWebTransport): Websockets
|
||||||
@ -167,15 +197,18 @@ All sponsors are invited to the [Mirror V46 LTS Repository](https://github.com/M
|
|||||||
* [Oculus P2P](https://github.com/hyferg/MirrorOculusP2P): Oculus Platform Service
|
* [Oculus P2P](https://github.com/hyferg/MirrorOculusP2P): Oculus Platform Service
|
||||||
|
|
||||||
## Benchmarks
|
## Benchmarks
|
||||||
* [uMMORPG 480 CCU](https://youtu.be/mDCNff1S9ZU) (worst case)
|
* [2022] mischa [400-800 CCU](https://discord.com/channels/343440455738064897/1007519701603205150/1019879180592238603) tests
|
||||||
* [Jesus' Benchmarks](https://docs.google.com/document/d/1GMxcWAz3ePt3RioK8k4erpVSpujMkYje4scOuPwM8Ug/edit?usp=sharing)
|
* [2021] [Jesus' Benchmarks](https://docs.google.com/document/d/1GMxcWAz3ePt3RioK8k4erpVSpujMkYje4scOuPwM8Ug/edit?usp=sharing)
|
||||||
|
* [2019] [uMMORPG 480 CCU](https://youtu.be/mDCNff1S9ZU) (worst case)
|
||||||
|
|
||||||
## Development & Contributing
|
## Development & Contributing
|
||||||
Mirror is used **in production** by everything from small indie projects to million dollar funded games that will run for a decade or more.
|
Mirror is used **in production** by everything from small indie projects to million dollar funded games that will run for a decade or more.
|
||||||
|
|
||||||
Therefore it is important for us to follow the [KISS principle](https://en.wikipedia.org/wiki/KISS_principle) in order for our games to survive, so that we can still fix networking bugs 10 years from now if needed.
|
We prefer to work slow & thoroughly in order to not break everyone's games 🐌.
|
||||||
|
|
||||||
|
Therefore, we need to [KISS](https://en.wikipedia.org/wiki/KISS_principle) 😗.
|
||||||
|
|
||||||
|
---
|
||||||
# Bug Bounty
|
# Bug Bounty
|
||||||
<img src="https://user-images.githubusercontent.com/16416509/110572995-718b5900-8195-11eb-802c-235c82a03bf7.png" height="150">
|
<img src="https://user-images.githubusercontent.com/16416509/110572995-718b5900-8195-11eb-802c-235c82a03bf7.png" height="150">
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user