## File: README.md

**It's only the dreamers who ever move mountains.**


## Mirror Networking 
The **#1** free **open source** game networking library for **Unity**, used by over 200 million players.

**Powering** major hits like [**Population: ONE**](https://www.populationonevr.com/) and over [**1000 Steam Games**](https://steamdb.info/tech/SDK/Mirror/?sort=rating_desc).

Originally based on [**UNET**](https://web.archive.org/web/20230915050929/https://blog.unity.com/technology/announcing-unet-new-unity-multiplayer-technology): battle tested **since 2014** for 10 years and counting!

Mirror is **[stable](https://mirror-networking.gitbook.io/docs/general/tests)**, [**modular**](#low-level-transports) & **[easy to use](https://mirror-networking.gitbook.io/)** for all types of games, even small [**MMORPGs**](#made-with-mirror) 🎮.

**Made in 🇩🇪🇺🇸🇬🇧🇸🇬🇹🇼 with ❤️**.

---
## Features

Mirror comes with a wide variety of features to support all game genres.
Many of our features quickly became the norm across all Unity netcodes!

| Feature                       | Description                                                                                                                                                   | Status          |
|-------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------|
| 🎛 **Transports**             | UDP, TCP, Websockets, Steam, Relay and more.                                                                                                                  | **Stable**      | 
| 🪜 **Interest Management**    | Spatial Hashing & Distance Checker to partition the world.                                                                                                    | **Stable**      |
| ↗️ **SyncDirection**          | Server & Client Authority - per component with one click.                                                                                                     | **Stable**      |
| 🐌 **Latency Simulation**     | Simulate latency, packet loss & jitter locally.                                                                                                               | **Stable**      |
| 🧲 **Batching**               | Minimize message overhead via batching automatically.                                                                                                         | **Stable**      |
| 💌 **RPCs & SyncVars**        | Synced vars and remote function calls built in & safe.                                                                                                        | **Stable**      |
| 🙅‍♀️ **Allocation Free**      | Free of runtime allocations and no GC (except Transports).                                                                                                    | **Stable**      |
| 🛞 **Transform & Physics**   | Transform & Physics sync built in.                                                                                                                            | **Stable**      |
| 👩‍🍼 **Child Components**    | Put networked components on anything.                                                                                                                         | **Stable**      |
| 🪚️ **IL Post Processing**    | Zero overhead [Rpcs] and [Commands] via IL post processing!                                                                                                   | **Stable**      |
| ☁️ **Two Click Hosting**      | (Optional) [Build & Push](https://mirror-networking.gitbook.io/docs/hosting/edgegap-hosting-plugin-guide) directly from Unity Editor to the Cloud. | **Stable**     |
|                               |                                                                                                                                                               |                 |
| 📏 **Snapshot Interpolation**       | Perfectly smooth movement for all platforms & genres.                                                                                                    | **Stable**      |
| 🔫 **Lag Compensation**       | Roll back state to see what the player saw during input.                                                                                                      | **Beta**     |
| 🔒 **Encryption**             | Secure communication with end-to-end encryption.                                                                                                              | **Beta** |
| 🔒 **Cheat Detection**        | Mirror Guard safely detects Melon Loader & more.                                                                                                              | **Beta** |
| 🚀 **Unreliable Mode**       | Quake style Unreliable SyncMode for any component.                                                                                                      | **Development**     |
|                               |                                                                                                                                                               |                 |
| 🧙‍♂️ **General Purpose**     | Mirror supports all genres for all your games!                                                                                                                |                 |
| 🧘‍♀️ **Stable API**          | Long term (10 years)  stability instead of new versions!                                                                                                      |
| 🔬 **Battle Tested**          | Mirror serves over 100 million players. It just works!                                                                                                        |                 |
| 💴 **Free & Open Source**     | MIT licensed without any restrictions to minimize risk!                                                                                                       |                 |
| ❤️ **Community**              | Join our Discord with nearly 15.000 developers world wide!                                                                                                    |                 |
| 🧜🏻‍♀️ **Long Term Support** | Maintained since 2014 with optional LTS version!                                                                                                              |                 |
|                               |                                                                                                                                                               |                 |
| 📐 **Bitpacking**             | Optimized compression (bools as 1 bit etc.)                                                                                                                   | **Researching** |
| 🏎 **Prediction**             | Simulate Physics locally & apply server corrections.                                                                                                          | **Researching**        |

---
## Architecture
The **Server & Client** are **ONE project** in order to achieve maximum productivity.

Simply use **NetworkBehaviour** instead of **MonoBehaviour**.

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 inventory = new SyncList();
    
    // 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
    [ClientRpc] 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 Source & Community Focused
**Mirror** is **free & open source** (MIT Licensed).

🍺 "**Free**" as in free beer, and freedom to use it any way you like.
 
- Host Game [Servers](https://mirror-networking.gitbook.io/docs/hosting/the-pragmatic-hosting-guide) anywhere!
- Customize anything freely!
- No paywalls, no CCU costs, no strings attached!

🤝 We are a team of **professional** game developers, who are paid to **use Mirror in production**. Our incentives will always align with the community, because we are Mirror users just like you! 

❤️ Our [**fantastic community**](https://discordapp.com/invite/xVW4nU4C34) of over **14,000** users contributes feedback & improvements every day. Please join us on our journey, help others, and consider a [**Donation**](https://github.com/sponsors/miwarnec) if you love our work!



_The top quote is from Fitzcarraldo, which is quite reminiscent of this project._

---
## Getting Started
Get **Unity 2019 / 2020 / 2021 / 2022 LTS and 6000.1**, [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.

If you are migrating from UNET, then please check out our [Migration Guide](https://mirror-networking.gitbook.io/docs/general/migration-guide).

---
## Guard - Anti Cheat 🔒

Guard is a high impact, zero risk anti-cheat solution built specifically for Unity games. Unlike most commercial anti-cheats, Guard is embedded on the source code level and compiles with your project.

Guard is available on the [Asset Store](https://assetstore.unity.com/packages/tools/network/guard-multiplayer-anti-cheat-321434) and includes a Mirror Integration!

---
## Made with Mirror
### Thousands of Steam Games
Mirror is used by [thousands of steam games](https://steamdb.info/tech/SDK/Mirror/?sort=rating_desc).


### [Population: ONE](https://www.populationonevr.com/)
[](https://www.populationonevr.com/)
The [BigBoxVR](https://www.bigboxvr.com/) team started using Mirror in February 2019 for what eventually became one of the most popular Oculus Rift games.

In addition to [24/7 support](https://discordapp.com/invite/xVW4nU4C34) from the Mirror team, BigBoxVR also hired one of our engineers.

**Population: ONE** was [acquired by Meta](https://uploadvr.com/population-one-facebook-bigbox-acquire/) in June 2021, and they've just released a new [Sandbox](https://www.youtube.com/watch?v=jcI0h8dn9tA) addon in 2022!

### [Zooba](https://play.google.com/store/apps/details?id=com.wildlife.games.battle.royale.free.zooba&gl=US)
[](https://play.google.com/store/apps/details?id=com.wildlife.games.battle.royale.free.zooba&gl=US)
[Wildlife Studio's](https://wildlifestudios.com/) hit Zooba made it to rank #5 of the largest battle royal shooters in the U.S. mobile market.

The game has over **100 million** downloads on [Google Play](https://play.google.com/store/apps/details?id=com.wildlife.games.battle.royale.free.zooba&gl=US), with Wildlife Studios as one of the top 10 largest mobile gaming companies in the world.

### [Swarm VR](https://www.swarmvrgame.com/)
[](https://www.swarmvrgame.com/)
SPIDER-MAN WITH GUNS! 

SWARM is a fast-paced, arcade-style grapple shooter, with quick sessions, bright colorful worlds and globally competitive leaderboards that will take you back to the glory days of Arcade Games.

Available for the [Meta Quest](https://www.oculus.com/experiences/quest/2236053486488156/), made with Mirror.

### [Liars Bar](https://store.steampowered.com/app/3097560/Liars_Bar/)
[](https://store.steampowered.com/app/3097560/Liars_Bar/)
With over 20.000 Overwhelmingly Positive reviews on Steam, Liars Bar is one of our largest showcase games of 2024.

This isn't your average pub – it's a den of lies, deception, and mind games. Grab a seat at a table of four and immerse yourself in the ultimate first-person multiplayer online experience where cunning and trickery are the name of the game.

### [Castaways](https://www.castaways.com/)
[](https://www.castaways.com/)
[Castaways](https://www.castaways.com/) is a sandbox game where you are castaway to a small remote island where you must work with others to survive and build a thriving new civilization. 

Castaway runs in the Browser, thanks to Mirror's WebGL support.

### [Nimoyd](https://www.nimoyd.com/)
[](https://www.nimoyd.com/)
Nudge Nudge Games' first title: the colorful, post-apocalyptic open world sandbox game [Nimoyd](https://store.steampowered.com/app/1313210/Nimoyd__Survival_Sandbox/) is being developed with Mirror.

_Soon to be released for PC & mobile!_

### [Project Z](https://www.projektzgame.com/)
[](https://www.projektzgame.com/)
Projekt Z is a first-person coop survival shooter set in a WW2 Zombie scenario on a secret German island. The game focuses on the threat of "Projekt Z", a clandestine program run by the Nazis to turn Zombies, which have been discovered on the island earlier, into weapons to help turn the tide of the war in Nazi Germany's favor.

_Soon to be released!_

### [Unleashed](https://www.unleashedgames.io/)
[](https://www.unleashedgames.io/)
From original devs of **World of Warcraft**, **Kingdoms of Amalur**, and **EverQuest** comes a new family friendly fantasy adventure. Fight against the forces of darkness, explore a world consumed by wild magic, and build a stronghold with your friends to increase your power in a new world.

_Lead by industry veterans Brian Birmingham & Irena Pereira, Unleashed is developing their next gen adventure game made with Mirror!_

Follow them on X: https://twitter.com/UnleashingGames/

### [Dinkum](https://store.steampowered.com/app/1062520/Dinkum/)
[](https://store.steampowered.com/app/1062520/Dinkum/)
Set in the Australian Outback, Dinkum is a relaxing farming & survival game. Made by just one developer, Dinkum already reached 1000+ "Overwhelmingly Positive" reviews 1 week after its early access release. 

James Bendon initially made the game with UNET, and then [switched to Mirror](https://www.playdinkum.com/blog/2019/1/11/devlog-13-biomes-and-traps) in 2019.

### [A Glimpse of Luna](https://www.glimpse-luna.com/)
[](https://www.glimpse-luna.com/)
[A Glimpse of Luna](https://www.glimpse-luna.com/) - a tactical multiplayer card battle game with the most beautiful concept art & soundtrack.

Made with Mirror by two brothers with [no prior game development](https://www.youtube.com/watch?v=5J2wj8l4pFA&start=12) experience.

### [Havoc](https://store.steampowered.com/app/2149290/Havoc/)

Havoc is a tactical team-based first-person shooter with a fully destructible environment and a unique art style. Havoc has been one of our favorite made-with-Mirror games for a few years now, and we are excited to finally see it up there on Steam.

### [Sun Haven](https://store.steampowered.com/app/1432860/Sun_Haven/)
[](https://store.steampowered.com/app/1432860/Sun_Haven/)
[Sun Haven](https://store.steampowered.com/app/1432860/Sun_Haven/) - A beautiful human town, a hidden elven village, and a monster city filled with farming, magic, dragons, and adventure.

After their successful [Kickstarter](https://www.kickstarter.com/projects/sunhaven/sunhaven/description), Sun Haven was released on Steam in 2021 and later on ported to Mirror in 2022.

### [A Township Tale](https://townshiptale.com/)
[](https://townshiptale.com/)
A Township Tale is an immersive VR experience, where you can build towns and explore worlds with your friends.

Made with our KCP transport, available on the [Meta Quest Store](https://www.oculus.com/experiences/quest/2913958855307200/) with over 6000+ ratings.

### [Inferna](https://inferna.net/)
[](https://inferna.net/)
One of the first MMORPGs made with Mirror, released in 2019.

An open world experience with over 1000 CCU during its peak, spread across multiple server instances.

### [Samutale](https://www.samutale.com/)
[](https://www.samutale.com/)
A sandbox survival samurai MMORPG, originally released in September 2016.

Later on, the Netherlands based Maple Media switched their netcode to Mirror.

### [Another Dungeon](https://www.gameduo.net/en/game/ad)

Pixel Art Dungeon MMORPG reaching 5000 CCU at peak times.

Originally developed as a single-player idle game, it underwent a transition to an MMORPG three months before release thanks to Mirror!

### [Untamed Isles](https://store.steampowered.com/app/1823300/Untamed_Isles/)
[](https://store.steampowered.com/app/1823300/Untamed_Isles/)
The turn based, monster taming **MMORPG** [Untamed Isles](https://store.steampowered.com/app/1823300/Untamed_Isles/) is currently being developed by [Phat Loot Studios](https://untamedisles.com/about/).

After their successful [Kickstarter](https://www.kickstarter.com/projects/untamedisles/untamed-isles), the New Zealand based studio is aiming for a 2022 release date.

### [Portals](https://theportal.to/)
[](https://theportal.to/)
Animal Crossing meets Yakuza meets Minecraft — a city builder with a multiplayer central hub. Gather, trade and build — all in the browser!

### [SCP: Secret Laboratory](https://scpslgame.com/)
[](https://scpslgame.com/)
[Northwood Studios'](https://store.steampowered.com/developer/NWStudios/about/) first title: the multiplayer horror game SCP: Secret Laboratory was one of Mirror's early adopters.

Released in December 2017, today it has more than **140,000** reviews on [Steam](https://store.steampowered.com/app/700330/SCP_Secret_Laboratory/?curator_clanid=33782778).

### [Naïca Online](https://naicaonline.com/)
[](https://naicaonline.com/)
[Naïca](https://naicaonline.com/) is a beautiful, free to play 2D pixel art MMORPG.

The [France based team](https://naicaonline.com/en/news/view/1) was one of Mirror's early adopters, releasing their first public beta in November 2020.

### [Laurum Online](https://laurum.online/)
[](https://laurum.online/)
[Laurum Online](https://play.google.com/store/apps/details?id=com.project7.project7beta) - a 2D retro mobile MMORPG with over 500,000 downloads on Google Play.

### [Empires Mobile](https://knightempire.online/)
[](https://knightempire.online/)
[Empires Mobile](https://knightempire.online/) - Retro mobile MMORPG for Android and iOS, reaching 5000 CCU at times. Check out their [video](https://www.youtube.com/watch?v=v69lW9aWb-w) for some _early MMORPG_ nostalgia.

### [Overpowered](https://overpoweredcardgame.com/)
[](https://overpoweredcardgame.com/)
[Overwpowered](https://overpoweredcardgame.com/), the exciting new card game that combines strategy, myth, and fun into one riveting web-based experience. Launched in 2023, made with Mirror!

### And many more...
[](https://store.steampowered.com/app/1797130/Plunder_Scourge_of_the_Sea/)
[](https://store.steampowered.com/app/719200/The_Wall/)
[](https://store.steampowered.com/app/535630/One_More_Night/)

[](https://nightz.io)
[](https://store.steampowered.com/app/1016030/Wawa_United/)
[](https://store.steampowered.com/app/1745640/MACE_Mapinguaris_Temple/)
[](https://www.adversator.com/)
[](https://store.steampowered.com/app/670260/Solace_Crafting/)
[](https://www.unitystation.org)
[](https://store.steampowered.com/app/1970020/__Touhou_Fairy_Knockout__One_fairy_to_rule_them_all/)
[](https://store.steampowered.com/app/2168680/Nuclear_Option/)
[](https://store.steampowered.com/app/2499940/Shattered_Lands/)
[](https://store.steampowered.com/app/1955340/Super_Raft_Boat_Together)
[](https://store.steampowered.com/app/2585860/Ruins_To_Fortress/)
[](https://store.steampowered.com/app/2967080/Block_Trucks_Multiplayer_Racing/)
[](https://nebula-dev.itch.io/drunkonauts)


## 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/MirrorNetworking/kcp2k): reliable UDP
* (built in) [Telepathy](https://github.com/MirrorNetworking/Telepathy): TCP
* (built in) [Websockets](https://github.com/MirrorNetworking/SimpleWebTransport): Websockets
* [Ignorance](https://github.com/SoftwareGuy/Ignorance/): ENET UDP
* [LiteNetLib](https://github.com/MirrorNetworking/LiteNetLibTransport/) UDP
* [FizzySteam](https://github.com/Chykary/FizzySteamworks/): SteamNetwork
* [FizzyFacepunch](https://github.com/Chykary/FizzyFacepunch/): SteamNetwork
* [Epic Relay](https://github.com/WeLoveJesusChrist/EOSTransport): Epic Online Services
* [Bubble](https://github.com/Squaresweets/BubbleTransport): Apple GameCenter
* [Light Reflective Mirror](https://github.com/Derek-R-S/Light-Reflective-Mirror): Self-Hosted Relay

## Benchmarks
* [2022] mischa [400-800 CCU](https://discord.com/channels/343440455738064897/1007519701603205150/1019879180592238603) tests
* [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
Mirror is used **in production** by everything from small indie projects to million dollar funded games that will run for a decade or more.

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) 😗.

---
# Information Security


**Mirror-Networking** follows common information security industry standards & best practices.

Mirror is free open source software (**MIT Licensed**), with over 80% test coverage. The company is located in Germany. We do not collect any user data, impose no restrictions on users & developers, or rely on any closed source dependencies other than Unity.

This makes Mirror an attractive choice for government agencies and large corporations with strict information security requirements.

Feel free to reach out to business [**at**] mirror-networking.com if you have any questions, or need to review any of our policies:

* **Development best Practices and SDLC**.pdf
* **Disaster Recovery Procedure**.pdf
* **Document Retention and Destruction Policy**.pdf
* **Encryption Policy**.pdf
* **Information Security Guidelines**.pdf
* **[Privacy Policy](https://mirror-networking.com/privacy-policy/)**
* **[Security Policy](https://github.com/MirrorNetworking/Mirror/blob/master/SECURITY.md)**
* **Vulnerability Management Policy**.pdf

Please reach out if you decide to use Mirror.

We are excited to hear about your project, and happy to help if needed!

---
# Incident Response & Bug Bounty
A lot of projects use Mirror in production. If you found a critical bug / exploit in Mirror core, please follow the steps outlined in our [Security Policy](SECURITY.md).

**Credits / past findings / fixes:**
* 2020, fholm: fuzzing ConnectMessage to stop further connects [[#2397](https://github.com/vis2k/Mirror/pull/2397)]
* 2023-04-05: IncludeSec: [kcp2k UDP spoofing](http://blog.includesecurity.com/?p=1407) [[#3286](https://github.com/vis2k/Mirror/pull/3286)]
* 2023-06-27: James Frowen: ClientToServer [SyncVar] [allocation attacks](https://github.com/MirrorNetworking/Mirror/pull/3562)

---
# Credits & Thanks 🙏
🪞 **Alexey Abramychev** (UNET)
🪞 **Alan**
🪞 **c6burns** 
🪞 **Coburn** 
🪞 **cooper** 
🪞 **FakeByte** 
🪞 **fholm**
🪞 **Gabe** (BigBoxVR)
🪞 **imer** 
🪞 **James Frowen** 
🪞 **JesusLuvsYooh** 
🪞 **Mischa** 
🪞 **Mr. Gadget**
🪞 **NinjaKickja** 
🪞 **Paul Pacheco**
🪞 **Sean Riley** (UNET)

---

## File: Assets/Mirror/Examples/AdditiveScenes/README.md

# Additive Scenes Example

IMPORTANT: Make sure you have a layer in project settings called Player for this example to work well.

In Build Settings, remove all scenes and add all of the scenes from the Examples\AdditiveScenes\Scenes folder in the following order:
- MainScene
- SubScene

Open the MainScene in the Editor and make sure the Sub Scenes list in the Network scene object contains the SubScene scene.  This is already setup by default, but if the MainScene was opened and saved before putting the scenes in the Build Settings list, the Sub Scenes list may be cleared accidentally.

File -> Build and Run

Start up to 3 built instances:  These will all be client players.

Press Play in the Editor and click Host (Server + Client) in the HUD
- This will be the host and the 1st player of up to 4.  You can also use Server Only if you prefer.

Click Client in the built instances.
- WASDQE keys to move & turn your player capsule.
- There are objects in the corners of the scene hidden by Proximity Checkers.
- The big area in the middle is where the subscene will be loaded when you get near the shelter.
- There are also networked objects inside the subscene, also with Proximity Checkers.
- Since subscenes are only loaded for individual clients, other clients that are outside the middle Zone won't see what those in the subscene can see.
- If you play a built instance as Host or Server and play as client in the editor, you'll see the subscene content load and unload in the hierarchy as you move in and out of the middle Zone.

---

## File: Assets/Mirror/Examples/Basic/README.md

# Basic Example

This is a bare bones example of a running game with Network Manager and UI prefab players:

1.  Remove all scenes from Build Settings, then add the Example scene alone.

2.  Open the Example scene and build the project.

3.  In the editor, click Play, and Server + Client or Server Only...it will be listening on port 7777.  
    - If you clicked Host (Server + Client), the host player will appear as Player 00.

4.  Run one or more instances (up to 16 total players) of the built application.

5.  Click Client on each instance.

6.  Now you will see all players in the editor and the clients, all with data being updated and synchronized.

---

## File: Assets/Mirror/Examples/BenchmarkPrediction/Readme.md

Mirror's PredictedRigidbody is optimized for low end devices / VR.
While not interacting with the object, there's zero overhead!
While interacting, overhead comes from sync & corrections.

This benchmark has predicted objects which are constantly synced & corrected.
=> This is not a real world scenario, it's worst case that we can use for profiling!
=> As a Mirror user you don't need to worry about this demo.

# Benchmark Setup
- Unity 2021.3 LTS
- IL2CPP Builds
- M1 Macbook Pro
- vsync disabled in NetworkManagerPredictionBenchmark.cs

# Benchmark Results History for 1000 objects without ghosts:
Not Predicted:    1000 FPS Client,   2500 FPS Server
Predicted:         
  2024-03-13:      500 FPS Client,   1700 FPS Server
  2024-03-13:      580 FPS Client,   1700 FPS Server // micro optimizations
  2024-03-14:      590 FPS Client,   1700 FPS Server // UpdateGhosting() every 4th frame
  2024-03-14:      615 FPS Client,   1700 FPS Server // predictedRigidbodyTransform.GetPositionAndRotation()
  2024-03-15:      625 FPS Client,   1700 FPS Server // Vector3.MoveTowardsCustom()
  2024-03-18:      628 FPS Client,   1700 FPS Server // removed O(N) insertion from CorrectHistory()
  2024-03-28:      800 FPS Client,   1700 FPS Server // FAST mode prediction

---

## File: Assets/Mirror/Examples/BenchmarkStinkySteak/Dependencies/Unity-Simulation-Timer/README.md

# Simulation Timer
An Lightweight Efficient Timer for Unity. Inspired by Photon Fusion TickTimer
## Usage/Examples

#### Simulation Timer



```csharp
private SimulationTimer _disableTimer;

private void Start()
{
    _disableTimer = SimulationTimer.CreateFromSeconds(_delay);
}

private void Update()
{
    if(_disableTimer.IsExpired())
    {
        _gameObject.SetActive(false);
        _disableTimer = SimulationTimer.None;
    }
}
```

#### Pauseable Simulation Timer



```csharp
private PauseableSimulationTimer _timer;

public PauseableSimulationTimer Timer => _timer;

private void Start()
{
    _timer = PauseableSimulationTimer.CreateFromSeconds(_delay);
}

public void TogglePause()
{
    if(!_timer.IsPaused)
    {
        _timer.Pause();
        return;
    }

    _timer.Resume();
}

private void Update()
{
    if(_timer.IsExpired())
    {
        _gameObject.SetActive(false);
        _timer = PauseableSimulationTimer.None;
    }
}
```
## Class Reference
`SimulationTimer`: Default Timer    
`PauseableTimer`: Pauseable Timer

---

## File: Assets/Mirror/Examples/MultipleAdditiveScenes/README.md

# Multiple Additive Scenes Example

In Build Settings, remove all scenes and add both of the scenes from the Scenes folder in the following order:

- Main
- Game

Open the Main scene in the Editor and make sure the Game Scene field in the MultiScene Network Manager on the Network scene object contains the Game scene. This is already setup by default, but if the Main scene was opened and saved before putting the scenes in the Build Settings list, the Game Scene field may be cleared accidentally.

## MultiScene Network Manager

The MultiScene Network Manager is derived from the base Network Manager and is responsible for additively loading the subscene instances and placing the players in their respective subscene instances and initializing player SyncVars. It has a Game Scene field where the Game subscene is assigned, and an Instances field to set how many instances are loaded on the server.

In this example, the subscene instances are additively loaded on the server with `localPhysicsMode = LocalPhysicsMode.Physics3D`. Physics subscenes do not auto-simulate, so each scene has a game object with a generic `PhysicsSimulator` script on it. This script does nothing on the client, only on the server.

Clients only ever have one instance of the subscene additively loaded (without `localPhysicsMode`), while server has them all. All networked objects have a `NetworkSceneChecker` component which is what isolates them to their specific subscene.

## Playing in the Instances

File -\> Build and Run

Start at least 3 built instances: These will all be client players.

Press Play in the Editor and click Host (Server + Client) in the HUD - This will be the host and the 1st player. You can also use Server Only if you prefer.

Click Client in the built instances.

-   WASDQE keys to move & turn your player capsule, Space to jump.

-   Colliding with the small colored spheres scores points base on their color.

-   Colliding with the larger tumblers sends them rolling around...they're server-side non-kinematic rigidbodies.

-   Only scores for the players in the same subscene are shown at the top of the game window.

---

## File: Assets/Mirror/Examples/MultipleMatches/README.md

# MultipleMatches Example

This example demonstrates how to run a large number of non-physics games concurrently in a single game server instance.

This would be most appropriate for Card, Board, Puzzle, and Arcade games where there is no physics involved, just presentation and messaging.

While this example is turn-based, real-time games work just as well.

When a match is started, a MatchController and Player objects are spawned, all with a Network Match Checker component with the same matchId set.  Only clients with the same matchID get messages about each others actions and about their own match.  They don't receive any data about other matches that may be running concurrently.

---

## File: Assets/Mirror/Examples/Room/README.md

# Room Example

In Build Settings, remove all scenes and add all of the scenes from the Examples\Room\Scenes folder in the following order:
-	MirrorRoomOffline
-	MirrorRoomGame
-	MirrorRoomOnline

If you opened the Offline scene before doing the above steps, you may have to reassign the scenes to the NetworkRoomManagerExt component of the RoomManager scene object.

File -> Build and Run

Start up to 4 built instances:  These will all be client players.

Open the Offline scene in the Editor and press Play

Click Host (Server + Client) in the HUD: This will be host and the 5th player.  You can also use Server Only if you prefer.

Click Client in the built instances.

Click Ready in each instance, and finally in the Editor (Host).

Click the Start Game button when all players are ready.

You should now be in the Online scene with your players of random color.

WASDQE keys to move & turn your player capsule.
Collide with the spheres to score points.
Lighter colors score higher.

---

## File: Assets/Mirror/Hosting/Edgegap/README.md

# Edgegap Unity plugin for Dedicated Servers quickstart

This plugin has been tested, and supports Unity versions 2021.2+, including all LTS releases, Unity 2023, and Unity 6.

This plugin is intended to help you:

- get started quickly with Dedicated Servers on Edgegap,
- make your server build iteration as fast as possible,
- make multiplayer development 10x easier by removing the need to learn Linux, Docker, or Cloud concepts.

This plugin does not need to be included in your builds, as it's only a development tool and does not have any runtime features.

## Install using git (recommended)

### Benefits

- Installing our plugin this way will ensure you get the freshest updates the moment they come out, see [the update guide](#update-the-plugin-in-unity).

### Caveats

- Requirement: functioning git client installed, for example [git-scm](https://git-scm.com/).

### Instructions

1. Open your Unity project,
2. Select toolbar option **Window** -> **Package Manager**,
3. Click the **+** icon and select **Add package from git URL...**,
4. Input the following URL `https://github.com/edgegap/edgegap-unity-plugin.git`,
5. Click **Add** and wait for the Unity Package Manager to complete the installation.

## Install via ZIP archive

### Benefits

- Slightly easier as no git client is required.

### Caveats

- Installing our plugin this way will require you to manually replace plugin contents if you [wish to update it](#update-the-plugin-in-unity),
- The newtonsoft package (dependency) version required may not be compatible with your project if you're already using an older version of this package.

### Instructions

1. Select toolbar option **Window** -> **Package Manager**,
2. Click the **+** icon and select **Add package by name...**,
3. Input the name `com.unity.nuget.newtonsoft-json` and wait for the Unity Package Manager to complete the installation.,
4. Back to this github project - make sure you're on the `main` branch,
5. Click **<> Code**, then **Download ZIP**,
6. Paste the contents of the unzipped archive in your `Assets` folder within Unity project root.

## Other sources

The only other official distribution channels for this plugin are:

- [Unity Asset Store package](https://assetstore.unity.com/packages/tools/network/edgegap-game-server-hosting-212563)
- [Mirror Networking source](https://github.com/MirrorNetworking/Mirror)
- [Mirror Networking free package](https://assetstore.unity.com/packages/tools/network/mirror-129321)
- [Mirror Networking LTS package](https://assetstore.unity.com/packages/tools/network/mirror-lts-102631)
- [Fish Networking source](https://github.com/FirstGearGames/FishNet)
- [Fish Networking free package](https://assetstore.unity.com/packages/tools/network/fishnet-networking-evolved-207815)
- [Fish Networking Pro package](https://assetstore.unity.com/packages/tools/network/fishnet-pro-networking-evolved-287711)

## Next Steps

Once you have it, check for **Tools** -> **Edgegap Hosting** in Unity's top menu.

### Usage requirements

To take full advantage of our Unity plugin's build features, you will need to:

- [Create an Edgegap Free Tier account](https://app.edgegap.com/auth/register),
- [Install Docker Desktop](https://www.docker.com/products/docker-desktop/) (or Docker CLI),
- Install Unity Linux Build Support modules for Unity.

From here, we recommend following our [Unity Plugin Guide](https://docs.edgegap.com/docs/tools-and-integrations/unity-plugin-guide) to get your first dedicated server deployed.

### Update the Plugin in Unity

If you've installed using git, to update our plugin, locate it in Unity's **Package Manager** window and click **Update**. Wait for the process to complete and you're good to go!

If you've installed by copying, you will have to remove the Edgegap folder and paste the newer copy. Your settings are saved in your Unity version, so they shouldn't be lost in this process.

## For plugin developers

This section is only for developers working on this plugin or other plugins interacting / integrating this plugin.

### CSharpier code formatter

This project uses [CSharpier code formatter](https://csharpier.com/) to ensure consistent and readable formatting, configured in `/.config/dotnet-tools.json`.

See [Editor integration](https://csharpier.com/docs/Editors) for Visual Studio extensions, optionally configure `Reformat with CSharpier` on Save under Tools | Options | CSharpier | General. You may also configure [running formatting as a pre-commit git hook](https://csharpier.com/docs/Pre-commit).

### Compiler Symbols

If you wish to detect presence of this plugin in the users Unity Editor, you can do so using a compiler directive:

```csharp
#if EDGEGAP_PLUGIN_SERVERS
{...your code...}
#endif
```

---

## File: Assets/Mirror/Transports/Edgegap/EdgegapRelay/README.md

# Edgegap Relay for Mirror
Documentation: https://docs.edgegap.com/docs/distributed-relay-manager/

## Prerequisites
- Unity project set up with the Mirror networking library installed
  - Supported Versions: [Mirror](https://assetstore.unity.com/packages/tools/network/mirror-129321) and [Mirror LTS](https://assetstore.unity.com/packages/tools/network/mirror-lts-102631)
- EdgegapTransport module downloaded and extracted

## Steps
1. Open your Unity project and navigate to the "Assets" folder.
2. Locate the "Mirror" folder within "Assets" and open it.
3. Within the "Mirror" folder, open the "Transports" folder.
4. Drag and drop the "Unity" folder from the extracted EdgegapTransport files into the "Transports" folder.
5. Open your NetworkManager script in the Unity Editor and navigate to the "Inspector" panel.
6. In the "Inspector" panel, locate the "Network Manager" component and click the "+" button next to the "Transport" property.
7. In the "Add Component" menu that appears, select "Edgegap Transport" to add it to the NetworkManager.
8. Drag the newly added "Edgegap Transport" component into the "Transport" property in the "Inspector" panel.

## Notes
- The EdgegapTransport module is only compatible with Mirror and Mirror LTS versions.