Mirror Documentation

#1 Open Source Unity Networking Library

6,215 stars C# C# 1 file ยท ~9,628 tokens #games#hlapi#kcp#libuv#mirror#mmo#mmorpg#mmos
RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy Mirror on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name mirror --restart always mirrornetworking/mirror:latest

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 and over 1000 Steam Games.

Originally based on UNET: battle tested since 2014 for 10 years and counting!

Mirror is stable, modular & easy to use for all types of games, even small MMORPGs ๐ŸŽฎ.

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 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 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 of over 14,000 users contributes feedback & improvements every day. Please join us on our journey, help others, and consider a Donation 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, open one of the examples & press Play!

Check out our Documentation to learn how it all works.

If you are migrating from UNET, then please check out our 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 and includes a Mirror Integration!


Made with Mirror

Thousands of Steam Games

Mirror is used by thousands of steam games.

[Population: ONE](https://www.populationonevr.com/)


The BigBoxVR 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 from the Mirror team, BigBoxVR also hired one of our engineers.

Population: ONE was acquired by Meta in June 2021, and they've just released a new Sandbox addon in 2022!

[Zooba](https://play.google.com/store/apps/details?id=com.wildlife.games.battle.royale.free.zooba&gl=US)


Wildlife Studio's 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, with Wildlife Studios as one of the top 10 largest mobile gaming companies in the world.

[Swarm VR](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, made with Mirror.

[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/)


Castaways 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/)


Nudge Nudge Games' first title: the colorful, post-apocalyptic open world sandbox game Nimoyd is being developed with Mirror.

Soon to be released for PC & mobile!

[Project Z](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/)


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/)


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 in 2019.

[A Glimpse of Luna](https://www.glimpse-luna.com/)


A Glimpse of Luna - a tactical multiplayer card battle game with the most beautiful concept art & soundtrack.

Made with Mirror by two brothers with no prior game development 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/)


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, Sun Haven was released on Steam in 2021 and later on ported to Mirror in 2022.

[A Township Tale](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 with over 6000+ ratings.

[Inferna](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/)


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/)


The turn based, monster taming MMORPG Untamed Isles is currently being developed by Phat Loot Studios.

After their successful Kickstarter, the New Zealand based studio is aiming for a 2022 release date.

[Portals](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/)


Northwood Studios' 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.

[Naรฏca Online](https://naicaonline.com/)


Naรฏca is a beautiful, free to play 2D pixel art MMORPG.

The France based team was one of Mirror's early adopters, releasing their first public beta in November 2020.

[Laurum Online](https://laurum.online/)


Laurum Online - a 2D retro mobile MMORPG with over 500,000 downloads on Google Play.

[Empires Mobile](https://knightempire.online/)


Empires Mobile - Retro mobile MMORPG for Android and iOS, reaching 5000 CCU at times. Check out their video for some early MMORPG nostalgia.

[Overpowered](https://overpoweredcardgame.com/)


Overwpowered, 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...















Modular Transports

Mirror uses KCP (reliable UDP) by default, but you may use any of our community transports for low level packet sending:

Benchmarks

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 ๐Ÿ˜—.


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
  • Security Policy
  • 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.

Credits / past findings / fixes:


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.

Benefits

  • Installing our plugin this way will ensure you get the freshest updates the moment they come out, see the update guide.

Caveats

  • Requirement: functioning git client installed, for example git-scm.

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,
  • 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:

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:

From here, we recommend following our 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 to ensure consistent and readable formatting, configured in /.config/dotnet-tools.json.

See Editor integration 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.

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
  • 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.