Skip to content
CAI
Software that uses CAICheck a score

MirrorNetworking/Mirror

54.1

Adequate · 28 September 2026

70.9k

lines of production code

C#

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Mirror is an open-source, MMO-scale networking library for the Unity game engine that provides the core infrastructure for building multiplayer games. It handles low-level network transport, client-server communication, and state synchronization through components like NetworkTransform and NetworkRigidbody, while offering advanced features such as client-side prediction, lag compensation, and various interest management strategies to optimize bandwidth and visibility. The system includes a comprehensive suite of editor tools, authenticators, and hosting plugins, along with numerous example projects demonstrating common multiplayer patterns like room systems, additive scene loading, and physics-based interactions.

How it got here

2018–2020 — Project initialization and example expansion

55 changes.

This period established the foundational structure, CI/CD infrastructure, and coding standards for the Mirror Networking project, followed by the initial release of the core library. It focused heavily on expanding the ecosystem with a wide variety of demo examples, such as Pong, Tanks, and additive scenes, while simultaneously overhauling the IL Weaver to support modern Unity versions and introducing comprehensive test coverage.

2021–2023 — Interest management and lag compensation

99 changes.

This period focused on expanding the Interest Management system with new spatial hashing, team-based, and scene-aware visibility strategies, alongside introducing a comprehensive Lag Compensation system for server-side hit validation. The work also included significant refactoring of the networking core, transports, and physics components to support client-side prediction and improved performance, accompanied by extensive unit test coverage and updated example scenes.

2024–2026 — Encryption, prediction, and interest management

34 changes.

This period focused on introducing core networking features, including AES-256-GCM encryption, advanced prediction benchmarks, and new interest management strategies like Scene Distance and Hex Spatial Hash. It also significantly expanded the example library with comprehensive controllers, physics-based movement, and UI utilities to demonstrate these capabilities.

Features

Add Edgegap KCP Relay transport

Introduces a new Edgegap KCP transport for Mirror networking, including the \EdgegapKcpTransport\ component, custom \EdgegapKcpClient\ and \EdgegapKcpServer\ implementations, and a \RelayCredentialsFromArgs\ helper to parse session and user IDs from command-line arguments. This allows developers to route Mirror traffic through the Edgegap distributed relay infrastructure.

Assets/Mirror/Transports/Edgegap/EdgegapRelay · high confidence

Add Edgegap Lobby KCP Transport and Editor Setup Tools

This change introduces a new Edgegap Lobby transport for Mirror, allowing games to use Edgegap's lobby service for matchmaking and relay. The \EdgegapLobbyKcpTransport\ component handles creating, starting, joining, and leaving lobbies, and waits for relay assignment before connecting. An accompanying \LobbyTransportInspector\ provides a 'Create & Deploy Lobby' button in the Unity Editor, which opens the \LobbyServiceCreateDialogue\ window to guide users through API key entry and lobby creation. The implementation includes the \LobbyApi\ client for Edgegap REST calls and serializable model structs for request/response data.

Assets/Mirror/Transports/Edgegap/EdgegapLobby · high confidence

Add PhysicsSimulator component for Interest Management

A new PhysicsSimulator component has been added to the Interest Management system, providing a prefab and C\# script that allows the server to manually simulate 3D and 2D physics scenes. This enables developers to control physics simulation timing independently of the default Unity physics loop, which is useful for deterministic networking or custom interest management logic.

Assets/Mirror/Components/InterestManagement/PhysicsSimulator · high confidence

Add Player Ball prefab to RigidbodyPhysics example

The RigidbodyPhysics demo now includes a Player Ball prefab, providing a ready-to-use networked rigidbody character with configured NetworkTransform and NetworkRigidbody components for position synchronization.

Assets/Mirror/Examples/RigidbodyPhysics/Prefabs · high confidence

AddForce example script for Rigidbody physics

The RigidbodyPhysics example now includes an AddForce script that allows users to apply upward force to a NetworkBehaviour's Rigidbody component by pressing the Space key, provided the object has local authority and is not kinematic. The script automatically caches the Rigidbody reference during validation to avoid runtime lookups.

Assets/Mirror/Examples/RigidbodyPhysics/Scripts · high confidence

Added BenchmarkIdle example for testing idle object performance

The BenchmarkIdle example scene and supporting assets have been added to demonstrate and test the performance of the dirty objects technique under high-load conditions. The demo spawns 10,000 NPC objects, 80% of which remain idle (sleeping) to minimize network traffic, while the remaining 20% are active. It includes a custom NetworkManager script for deterministic spawning, Player and NPC prefabs with associated materials, and a Unity scene configured for headless server/client CCU testing.

Assets/Mirror/Examples/BenchmarkIdle · high confidence

Added BilliardsPredicted example scene and documentation

A new example scene, MirrorBilliardsPredicted.unity, has been added to demonstrate Mirror's client-side prediction features for physics-based multiplayer games. The scene includes a \_Readme.txt explaining that it uses 'Fast' prediction mode to ensure exact collisions and notes that the ball Rigidbody CollisionMode is set to ContinuousDynamic to prevent balls from passing through each other under large forces. This serves as an advanced reference for implementing prediction in FPS or physics-heavy titles.

Assets/Mirror/Examples/BilliardsPredicted · high confidence

Added Couch Co-Op example scene and supporting assets

The Couch Co-Op example location now includes the main Unity scene (MirrorCouchCoop.unity), a materials folder, prefabs, scripts, and a README. This provides a ready-to-run demonstration of local couch multiplayer with remote network joining, allowing users to add multiple local players via UI and connect remote clients over localhost, LAN, or the internet.

Assets/Mirror/Examples/CouchCoop · high confidence

Added CouchPlayer and CouchPlayerManager prefabs to the Couch Co-op example

The Couch Co-op example now includes the \CouchPlayer\ and \CouchPlayerManager\ prefabs, providing the necessary assets for local multiplayer functionality. The \CouchPlayer\ prefab defines the visual representation of a player character, while the \CouchPlayerManager\ prefab handles the logic for managing multiple local players, including configuration for player keys and associated prefabs.

Assets/Mirror/Examples/CouchCoop/Prefabs · high confidence

Added Edgegap Lobby and Relay transport assets

This change introduces the initial asset structure for the new Edgegap Lobby and Relay network transports. It adds the necessary Unity metadata files (.meta) for the EdgegapLobby and EdgegapRelay components, along with the associated branding image (edgegap.png), enabling these new transport options within the Mirror networking library.

Assets/Mirror/Transports/Edgegap · high confidence

Added Icosphere model and material for the Multiple Additive Scenes example

The MultipleAdditiveScenes example now includes a new 3D asset: an Icosphere mesh (OBJ format) with a corresponding red material. This model is part of the example's visual components, likely serving as a physics or interaction object within the additive scene demonstration.

Assets/Mirror/Examples/MultipleAdditiveScenes/Models · high confidence

Added Multiple Additive Scenes example

A new example project demonstrating how to use additive scene loading with physics simulation in Mirror. The example includes a MultiScene Network Manager, a PhysicsSimulator script for server-side physics, and a NetworkSceneChecker component to isolate networked objects within specific subscenes. It provides a playable demo where multiple client instances can join a host, with physics interactions and scoring isolated to the subscene each player is currently in.

Assets/Mirror/Examples/MultipleAdditiveScenes · high confidence

Added Multiple Matches example prefabs

The Multiple Matches example now includes its required UI and network prefabs (CellGUI, MatchController, MatchGUI, MatchPlayer, and PlayerGUI) in the Assets/Mirror/Examples/MultipleMatches/Prefabs directory, enabling the example scene to function correctly.

Assets/Mirror/Examples/MultipleMatches/Prefabs · high confidence

Added PickupsDropsChilds example prefabs

The PickupsDropsChilds example now includes its required asset prefabs, providing the visual and functional components for the demo. This adds prefabs for the player character (Custom Robot Kyle), the player avatar, and three interactable items: a Ball, a Bat, and a Box. It also includes a SceneObject prefab for static scene items. These prefabs are configured with the necessary Mirror networking components (NetworkIdentity, NetworkTransform) and item-specific scripts to support the pickup and drop mechanics demonstrated in the example.

Assets/Mirror/Examples/Benchmark, Assets/Mirror/Examples/Benchmark/Materials, Assets/Mirror/Examples/PickupsDropsChilds/Prefabs · high confidence

Added PickupsDropsChilds example scene

A new example scene, PickupsDropsChilds, has been added to the Mirror Examples directory. This scene demonstrates pickup and drop mechanics for child objects, including a configured NetworkManager with default transport settings (port 7777) and supporting assets such as materials, prefabs, and scripts.

Assets/Mirror/Examples/PickupsDropsChilds, Assets/Mirror/Examples/RigidbodyPhysics/Materials · high confidence

Added Player prefab for Discovery example

The Discovery example now includes a Player prefab (Player.prefab) containing a capsule mesh, collider, and the NetworkIdentity component, providing the necessary asset for networked player instances in this scenario.

Assets/Mirror/Examples/Chat/Prefabs, Assets/Mirror/Examples/Discovery/Prefabs · high confidence

Added PlayerPredicted component for predicted billiards gameplay

The BilliardsPredicted example now includes a new PlayerPredicted prefab and script that handle local prediction for the white ball. This component allows clients to apply force to the ball immediately for low-latency feel, while sending commands to the server for validation and authoritative state correction. It uses FindAnyObjectByType (with a fallback to FindObjectOfType for older Unity versions) to locate the ball and applies force using ForceMode.Impulse to minimize drift between client prediction and server simulation.

Assets/Mirror/Examples/BilliardsPredicted/Player · high confidence

Added Pong example project assets

The Pong example project now includes its core asset structure, specifically adding the PhysicsMaterials folder containing a BallMaterial (configured with zero friction and full bounciness) alongside metadata for Prefabs, Scenes, Scripts, and Sprites folders.

Assets/Mirror/Examples/Pong, Assets/Mirror/Examples/Pong/PhysicsMaterials · high confidence

Added Pong example sprite assets

The Pong example scene now includes the necessary sprite texture metadata files for the ball, racket, dotted line, and walls, ensuring the visual assets are correctly imported and configured in Unity.

Assets/Mirror/Examples/Pong/Sprites · high confidence

Added Prediction Benchmark example scene and assets

A new benchmark example has been added to demonstrate the performance of the PredictedRigidbody system under worst-case conditions (1000 constantly synced and corrected objects). This location provides the complete scene setup, including the MirrorPredictionBenchmark.unity scene, a NetworkManager script that spawns 1000 balls with random forces, and the associated Prefabs (PredictedBall, PlayerSpectator) and Materials (BallMaterial, WallMaterial) required to run the benchmark.

Assets/Mirror/Examples/BenchmarkPrediction · high confidence

Added Recon Tank example model and assets

The Examples area now includes a new Recon Tank model asset pack. This adds the 3D mesh, textures (BaseColor, Normal, Metallic, Emissive), an AnimatorController with Idle/Drive/Forward/Shoot states, a PBR Material, and a BasePrefab containing the tank hierarchy and a SeatedPlayer capsule, providing a ready-to-use vehicle model for the Mirror examples.

_Assets/Mirror/Examples/\Common/TankModel · high confidence

Added Robot Kyle example asset

The Robot Kyle example asset is now available in the \_Common folder, including the 3D model, materials, textures, and prefab. This provides a ready-to-use character model for testing and demonstration purposes within Mirror examples.

_Assets/Mirror/Examples/\Common/RobotKyle · high confidence

Added Scene Distance Interest Management component

A new interest management strategy is now available under Network/Interest Management/Scene/Scene Distance Interest Management. This component manages object visibility based on distance within specific scenes, allowing users to configure the maximum visibility range, the minimum movement distance required to trigger an observer rebuild, the interval for rebuilding observers, and a separate interval for static objects. It includes optimizations to avoid unnecessary rebuilds for objects that have not moved significantly and handles scene changes by tracking object locations across additive scene loading.

Assets/Mirror/Components/InterestManagement/SceneDistance · high confidence

Added TankProjectile example asset

The TankProjectile example prefab, along with its C\# script, material, and metadata, has been added to the common projectiles directory. This asset provides a ready-to-use projectile for the Tanks demo, featuring a capsule collider, a rigidbody configured for continuous collision detection without gravity, and a script that applies force on spawn and deals damage to tank health components upon collision.

_Assets/Mirror/Examples/\Common/Projectiles · high confidence

Added TopDown Shooter example assets

The TopDownShooter example now includes its required asset metadata, providing the necessary Unity references for materials, prefabs, scenes, scripts, and textures (such as player, enemy, and UI sprites) as well as shared Kenney and OpenGameArt fonts and audio files.

(repo-wide) · high confidence

Added WebGL WebSocket client implementation with Unity version compatibility

Added the SimpleWeb WebGL client transport, introducing \WebSocketClientWebGl\ and \SimpleWebJSLib\ to enable WebSocket connectivity on Unity WebGL builds. The implementation bridges C\# to JavaScript via P/Invoke and includes specific compatibility logic for Unity 2021.3 and newer (using \ReadOnlySpan\ for zero-allocation sends) versus older versions (using \ArraySegment\ and manual offset handling). It also features a message queue to buffer sends that occur before the connection is fully established, preventing errors from immediate send calls.

Assets/Mirror/Transports/SimpleWeb/SimpleWeb/Client/Webgl · high confidence

Added multiplayer Billiards example scene and assets

The Billiards example directory now includes the core scene (MirrorBilliards.unity), the Player prefab, and associated metadata files, establishing the foundational assets for the demo. The included readme explains that this is a simple multiplayer demo where mouse drags apply force to the white ball, with hits sent to the server via \[Command\] and physics simulated on the server. It also notes the use of a LatencySimulation component to demonstrate delay and mentions that the Rigidbody CollisionMode for the balls is set to ContinuousDynamic to prevent tunneling.

Assets/Mirror/Examples/Billiards · high confidence

Added physics and render materials for the Multiple Additive Scenes example

The Multiple Additive Scenes example now includes dedicated asset files for its visual and physical properties. This change adds PhysicMaterials for the Icosphere, Player, and RoomBounce objects to define their friction and bounciness, alongside Unity Materials for the PlayArea, Player, and Prize to control their rendering appearance.

Assets/Mirror/Examples/MultipleAdditiveScenes/Materials · high confidence

Added rigidbody physics example assets

The RigidbodyPhysics example now includes dedicated PhysicMaterials for demonstrating collision behavior, specifically adding 'Ball' and 'Floor' materials with 0.8 bounciness and zero friction. These assets are organized into a new PhysicMaterials folder alongside updated metadata for the Prefabs, Scenes, and Scripts directories to support the example.

Assets/Mirror/Examples/RigidbodyPhysics, Assets/Mirror/Examples/RigidbodyPhysics/PhysicMaterials · high confidence

Added semitransparent materials for the PickupsDropsChilds example

The PickupsDropsChilds example now includes dedicated asset files for its visual components. New Unity materials (Ball, Bat, Box) have been added with alpha-premultiplied transparency enabled, giving the objects a semitransparent appearance. Additionally, a 'Bouncy' PhysicMaterial has been introduced to provide high-bounce physics interactions for these items.

Assets/Mirror/Examples/PickupsDropsChilds/Materials · high confidence

Added shared dirt and wall textures to common examples

The \_Common/Textures directory now includes a hand-painted dirt texture (with its material and CC-BY-3.0 license) and wall textures (including a normal map), making these assets available for reuse across Mirror example scenes.

_Assets/Mirror/Examples/\Common/Textures · high confidence

Added visual assets for the Character Selection example

The Character Selection example now includes a set of Unity materials (Black, Brown, Desert, Floor, Gold, GreenDark, Icon1, Red, Silver, White) and texture files (IconRandomColour, IconResetColour, IconStickPerson, dirtMoon) to support the new character customization UI and rendering.

Assets/Mirror/Examples/CharacterSelection/Materials, Assets/Mirror/Examples/CharacterSelection/Textures · high confidence

Additive Levels example introduces scene transition and portal logic

The Additive Levels example now includes scripts to handle additive scene loading, fading, and player teleportation. AdditiveLevelsNetworkManager manages the lifecycle of additive subscenes and coordinates fade effects during transitions. Portal.cs allows players to trigger scene changes by entering a trigger volume, handling the unloading of the current subscene, repositioning the player, and loading the destination subscene. FadeInOut.cs provides a framerate-independent fade effect using a UI Image, while LookAtMainCamera.cs ensures portal labels always face the player.

Assets/Mirror/Examples/AdditiveLevels/Scripts · high confidence

Automatic URP material conversion for Mirror examples

An editor script has been added to the Mirror Examples folder that detects when the project uses the Universal Render Pipeline (URP) and offers to convert example materials from legacy or Built-in shaders to URP-compatible equivalents. On editor startup, the script checks for a conversion flag; if none exists and URP is active, it prompts the user to convert materials in the Examples directory, preserving properties like color, textures, tiling, offset, metallic, smoothness, and transparency settings. This ensures the example scenes render correctly without manual intervention when switching render pipelines.

Assets/Mirror/Examples/Editor · high confidence

Billiards ball prefabs and scripts added to the example

The Billiards example now includes dedicated assets for the red and white balls. This adds a PhysicMaterial with tuned friction and bounciness, red and white materials, and prefabs for both ball types. The RedBall script handles server-side destruction when a red ball enters a pocket, while the WhiteBall script implements client-side mouse dragging with a visual indicator, applies force using Impulse mode with a configurable maximum, and resets the white ball's position when it is pocketed.

Assets/Mirror/Examples/Billiards/Ball · high confidence

Billiards table assets and prefab added

The Billiards table example now includes a complete set of assets: a Unity prefab (Billiard Table.prefab) containing the table mesh, trigger colliders for the pockets, and associated materials (Body, Edge, Felt, Holes, Lamp, Pockets). The 3D model (BilliardTable Model.obj) and its material definitions (BilliardTable.mtl) are also added, along with a license file attributing the model to Jummit under CC0.

Assets/Mirror/Examples/Billiards/Table · high confidence

Couch Co-op example adds camera, player management, and moving platforms

The Couch Co-op example now includes scripts for dynamic camera management, local player handling, and interactive level elements. A new CameraViewForAll script automatically adjusts the camera's position and zoom to frame all active local players. Player management is handled by CouchPlayerManager and CouchPlayer, which support adding and removing local players via UI buttons and assign specific input keys per player. Additionally, MovingPlatform and PlatformMovement scripts introduce synchronized moving platforms that players can ride, with optional behaviors to start/stop movement based on player collision.

Assets/Mirror/Examples/CouchCoop/Scripts · high confidence

Edgegap Hosting Plugin integration

Adds the Edgegap Hosting Plugin to Mirror, providing an Editor window and API wrappers for managing game server deployments. The plugin includes a custom HTTP encoder and utility classes to remove the dependency on Unity's Plastic SCM package, and contains C\# compatibility fixes (such as explicit generic type arguments) to support Unity 2019 and 2020.

Assets/Mirror/Hosting · high confidence

Edgegap Lobby example adds UI for listing, creating, and joining lobbies

The EdgegapLobby example now includes a complete UI layer for interacting with Edgegap's Lobby and Relay service. This adds a lobby list screen (UILobbyList) that displays available lobbies, supports filtering by name, and allows users to join sessions. A creation screen (UILobbyCreate) lets users configure lobby names and player slots before starting as a host or dedicated server. A status screen (UILobbyStatus) provides real-time feedback on the connection state (offline, server, host, or client) with controls to stop the session. These components are wired to the EdgegapLobbyKcpTransport to manage the lobby lifecycle.

Assets/Mirror/Examples/EdgegapLobby · high confidence

Introduce Lag Compensation V1 with HistoryBounds MVP

This update adds the core components for the new Lag Compensation system in Mirror. It introduces the \LagCompensation\ static class, which implements the server-side algorithm for inserting snapshots, estimating client command times based on RTT, and sampling/extrapolating history to handle hit detection. The \HistoryBounds\ class is added to efficiently track and manage bounding box history using a bucketed approach, allowing the system to decide which objects need rollback without processing the entire history. Supporting infrastructure includes the \Capture\ interface for defining snapshot data with optional gizmo drawing, a \MinMaxBounds\ struct optimized for performance by avoiding Unity's center/extents conversions, and \LagCompensationSettings\ to expose configurable history limits and capture intervals in the Unity inspector.

Assets/Mirror/Core/LagCompensation · high confidence

Introduce PredictedRigidbody component for client-side physics prediction

This change introduces the PredictedRigidbody component, which enables client-side prediction and server reconciliation for Rigidbody-based objects. The component separates physics simulation from visual rendering by moving Rigidbody and Collider components to a background 'physics copy' GameObject, allowing the main visual object to smoothly interpolate. It supports two modes: 'Smooth' (physics separated, visual interpolation) and 'Fast' (physics on main object, hard corrections). Key features include configurable motion smoothing thresholds, state history management for correction, snapping to reduce jitter at rest, and support for child colliders and joints. The system uses a blittable struct for efficient network serialization and includes helper utilities for moving physics components and colliders. Two ghost materials (LocalGhostMaterial and RemoteGhostMaterial) are provided for visual debugging of the prediction state.

Assets/Mirror/Components/PredictedRigidbody · high confidence

Introduce ThreadedTransport for background network processing

Adds a new ThreadedTransport base class that offloads network I/O to a dedicated worker thread, using concurrent queues to safely pass events between the worker and Unity's main thread. This architecture prevents main-thread blocking during send/receive operations and includes built-in sleep detection to automatically disconnect and hibernate the thread on mobile/VR devices to conserve battery life.

Assets/Mirror/Transports/Threaded · high confidence

LAN Network Discovery and HUD added

Added LAN network discovery capabilities to the Mirror networking library. This includes a base discovery component (NetworkDiscoveryBase) that handles UDP multicast for server advertisement and client scanning, a concrete implementation (NetworkDiscovery) that returns server URIs, and a corresponding editor HUD (NetworkDiscoveryHUD) that provides 'Find Servers', 'Start Host/Server', and 'Stop' buttons for quick testing. The system allows clients to automatically discover servers on the local network and connect to them via the provided URI.

Assets/Mirror/Components/Discovery · high confidence

Lag Compensation demo example added

A new Lag Compensation demo has been added to the Mirror Examples. This standalone example demonstrates a rollback-based lag compensation algorithm that is independent of the Mirror networking library, allowing it to be used in other game engines. The demo includes a server and client cube setup with configurable latency, jitter, and packet loss simulation, along with snapshot interpolation and history-based hit validation to correct client-side input timing.

Assets/Mirror/Examples/LagCompensation · high confidence

Mirror Components: New Diagnostics, Room System, and Network Animator Updates

This release introduces several new diagnostic tools and updates to the networking components. A new GUIConsole component provides an in-build log viewer accessible via the back-quote key, while NetworkStatistics and NetworkDiagnosticsDebugger offer real-time packet/byte monitoring and message logging. The legacy Lobby system has been renamed to Room, with NetworkLobbyManager and NetworkLobbyPlayer now marked as obsolete aliases for NetworkRoomManager and NetworkRoomPlayer. NetworkAnimator gains support for syncing animator speed, multiple layers, and layer weights, with a default sync direction of ClientToServer. Additionally, a new NetworkName component allows synchronizing GameObject names across the network.

Assets/Mirror/Components · high confidence

Mirror Networking library initial release

This entry introduces the Mirror MMO-scale networking library for Unity, including the core runtime components, editor tools, transports, authenticators, and hosting plugins. The package requires Unity 2019 or 2020 LTS with the .NET 4.x scripting backend and includes a Readme file with documentation links and support information. Users must restart Unity after importing to update the Components menu.

Assets/Mirror · high confidence

Mirror networking library restructured into Core assembly with new host mode and connection quality features

The Mirror networking library has been reorganized into a new 'Core' assembly, introducing a dedicated HostMode helper class to streamline local connection setup and message queuing for host mode clients. This update also adds a ConnectionQuality system that provides heuristics to estimate network quality based on RTT and jitter, exposing this data via the NetworkClient GUI. Additionally, the InterestManagement system has been refactored with a new base class (InterestManagementBase) to support custom visibility solutions, and the library now exposes internal assemblies to its test suites via AssemblyInfo.cs.

Assets/Mirror/Core · high confidence

Multiple Additive Scenes example introduces concurrent physics and scoring

The Multiple Additive Scenes example now supports multiple concurrent physics scenes. A new MultiSceneNetManager loads several additive scene instances and distributes players across them using a round-robin strategy. A new Spawner manages a pooled reward system, and a PhysicsCollision component applies force to rewards when players collide with them. PlayerScore tracks and displays scores per scene instance, and Reward objects are recycled after collection.

Assets/Mirror/Examples/MultipleAdditiveScenes/Scripts · high confidence

New Authenticator Components and Timeout Wrapper

The Authenticators module now includes four new components: BasicAuthenticator for simple username/password validation, DeviceAuthenticator for identification via device unique identifiers (with GUID fallback), UniqueNameAuthenticator for enforcing unique player names, and TimeoutAuthenticator which wraps another authenticator to automatically disconnect clients that fail to authenticate within a specified time limit. These components are packaged in the new Mirror.Authenticators assembly definition.

Assets/Mirror/Authenticators · high confidence

New Auto LAN Client Controller example

Added a new example demonstrating automatic LAN discovery and connection, where a client can automatically find and join a server, or fall back to starting a host if no servers are detected. The example includes a Unity scene, a player prefab, and scripts for network discovery, a custom NetworkManager, and a Canvas HUD for UI interaction. The discovery script uses FindAnyObjectByType for Unity 2022.2+ compatibility, falling back to FindObjectOfType for older versions.

Assets/Mirror/Examples/AutoLANClientController · high confidence

New CCU benchmark example with deterministic spawning and automated movement

Added a new CCU (Concurrent Users) benchmark example in the Assets/Mirror/Examples/CCU directory. This includes a custom CCUNetworkManager that deterministically spawns a configurable number of entities (default 10,000) using a seeded random number generator for reproducible test results. The example features Player and Monster prefabs with automated movement logic (random walking within a defined area) and a NetworkTransform configured to sync only on change to optimize bandwidth. It also includes a Readme explaining how to build and launch headless server/client binaries for load testing.

Assets/Mirror/Examples/CCU · high confidence

New Canvas-based Network Manager HUD example component

Added a new CanvasNetworkManagerHUD script and its associated prefab to the common examples directory, providing a Unity UI-based interface for starting and stopping network hosts, servers, and clients. The component exposes serialized fields for start/stop buttons, status labels, and input fields for network address and port, automatically handling WebGL platform restrictions (disabling host/server buttons) and updating the NetworkManager's address and port settings via input field listeners.

_Assets/Mirror/Examples/\Common/Scripts/CanvasNetworkManagerHUD · high confidence

New Character Selection example with customizable character prefabs

The Character Selection example now includes a set of prefabs that allow users to define and select from multiple character types. A new CharacterData prefab provides a centralized configuration for available characters, including their titles (Medic, Heavy, Assault), health, speed, attack stats, and abilities. This data drives the CharacterSelection UI prefab, which presents the selection interface. The example also introduces specific character prefabs (CharacterMedic, CharacterHeavy, CharacterAssault) with unique models and visual properties, along with a PlayerEmpty prefab to serve as a base or placeholder for player instances.

Assets/Mirror/Examples/CharacterSelection/Prefabs · high confidence

New Character Selection example with customization and scene management

The Character Selection example now includes a full suite of scripts enabling players to choose a character model, customize its color, and set a display name before joining the game. The new \NetworkManagerCharacterSelection\ handles the network logic for creating and replacing player characters via custom messages, while \CanvasReferencer\ and \SceneReferencer\ manage the UI interactions and scene transitions between the selection menu and the game world. Supporting scripts like \CharacterData\ provide the configuration for available characters, \CharacterSelection\ handles the synced visual properties on the player object, and \SceneCamera\ manages the camera behavior during selection.

Assets/Mirror/Examples/CharacterSelection/Scripts · high confidence

New Character Selection example with three scene variations

Added a new Character Selection example in the Examples folder, providing three distinct approaches to character customization: an offline pre-selection scene that passes data via static variables, a main scene that spawns a randomized character with UI-based changes, and a scene that spawns an empty player prefab for UI-driven character choice.

Assets/Mirror/Examples/CharacterSelection · high confidence

New ControllerUIBase utility for improved key display in examples

The examples now include a shared \ControllerUIBase\ component that provides a \GetKeyText\ method to format Unity \KeyCode\ values into user-friendly strings (e.g., displaying 'Esc' instead of 'Escape' or arrow symbols for directional keys). This utility is added to the common controllers folder to standardize how input keys are presented in the example UIs, alongside new metadata files for the associated controller folders.

_Assets/Mirror/Examples/\Common/Controllers · high confidence

New Distance-based Interest Management component with performance optimizations

Added a new DistanceInterestManagement component that manages network visibility based on spatial distance, replacing the previous per-identity NetworkVisibility approach. This component introduces configurable visibility ranges (default 500), a minimum movement threshold (minMoveDistance) to avoid unnecessary rebuilds for stationary objects, and a static object rebuild interval to optimize performance for non-moving entities. It also supports custom visibility ranges via the new DistanceInterestManagementCustomRange component, which can be attached to individual NetworkIdentities. The implementation uses squared-distance comparisons and caches connection/identity positions to reduce runtime overhead.

Assets/Mirror/Components/InterestManagement/Distance · high confidence

New Encryption Transport with Inspector and Threaded KCP Support

This change introduces the Encryption Transport, a new component that wraps an existing Mirror transport to provide AES-256-GCM encryption for all network traffic. It includes a custom Unity Editor inspector that allows users to configure client-side public key validation (via a trusted list or runtime callback) and server-side keypair management, including a button to generate and save key pairs directly from the editor. The package also adds a ThreadedEncryptionKcpTransport variant for use with the threaded KCP transport, and bundles the BouncyCastle cryptography library within the transport's plugin folder to ensure it is removed cleanly if the transport is deleted.

Assets/Mirror/Transports/Encryption · high confidence

New Hex Spatial Hash examples for 2D and 3D Interest Management

Added the Hex Spatial Hash example scenes and supporting assets for both 2D and 3D environments. This includes the \Hex2DSpatialHash\ and \Hex3DSpatialHash\ scenes, along with player prefabs (\Hex2DPlayer\, \Hex3DPlayer\), a shared spawn prefab, and a random color material. The example features custom Network Manager scripts (\Hex2DNetworkManager\, \Hex3DNetworkManager\) that demonstrate spawning large grids of objects (up to 3,000 in 2D and 8,000 in 3D) to showcase the hex-based spatial hashing interest management system.

Assets/Mirror/Examples/HexSpatialHash · high confidence

New Hexagonal and 3D Spatial Hashing Interest Management components

Added HexSpatialHash2DInterestManagement and HexSpatialHash3DInterestManagement components, which use hexagonal grid topology for more efficient and accurate visibility checks compared to the existing square-grid SpatialHashingInterestManagement. These new components support configurable rebuild intervals for dynamic and static objects, allow selection between XZ (3D) and XY (2D) planes for the 2D variant, and include a cell height parameter for the 3D variant to handle vertical visibility. The implementation introduces supporting grid structures (HexGrid2D, HexGrid3D, Grid2D, Grid3D) that optimize memory usage by avoiding allocations during grid updates and precomputing neighbor offsets for faster spatial queries.

Assets/Mirror/Components/InterestManagement/SpatialHashing · high confidence

New Interest Management strategies added

Added new Interest Management components for Distance, Match, PhysicsSimulator, Scene, SceneDistance, SpatialHashing, and Team. These components provide alternative methods for determining which clients should receive updates for networked objects, allowing users to choose the strategy that best fits their game's needs.

Assets/Mirror/Components/InterestManagement · high confidence

New Lag Compensation components for server-side hit validation

Added two new Unity components to the Mirror networking library to facilitate lag compensation: \LagCompensator\ and \HistoryCollider\. \LagCompensator\ acts as a convenience wrapper that automatically captures position and size snapshots of a tracked collider at server-side intervals, storing them in a history buffer. It exposes methods like \Sample\, \BoundsCheck\, and \RaycastCheck\ to allow server-side validation of player actions (such as shooting) against the target's state at the estimated time of the client's input, accounting for network latency. \HistoryCollider\ provides an alternative approach by projecting historical bounds onto a trigger collider, enabling standard physics raycasts against past positions. These components allow developers to implement more accurate hit detection in multiplayer games by compensating for network delay.

Assets/Mirror/Components/LagCompensation · high confidence

New Multiple Matches example for concurrent non-physics games

The MultipleMatches example demonstrates how to run several non-physics games (such as Tic-Tac-Toe) concurrently on a single server instance. It uses a NetworkMatchChecker component to isolate players into separate matches by matchId, ensuring clients only receive updates for their own match. The example includes a lobby UI for creating, joining, and managing matches, along with a simple turn-based game implementation.

Assets/Mirror/Examples/MultipleMatches/Scripts · high confidence

New NetworkRigidbody Benchmark demo example

A new example scene and supporting assets have been added to demonstrate high-performance rigidbody synchronization. The demo includes a custom NetworkManager that spawns a configurable grid of networked ball prefabs (defaulting to 2000) to stress-test the networking layer. It features prefabs for player and server balls, each equipped with NetworkTransform and custom scripts (AddForce, AutoForce) to apply physics forces, along with the necessary materials and physics materials for the simulation environment.

Assets/Mirror/Examples/RigidbodyBenchmark · high confidence

New PickupsDropsChilds example with equipped item usage system

The PickupsDropsChilds example now includes a structured system for equipping and using items like balls, bats, and boxes. This location provides the core scripting logic, introducing an IEquipped interface and an EquippedItemConfig struct to manage item usages (such as ammo or charges). The scripts handle synchronizing equipped items and their usage states across the network, allowing players to switch items, use them, and add or reset usages via commands and RPCs.

Assets/Mirror/Examples/PickupsDropsChilds/Scripts · high confidence

New Player and Flyer controller examples with Reliable, Unreliable, and Hybrid variants

The \_Common/Controllers area now includes complete example implementations for both Player and Flyer avatars. Each avatar type features a base controller (PlayerControllerBase, FlyerControllerBase) with configurable movement, turning, and UI settings, alongside dedicated UI scripts and prefabs that display the current key bindings. To demonstrate different networking strategies, each avatar is provided with three derived controller variants: PlayerControllerReliable/FlyerControllerReliable (using NetworkTransformReliable), PlayerControllerUnreliable/FlyerControllerUnreliable (using NetworkTransformUnreliable), and PlayerControllerHybrid (using NetworkTransformHybrid). These scripts are hidden from the Add Component menu and serve as ready-to-use examples for integrating Mirror's networking transforms with custom character controllers.

_Assets/Mirror/Examples/\Common/Controllers/PlayerController · high confidence

New Rigidbody-based player controller example with sliding and UI support

The \_Common/Controllers/PlayerControllerRB example now provides a new \PlayerControllerRBBase\ component that handles physics-based movement, including configurable sliding on slopes, mouse steering, and auto-run. It includes a dedicated \PlayerControllerRBUI\ component and prefab to display current key bindings in the game interface. Additionally, three specialized variants (\PlayerControllerRBHybrid\, \PlayerControllerRBReliable\, \PlayerControllerRBUnreliable\) are added to demonstrate integration with different NetworkTransform update methods, all configured to use FixedUpdate.

_Assets/Mirror/Examples/\Common/Controllers/PlayerControllerRB · high confidence

New Scene-based Interest Management component

Adds a new SceneInterestManagement component that manages network object visibility based on the Unity Scene each object resides in. This component tracks spawned objects per scene, handles scene transitions by marking affected scenes as dirty, and rebuilds observer lists in LateUpdate to optimize performance when multiple objects change scenes or are destroyed in the same frame.

Assets/Mirror/Components/InterestManagement/Scene · high confidence

New SimpleWeb Server transport implementation

The SimpleWeb transport now includes a new server-side implementation located in the Server directory. This adds the core server components: SimpleWebServer for managing connections and message queues, WebSocketServer for handling TCP listening and connection lifecycle, ServerHandshake for processing WebSocket upgrade requests, and ServerSslHelper for TLS stream creation. This enables the SimpleWeb transport to function as a server in addition to its existing client capabilities.

Assets/Mirror/Transports/SimpleWeb/SimpleWeb/Server · high confidence

New Snapshot Interpolation demo example

Added a standalone Snapshot Interpolation demo in the Mirror Examples folder, featuring a ServerCube that broadcasts position snapshots with configurable latency, jitter, and packet loss simulation, and a ClientCube that receives these snapshots and applies smooth interpolation using an exponential moving average for drift and delivery-time adjustment. The example includes a Unity scene, supporting materials, and a README, and is designed to be engine-agnostic (not dependent on Mirror's networking code) to demonstrate the interpolation algorithm.

Assets/Mirror/Examples/Snapshot Interpolation · high confidence

New Tank Controller example with hybrid, reliable, and unreliable variants

The Tank Controller example now includes a base \TankControllerBase\ and \TankTurretBase\ along with specialized variants (\TankControllerHybrid\, \TankControllerReliable\, \TankControllerUnreliable\) that integrate with their respective NetworkTransform types. The example also features a \TankHealth\ component for managing health and respawning, and updated UI prefabs (\TankControllerUI\, \TurretUI\) that dynamically display key bindings.

_Assets/Mirror/Examples/\Common/Controllers/TankController · high confidence

New Tanks Hybrid demo example

Added a new Tanks Hybrid example in Assets/Mirror/Examples/TanksHybrid that demonstrates Mirror's Hybrid sync method. This demo uses Unreliable sync for NetworkTransform components and manual OnSerialize/OnDeserialize for state like health, as the Weaver does not yet support Hybrid sync with \[SyncVar\]s. The example includes prefabs for tanks and projectiles, a Unity scene, and C\# scripts for tank movement, firing, and projectile logic.

Assets/Mirror/Examples · high confidence

New Tanks demo example showcasing child NetworkBehaviour components

A new Tanks demo example has been added to the Examples folder, designed to illustrate simple networked movement, RPCs, and SyncVars. This example specifically highlights the capability to use NetworkBehaviour components on child objects, as demonstrated by the NetworkTransform on the 'Turret' entity.

Assets/Mirror/Examples/Tanks · high confidence

New Team-based Interest Management system

Added NetworkTeam and TeamInterestManagement components to enable team-based visibility. NetworkTeam holds a team ID and a force-shown flag, while TeamInterestManagement groups networked objects by team and ensures clients only see objects belonging to their own team (unless force-shown). The system updates observer lists efficiently by batching rebuilds in LateUpdate and handles team changes, spawns, and destructions to keep visibility accurate.

Assets/Mirror/Components/InterestManagement/Match, Assets/Mirror/Components/InterestManagement/Team · high confidence

New Threaded KCP Transport for reduced main-thread overhead

A new ThreadedKcpTransport component is now available in the KCP transport folder. It offloads KCP network processing to a background worker thread, reducing main-thread CPU usage during high-load connections. It exposes the same configuration options (port, buffer sizes, window settings) as the standard KcpTransport and is designed as a drop-in replacement for users seeking better performance on the main thread.

Assets/Mirror/Transports/KCP · high confidence

New TopDownShooter multiplayer example

Added a complete TopDownShooter example demonstrating Mirror networking features, including player movement, shooting, enemy AI with NavMesh, and networked UI. The example includes scripts for camera following, HUD management, player and enemy logic, and network spawning, with compatibility updates for Unity 2022.2+ using FindAnyObjectByType.

Assets/Mirror/Examples/TopDownShooter/Scripts · high confidence

New and updated Mirror script templates for NetworkManager, NetworkBehaviour, and more

The Assets/ScriptTemplates folder now includes a comprehensive set of new and updated C\# script templates for Mirror networking components. This adds templates for NetworkManager, NetworkManagerWithActions (using C\# events instead of overrides), NetworkAuthenticator, NetworkBehaviour, NetworkBehaviourWithActions, Custom Interest Management, NetworkRoomManager, NetworkRoomPlayer, NetworkDiscovery, and NetworkTransform. These templates provide developers with pre-written boilerplate code, including documentation links, API references, and example implementations for common callbacks like Awake, Start, OnStartServer, OnClientConnect, and scene management, significantly speeding up the setup of new networked projects.

Assets/ScriptTemplates · high confidence

New low-level tools for precise timing and bandwidth-efficient compression

The Tools folder now includes AccurateInterval, which prevents tick-rate drift in fixed-tick servers by tracking interval remainders instead of resetting to the current time. Compression utilities have been added to support quantizing Vector3 and Quaternion data into compact integer formats (Vector3Long, Vector4Long) for delta compression, alongside a Half-precision float struct and various byte-based vector structs (Vector2Byte, Vector3Byte, etc.) to reduce network payload sizes.

Assets/Mirror/Core/Tools · high confidence

New prediction history correction and sampling algorithms

Added a new \Prediction.cs\ module in the Mirror core that provides static methods for managing client-side prediction history. The \Sample\ method efficiently retrieves the two states surrounding a given timestamp for interpolation, optimized to avoid SortedList allocation overhead. The \CorrectHistory\ method handles server corrections by inserting a corrected state into the history and recalculating the deltas and absolute values (position, velocity, angular velocity, and rotation) for all subsequent states to ensure consistency. This implementation supports both linear and spherical interpolation for vector and quaternion data respectively.

Assets/Mirror/Core/Prediction · high confidence

New real-time FPS, network bandwidth, and ping profiling graphs

Added a new set of runtime profiling visualizations to the Mirror Profiling component, including an FPS graph (showing average, min, and max frames), a network bandwidth graph (tracking incoming and outgoing bytes per second), and a network ping graph (displaying average RTT and variance). These graphs are built on a new \BaseUIGraph\ abstraction that supports configurable aggregation modes (Sum, Average, PerSecond, Min, Max) and custom shaders for rendering line and stacked charts, with ready-to-use Unity prefabs for immediate integration.

Assets/Mirror/Components/Profiling · high confidence

New shared example utility scripts

The Examples/Common/Scripts folder now includes several reusable helper scripts for Mirror examples: FPS for displaying frame rate, FaceCamera for billboard-style text meshes, PerlinNoise for generating terrain heights, PlayerCamera for managing third-person camera attachment and cleanup, RandomColor for syncing object colors with material caching to prevent leaks, and Respawn as a static utility for handling player respawning logic.

_Assets/Mirror/Examples/\Common/Scripts · high confidence

New threading infrastructure with worker threads and log capture

This change introduces the core threading primitives for Mirror in the Assets/Mirror/Core/Threading directory. It adds a thread-safe ConcurrentPool and ConcurrentNetworkWriterPool to reduce memory allocations by reusing writer objects. A new WorkerThread class provides a managed background thread lifecycle with proper exception handling, Unity profiler integration, and graceful stop capabilities. Additionally, a ThreadLog system is implemented to capture and forward Debug.Log messages from Mirror-managed background threads to the main thread, ensuring logs appear correctly in both the Editor and builds with thread identifiers.

Assets/Mirror/Core/Threading · high confidence

Project initialization with documentation, CI, and coding standards

This change establishes the foundational structure for the Mirror Networking project. It introduces a comprehensive .editorconfig file to enforce consistent C\# coding conventions, naming styles, and formatting rules across the codebase. A new CONTRIBUTING.md guide is added to outline contribution workflows, bug reporting standards, and optimization criteria. The project's licensing is formalized with a LICENSE file (MIT) and a SECURITY.md policy detailing vulnerability reporting and bug bounties. Additionally, CI/CD infrastructure is configured via .releerc.yml for semantic versioning and release automation, appveyor.yml for build and documentation deployment, and .codecov.yml for code coverage tracking. Supporting files like .gitignore, .gitattributes, FUNDING.yml, and funding.json are also included to manage repository hygiene and community support.

(repo-wide) · high confidence

Stacked Prediction benchmark example added

A new example scene and supporting assets have been added to demonstrate and stress-test the stacked prediction algorithm for networked Rigidbody physics. The example includes a custom NetworkManager that spawns a large grid of cubes, a PredictedCube prefab configured for high solver iterations to maintain stability, and a PlayerForce component allowing users to apply impulses to the stack. This is intended as a debugging tool for the prediction system rather than a production-ready demo.

Assets/Mirror/Examples/StackedPrediction · high confidence

TankTheftAuto example now includes separate Reliable and Unreliable player and tank prefabs

The TankTheftAuto example now provides distinct prefab variants for both players and tanks, separated by network reliability: PlayerReliable, PlayerUnreliable, TankReliable, and TankUnreliable. This allows users to easily compare or choose between reliable and unreliable networking setups within the example scene.

Assets/Mirror/Examples/TankTheftAuto/Prefabs · high confidence

Telepathy transport implementation added

The Telepathy transport is now available as a TCP-based networking layer for Mirror. It implements the PortTransport interface and provides configurable settings for server and client timeouts, message size limits, and queue depths to prevent allocation attacks and deadlocks. The transport automatically disables itself on WebGL platforms, handles URI parsing for hostnames, and includes fixes for null reference exceptions during client disconnection and proper server address reporting.

Assets/Mirror/Transports/Telepathy · high confidence

Architecture

Transports organized into dedicated folder with Assembly Definition

The transport implementations (Edgegap, Encryption, KCP, Latency, Middleware, Multiplex, SimpleWeb, Telepathy, and Threaded) have been moved into the Assets/Mirror/Transports directory. An Assembly Definition file (Mirror.Transports.asmdef) has been added to this location to manage compilation and dependencies for these transport components.

Assets/Mirror/Transports · high confidence

Weaver processors refactored into dedicated classes

The Mirror IL weaver's logic for processing NetworkBehaviour methods has been reorganized into distinct processor classes (CommandProcessor, RpcProcessor, MethodProcessor, MonoBehaviourProcessor, NetworkBehaviourProcessor, ReaderWriterProcessor, ServerClientAttributeProcessor, and SyncObjectInitializer). This change moves the code generation for Commands, ClientRpcs, TargetRpcs, SyncVars, and Reader/Writer registration out of a monolithic Weaver class into specialized components, improving maintainability and preparing the codebase for non-static IL post-processing.

Assets/Mirror/Editor/Weaver/Processors · high confidence

Behavioural changes

Added Mono.Cecil plugin metadata

The Mono.Cecil plugin asset now includes its Unity metadata file, ensuring the library is correctly recognized and imported by the Unity engine within the Assets/Mirror/Plugins directory.

Assets/Mirror/Plugins · low confidence

Added missing Unity meta files for Mirror and ScriptTemplates folders

Unity meta files were added for the Assets/Mirror and Assets/ScriptTemplates directories. This ensures that Unity correctly recognizes these folders as asset containers, which is necessary for proper import, version control tracking, and asset management within the Unity Editor.

Assets · high confidence

Additive Levels example now includes a skybox with fog and optimized textures

The Additive Levels example scene now features a skybox with fog enabled and a larger ground plane with a corrected color. The visual assets have been optimized, including updated materials for the player, portal, and start point, as well as new skybox textures for a more polished look.

Assets/Mirror/Examples/AdditiveLevels/Materials · high confidence

Additive Scenes example materials refreshed

The AdditiveScenes example now uses a new set of materials (Capsule, Cube, Cylinder, Player, Quad, Shelter, Sphere, Zone) with updated colors and consistent shader settings (Standard shader, no glossy reflections or specular highlights). The Zone material is now transparent, providing a clearer visual distinction for the play area in the example scene.

Assets/Mirror/Examples/AdditiveScenes/Materials · high confidence

Additive Scenes example now uses additive scene loading

The Additive Scenes example has been updated to demonstrate loading sub-scenes additively based on player proximity. The new README explains that the MainScene loads the SubScene when a player enters a specific zone, allowing different clients to see different content depending on their location. This replaces the previous LAN-based approach, focusing on additive scene management rather than local network discovery.

Assets/Mirror/Examples/AdditiveScenes · medium confidence

Additive Scenes example overhauled with new manager and zone-based scene loading

The AdditiveScenes example has been rewritten to use a new AdditiveNetworkManager that handles loading and unloading sub-scenes on the server, and a ZoneHandler component that triggers scene transitions via trigger colliders. The example now uses the \[ServerCallback\] attribute for server-only logic, checks for player identity via NetworkIdentity.observers, and sends SceneMessage commands to clients for additive scene operations.

Assets/Mirror/Examples/AdditiveScenes/Scripts · high confidence

Additive Scenes example prefabs updated for new networking features

The prefabs in the Additive Scenes example have been refreshed to align with recent Mirror changes. Player prefabs are now split into PlayerReliable and PlayerUnreliable variants to demonstrate different synchronization modes, and the Tank prefab now includes a custom distance-based visibility component. Additionally, the Zone prefab has been updated to reference the new sub-scene path, and all prefabs have been reset to default layers and updated for Unity 2021 compatibility.

Assets/Mirror/Examples/AdditiveScenes/Prefabs · high confidence

Automated management of Mirror version-specific compiler symbols

Mirror now includes an editor-only assembly (Mirror.CompilerSymbols) that automatically manages scripting define symbols in Unity projects. Upon compilation, the new PreprocessorDefine class ensures that version-specific symbols (MIRROR\_89\_OR\_NEWER, MIRROR\_90\_OR\_NEWER, MIRROR\_93\_OR\_NEWER, MIRROR\_96\_OR\_NEWER) are present, maintaining a rolling 12-month history of symbols to support backward compatibility checks in user code without manual configuration.

Assets/Mirror/CompilerSymbols · high confidence

Basic Example: Redesigned player lifecycle and UI event handling

The Basic Example scripts have been restructured to improve clarity and decouple logic. The \Player\ script now manages a static list of players to handle player number assignment and resetting on join/leave, and uses C\# events (\OnPlayerNumberChanged\, etc.) to notify the UI instead of direct references. \PlayerUI\ subscribes to these events to update the display, while \CanvasUI\ provides a static accessor for the player panel. \BasicNetManager\ overrides \OnServerAddPlayer\ and \OnServerDisconnect\ to trigger player number resets, ensuring consistent state across the network.

Assets/Mirror/Examples/Basic/Scripts · high confidence

Benchmark example: customizable spawn counts and improved movement logic

The Benchmark example now includes a custom NetworkManager that allows users to adjust the number of spawned entities (defaulting to 5,000) and the spacing between them, making it easier to stress-test the network. Additionally, monster movement has been refined to use a 10% probability for changing direction, ensuring that change-detection mechanisms in NetworkTransform are properly exercised, while player movement now includes descriptive names for easier debugging.

Assets/Mirror/Examples/Benchmark/Scripts · high confidence

Benchmark prefabs updated to use NetworkTransform v2 settings

The Monster and Player prefabs in the Benchmark example have been updated to align with the new NetworkTransform v2 (Snapshot Interpolation) architecture. Specifically, the prefabs now configure the NetworkTransform component with \syncRotation\ and \syncScale\ disabled, \interpolatePosition\ enabled, and \compressRotation\ enabled. The Player prefab also has gizmos and overlays enabled for debugging, while the Monster prefab uses a movement script with a 10% probability to ensure change detection is exercised during benchmarks.

Assets/Mirror/Examples/Benchmark/Prefabs · high confidence

Client-side WebSocket transport refactoring and custom port configuration

The SimpleWeb client transport has been restructured to support custom client ports for reverse proxy scenarios and improved logging. A new \ClientWebsocketSettings\ configuration struct and \WebsocketPortOption\ enum allow users to specify a custom client port or match the webpage protocol, enabling connectivity when not using standard ports 80/443. The core \SimpleWebClient\ base class has been introduced to unify client logic, featuring a \ProcessMessageQueue\ method that processes incoming messages with a configurable limit per tick and logs overflow warnings. The implementation also includes platform-specific client classes (\WebSocketClientWebGl\ and \WebSocketClientStandAlone\) and conditional compilation for \ReadOnlySpan\ support in Unity 2021.3 or newer.

Assets/Mirror/Transports/SimpleWeb/SimpleWeb/Client · medium confidence

Custom client port configuration for SimpleWeb Transport

Users can now specify a custom client port for the SimpleWeb Transport, which is useful for reverse proxy scenarios that do not use the default ports 80 or 443. This is implemented via a new \ClientWebsocketSettingsDrawer\ (Unity 2022.3 LTS or later) that exposes a 'Client Port Option' setting, allowing users to choose between matching the webpage protocol, defaulting to the server port, or entering a custom port value.

Assets/Mirror/Transports/SimpleWeb/Editor · high confidence

Editor tooling overhaul: new inspectors, helpers, and Android manifest fix

This update introduces a suite of editor improvements for Mirror. The NetworkManager inspector now features 'Populate Spawnable Prefabs' and 'Clear Spawnable Prefabs' buttons to automate spawn list management. The NetworkBehaviour inspector has been refined to display sync settings (direction, mode, method, interval) only when the component actually syncs data, and it now correctly renders private serializable fields and SyncObject collections. A new NetworkInformation preview window provides a quick overview of a GameObject's network identity, behaviors, and observers. Additionally, a new AndroidManifestHelper automatically injects required permissions (CHANGE\_WIFI\_MULTICAST\_STATE, INTERNET) into the Android manifest during builds to fix multicast discovery, and a new ReadOnlyDrawer ensures Unity's built-in ReadOnly attribute functions correctly for TextArea fields.

Assets/Mirror/Editor · high confidence

Example scenes restored for Unity 2019 compatibility

The MultipleMatches and Pong example scenes have been updated to ensure compatibility with Unity 2019. This change involves restoring the scene files and their associated metadata, allowing users to open and run these examples in Unity 2019 versions without errors.

Assets/Mirror/Examples/MultipleMatches/Scenes, Assets/Mirror/Examples/Pong/Scenes · high confidence

Examples/Common: New folder structure and asset organization

The \_Common directory for Mirror examples has been reorganized with the addition of new subfolders for Controllers, KenneyAssets, OpenGameArt, Projectiles, RobotKyle, Scripts, TankModel, and Textures. This change establishes a clearer structure for shared example assets and scripts, facilitating easier navigation and management of common resources across different example projects.

_Assets/Mirror/Examples/\Common · high confidence

KCP transport core engine updated to V1.31

The KCP transport implementation in Assets/Mirror/Transports/KCP/kcp2k/kcp has been updated to version 1.31. This update introduces a configurable MTU setting via KcpConfig, allowing the KcpServer and KcpClient buffers to be sized according to the new configuration. Additionally, the KcpClient constructor now accepts KcpConfig directly, and the Tick, Incoming, and Outgoing methods are now virtual to allow for easier extension.

Assets/Mirror/Transports/KCP/kcp2k/kcp · high confidence

LatencySimulation transport now supports multiple channels and implements PortTransport

The LatencySimulation transport has been updated to correctly simulate latency on all network channels, not just the default one, ensuring that reliable and unreliable messages experience consistent timing which prevents jitter in prediction and synchronization. It now implements the PortTransport interface, allowing it to correctly expose the underlying transport's port settings for gameplay code that checks for port-based connectivity. Additionally, the transport uses Time.unscaledTimeAsDouble for higher precision in long-running server scenarios and consolidates message queuing to support future channel expansions.

Assets/Mirror/Transports/Latency · high confidence

Middleware transport now supports address-based server connection events

The MiddlewareTransport component has been updated to wire up the OnServerConnectedWithAddress callback on its inner transport, allowing middleware implementations to access the client's address when a server connection is established. This change ensures that address information is available to middleware layers during the connection phase, complementing the existing event handling for data, errors, and disconnections.

Assets/Mirror/Transports/Middleware · high confidence

Mono.CecilX restricted to Unity Editor builds

The Mono.CecilX library and its associated metadata files (Mdb, Pdb, Rocks, and main DLL) are now configured via PluginImporter to be included exclusively in the Unity Editor. All standalone build platforms (Windows, macOS, Linux, etc.) are explicitly excluded, ensuring that the CecilX assembly is not packaged in final game builds.

Assets/Mirror/Plugins/Mono.Cecil · high confidence

NetworkRigidbody components now use Rigidbody.MovePosition for smoother interpolation

The NetworkRigidbody components (Reliable, Unreliable, and Hybrid/CORE) for both 3D and 2D physics have been rewritten to inherit from the corresponding NetworkTransform variants and utilize Rigidbody.MovePosition for movement updates. This change replaces the previous approach of directly overwriting position and rotation, resulting in significantly smoother interpolation and reduced jitter for networked physics objects. The components now correctly manage the target Rigidbody's kinematic state based on client authority and sync direction, ensuring that only the authoritative client moves the physics body while others sync via transform updates.

Assets/Mirror/Components/NetworkRigidbody · high confidence

NetworkTransform refactored into base class with Reliable, Unreliable, and Hybrid variants

The NetworkTransform component has been restructured to improve flexibility and performance. A new abstract NetworkTransformBase class now provides core snapshot interpolation, virtual hooks for Get/Set Position/Rotation/Scale, and exposed velocity properties. Three concrete implementations are available: NetworkTransformUnreliable (the previous default, using unreliable sync), NetworkTransformReliable (using reliable delta compression), and NetworkTransformHybrid (using unreliable delta compression with precision settings). This change allows users to choose the sync method that best fits their bandwidth and latency requirements, with the Hybrid variant offering significant bandwidth savings through position/rotation/scale quantization.

Assets/Mirror/Components/NetworkTransform · high confidence

New Chat Example with Network Authenticator and Bidirectional Address Sync

The Chat example has been updated to use the Network Authenticator system, replacing the previous authentication approach. The UI is now split into a separate LoginUI canvas and a networked ChatUI component, with the Player object simplified to handle name synchronization via SyncVars. A key behavioral change is the bidirectional sync of the network address: the LoginUI input field and the NetworkManager's networkAddress property stay in sync automatically, allowing users to modify the connection target dynamically. The ChatNetworkManager has been decoupled from the singleton pattern and now explicitly manages player name cleanup on disconnect.

Assets/Mirror/Examples/Chat/Scripts · high confidence

Pong example prefabs updated to use new NetworkTransform settings

The Ball and Racket prefabs in the Pong example have been updated to align with recent NetworkTransform changes. Specifically, rotation and scale synchronization are now disabled (syncRotation: 0, syncScale: 0) to prevent unnecessary network traffic and visual artifacts, while position synchronization remains active. The prefabs also reflect the migration from the deprecated clientAuthority flag to the new syncDirection property, ensuring correct server-to-client or client-to-server state replication.

Assets/Mirror/Examples/Pong/Prefabs · high confidence

Pong example updated for Unity 6 and server-side physics simulation

The Pong example scripts have been refactored to support Unity 6 by using \linearVelocity\ for newer Unity versions while maintaining backward compatibility with \velocity\ for older releases. Additionally, ball physics simulation is now restricted to the server side to ensure consistent behavior, and the \NetworkManagerPong\ component now explicitly handles ball spawning and despawning logic during player connection and disconnection events.

Assets/Mirror/Examples/Pong/Scripts · high confidence

Restored Basic Example with updated documentation

The Basic Example location has been restored with a new README.md that provides step-by-step instructions for running the example, including building the project, starting a server on port 7777, and connecting up to 16 clients. The example structure now includes dedicated folders for Prefabs, Scenes, and Scripts, ensuring the bare-bones Network Manager and UI prefab player setup is properly organized and accessible for users.

Assets/Mirror/Examples/Basic · high confidence

Restored TopDownShooter example scene for Unity 2019 compatibility

The TopDownShooter example scene has been repaired and updated to ensure compatibility with Unity 2019. This change includes restoring the main scene file, fixing the associated NavMesh for proper navigation, and adjusting colliders on slanted climbable walls to prevent physics issues. Additionally, lighting data and reflection probes have been updated to match the scene's visual requirements.

(repo-wide) · medium confidence

Room example now uses LAN instead of LAN/Internet networking

The Room example has been updated to remove LAN networking support from its HUD and documentation, simplifying the setup process. Users should now follow the updated README instructions to configure the MirrorRoomOffline, MirrorRoomGame, and MirrorRoomOnline scenes in Build Settings, and use the Host/Client buttons in the HUD to start the game without needing to manage LAN-specific connections.

Assets/Mirror/Examples/Room · medium confidence

Room example now uses a pooled Spawner and server-authoritative scoring

The Room example scripts have been refactored to introduce a static Spawner component that manages a pool of Reward objects, initializing and clearing them based on scene changes. This replaces previous spawning logic with a pooled approach that recycles objects to prevent erroneous collision triggers. Additionally, a new PlayerScore component handles server-authoritative scoring, where players earn points based on the color of collected rewards, and the NetworkRoomManagerExt has been updated to synchronize player indices and manage the pool lifecycle.

Assets/Mirror/Examples/Room/Scripts · high confidence

SimpleWeb Transport overhaul: new logging, buffer pooling, and reverse proxy support

The SimpleWeb transport in Mirror has been significantly updated to improve performance, debugging, and deployment flexibility. A new logging system (Log.cs) now supports configurable minimum log levels (Flood, Verbose, Info, Warn, Error) and includes timestamps in all output, with console color coding for easier reading. Memory allocation has been reduced through the introduction of a BufferPool (BufferPool.cs) that recycles ArrayBuffer objects, and the Connection class (Connection.cs) now exposes the remote address in its ToString output for better identification. Additionally, the transport can now correctly identify client IP addresses when running behind a reverse proxy by parsing the X-Forwarded-For header in the Connection's CalculateAddress method.

Assets/Mirror/Transports/SimpleWeb/SimpleWeb/Common · high confidence

SimpleWebTransport transport overhaul and Unity 2022.3 requirement

The SimpleWebTransport component has been restructured and moved to the Transports folder, now requiring Unity 2022.3 LTS or newer for WebGL support. This update introduces several behavioral changes: the transport now implements the PortTransport interface with platform-aware port handling (allowing custom client ports for reverse proxy scenarios), renames several inspector fields (e.g., handshakeMaxSize to maxHandshakeSize, serverMaxMsgsPerTick to serverMaxMessagesPerTick), and overhauls the logging system with a new minimumLogLevel setting. Additionally, SSL defaults have been tightened to TLS 1.2, and the transport now correctly exposes IsEncrypted and EncryptionCipher properties to reflect actual connection states, including support for reverse proxy configurations.

Assets/Mirror/Transports/SimpleWeb · high confidence

Snapshot Interpolation engine refactored with configurable settings and timeline clamping

The Snapshot Interpolation system in the Mirror Core has been restructured to improve stability and configurability. A new \SnapshotInterpolationSettings\ class exposes key tuning parameters—such as buffer limits, catchup/slowdown speeds, and dynamic adjustment tolerances—allowing users to fine-tune interpolation behavior. The core logic now includes a \TimelineClamp\ mechanism to prevent the local timeline from drifting too far behind during network interruptions, and a \bufferLimit\ on the \Insert\ method to prevent unbounded memory growth on low-fps clients. Additionally, the system now supports a \TimeSnapshot\ type that interpolates both scaled and unscaled server time together.

Assets/Mirror/Core/SnapshotInterpolation · high confidence

Tank theft mechanic now correctly positions the player upon exiting the vehicle

The TankTheftAuto example now includes a \TankAuthority\ script that manages taking and releasing control of tanks. When a player releases control (pressing 'X'), the original player character is repositioned 3 meters to the right and 1 meter up relative to the tank to account for the character controller's pivot point, preventing the player from spawning inside the vehicle geometry. The \TankTheftAutoNetMan\ script ensures that if a client disconnects while controlling a tank, the cached player object is properly destroyed and the tank's control state is reset.

Assets/Mirror/Examples/TankTheftAuto/Scripts · high confidence

Tanks demo prefabs updated with new NetworkTransform settings and projectile lifetime

The Tank and Projectile prefabs in the Tanks demo have been updated to align with the latest NetworkTransform configuration. The Tank prefab now uses the updated NetworkTransform component with a bufferResetMultiplier of 3 and rotation compression enabled, while the turret no longer syncs its position. The Projectile prefab has been reconfigured to destroy itself after 2 seconds instead of 5, and visual glitches caused by lights and spotlights have been removed from the projectile and tank models.

Assets/Mirror/Examples/Tanks/Prefabs · high confidence

Tanks example scripts rewritten with Mirror networking and health bars

The Tanks example scripts (Box, Projectile, Tank) have been replaced with new implementations using the Mirror networking library. The Tank now features a \[SyncVar\] health value that updates a TextMesh health bar, uses \[Command\] and \[ClientRpc\] for firing projectiles, and restricts input to the focused application window. Projectiles are now server-authoritative NetworkBehaviours that self-destruct after a timeout and handle collision logic on the server to reduce player health, while Box objects use NetworkTransformReliable for physics-based movement.

Assets/Mirror/Examples/Tanks/Scripts · high confidence

Telepathy transport updated to version 1.9 with improved thread safety and error handling

The Telepathy transport library has been updated to version 1.9, introducing a more robust architecture to prevent data races and improve connection stability. The client now creates a new connection state object for each connection attempt, protecting against race conditions where dying threads might interfere with new connections. Error handling for GetClientAddress has been moved from the Transport layer into Telepathy itself, and the server now implements OnServerConnectedWithAddress for better address tracking. Additionally, the transport includes safer network stream reading, configurable send/receive timeouts, and improved logging when used with the Multiplexer.

Assets/Mirror/Transports/Telepathy/Telepathy · high confidence

Updated Additive Scenes example for Unity 2019+ compatibility

The Additive Scenes example scenes (MirrorAdditiveScenesMain and MirrorAdditiveScenesSubScene) have been updated to ensure compatibility with Unity 2019 and later versions. This includes restoring lighting configurations, updating spawn points, and resetting scene settings to align with the 2019+ editor standards.

Assets/Mirror/Examples/AdditiveScenes/Scenes · medium confidence

Updated Basic Example prefabs for modern Unity versions

The Player and PlayerUI prefabs in the Basic Example have been replaced with updated versions compatible with Unity 2021.3.17. These changes include updated component GUIDs, corrected UI text elements (such as PlayerDataText), and adjustments to ensure the example runs correctly on recent Unity versions, addressing previous compatibility issues with older versions like 2018.4 and 2019.

Assets/Mirror/Examples/Basic/Prefabs · high confidence

Updated Room example materials

The Room example scene now uses new material assets for the Play Area, Player, and Prize objects. These materials have been updated to disable glossy reflections and specular highlights, and the Play Area material now includes a normal map texture to enhance surface detail.

Assets/Mirror/Examples/Room/Materials · high confidence

Updated Room example prefabs for current Mirror API

The Room example prefabs (GamePlayerReliable, GamePlayerUnreliable, Reward, and RoomPlayer) have been regenerated to align with the latest Mirror networking API. This update removes components and settings that were deprecated or removed in recent versions, such as LocalPlayerAuthority and NT Base SendIntervalMultiplier, and applies current defaults for sync modes and intervals. Users following the Room example will now see prefabs that work out-of-the-box with the current Mirror version without requiring manual cleanup of obsolete network components.

Assets/Mirror/Examples/Room/Prefabs · high confidence

Updated TopDownShooter example materials for Unity 2019 compatibility

The material assets in the TopDownShooter example have been updated to ensure compatibility with Unity 2019. This includes adding new material files (such as DeathSplatter, Enemy, Player, and Floor) and migrating existing materials to use the Unity 2019 serialization format (serializedVersion 8), which resolves compatibility issues with older Unity versions.

Assets/Mirror/Examples/TopDownShooter/Materials · high confidence

Updated Unity project settings for version 2021.3.45f1

The ProjectSettings directory has been updated to reflect the Unity 2021.3.45f1 editor version. This includes regenerated configuration files for audio, physics, graphics, input, memory, and quality settings, as well as updated PlayerSettings (including Android minimum SDK version 22 and application identifier com.Mirror.Mirror) and EditorSettings to align with the new Unity LTS release.

ProjectSettings · high confidence

Updated materials and lighting data for the TankTheftAuto example

The TankTheftAuto example scene now uses new material assets (MaterialPlayer and MaterialTrigger) and a lighting data asset to improve visual fidelity. The player material has been configured with disabled glossy reflections and specular highlights for a flatter appearance, while the trigger material is set to transparent with a cyan tint to clearly indicate interaction zones. These assets support the updated lighting setup in the example scene.

Assets/Mirror/Examples/TankTheftAuto/Materials · high confidence

Weaver fallback for Unity versions prior to 2020.3

For Unity versions older than 2020.3, the Mirror Weaver now uses a \CompilationFinishedHook\ to automatically weave assemblies after compilation, replacing the previous static logging approach with an instance-based logger. This includes a new \EnterPlayModeHook\ that validates the weave result before allowing the user to enter play mode, ensuring that weaving errors are resolved before runtime execution begins.

Assets/Mirror/Editor/Weaver/EntryPoint · high confidence

Weaver now uses Unity IL Post Processor for Unity 2020.3+

The Mirror Weaver has been updated to use Unity's IL Post Processor (ILPP) API for Unity 2020.3 and later, replacing the previous CompilationFinishedHook approach. This change introduces a new assembly resolver and reflection importer to correctly handle type resolution (including System.Private.CoreLib) and significantly improves weaving performance through caching. It also ensures compatibility with Unity's Bee build system and fixes issues where custom read/write functions for serialization failed across multiple assembly definitions.

Assets/Mirror/Editor/Weaver/EntryPointILPostProcessor · high confidence

Weaver refactored to support IL Post Processor and multithreading

The Mirror Weaver has been restructured to support Unity's IL Post Processor (ILPP) for Unity 2020+ and to enable multithreaded execution. Key changes include converting previously static classes (such as Readers, Writers, and WeaverTypes) into instance-based classes that accept dependencies via their constructors, removing global static state, and introducing a Logger interface to replace static logging methods. The entry point now supports both the legacy Editor-based weaving and the new ILPP workflow, ensuring compatibility with modern Unity versions and improving build performance.

Assets/Mirror/Editor/Weaver · high confidence

Fixes

Add AssignAuthority example with owner data synchronization

The AssignAuthority example now includes a complete demonstration of client authority management, featuring a UI script that allows players to take control of objects and a new OwnerBehaviour component that synchronizes a secret code to the client holding authority. This addition ensures that owner-specific data is correctly sent and displayed, resolving previous gaps in the example's functionality.

Assets/Mirror/Examples/AssignAuthority · high confidence

Added StinkySteak benchmark example with IMGUI-based UI

The StinkySteak benchmark example now uses IMGUI (OnGUI) for its user interface instead of Unity's Canvas and TextMeshPro. This change ensures compatibility with older Unity versions (such as 2019) and allows the benchmark to run in server builds where the UI is excluded, while still being visible in the Editor.

Assets/Mirror/Examples/BenchmarkStinkySteak · high confidence

Additive Levels example prefabs updated for Unity 2021 and Mirror compatibility

The prefabs in the Additive Levels example (Cube, Plane, PlayerHybrid, PlayerReliable, PlayerUnreliable, Portal, Sphere, StartPoint) have been regenerated to be compatible with Unity 2021.3.17 and the current Mirror networking API. This includes updated component configurations, such as the Portal using a TMP label and the Player prefabs utilizing the new PlayerControllerBase hierarchy, ensuring the example runs correctly without legacy errors.

Assets/Mirror/Examples/AdditiveLevels/Prefabs · high confidence

BilliardsPredicted: Ball reset and pocket logic

The BilliardsPredicted example now correctly handles ball resets and pocket interactions. A new Pockets.cs script on the table manages collisions for both white and red balls, resetting the white ball to its start position and destroying red balls upon pocketing, which resolves issues where predicted rigidbodies were moved out of triggers. The WhiteBallPredicted script also implements a custom mouse-dragging mechanic to apply force, replacing unreliable OnMouse callbacks.

Assets/Mirror/Examples/BilliardsPredicted/Ball · high confidence

BouncyCastle library relocated to Encryption Transport Plugins folder

The BouncyCastle cryptographic library (Mirror.BouncyCastle.Cryptography.dll) and its license file have been moved into the Assets/Mirror/Transports/Encryption/Plugins/BouncyCastle directory. This change ensures that the encryption dependency is co-located with the transport it supports, allowing users to remove the BouncyCastle files simply by deleting the encryption transport folder without needing to locate and remove the library separately.

Assets/Mirror/Transports/Encryption/Plugins/BouncyCastle · high confidence

Fixes to Batcher and Unbatcher serialization and safety

The Batcher now prefixes each message with a VarInt size header to prevent custom serialized NetworkMessages with size mismatches from corrupting subsequent messages in a batch, and enforces a timestamp safety check to ensure all messages in a batch share the same timestamp, preventing interpolation jitter. The Unbatcher now validates message size prefixes against remaining buffer data and guards against integer overflow in size parsing, throwing an exception and clearing batches if a malformed or maliciously oversized message is detected.

Assets/Mirror/Core/Batching · high confidence

KCP transport receives security, performance, and stability fixes

The KCP transport in Assets/Mirror/Transports/KCP/kcp2k/highlevel has been updated to address several critical issues. A security fix implements a cryptographically secure cookie mechanism to prevent UDP spoofing attacks. Performance is improved by using socket polling to avoid unnecessary allocations when handling non-blocking 'WouldBlock' conditions during send and receive operations. Stability is enhanced by safely parsing KCP headers to handle out-of-range values, ensuring the server correctly handles Windows UDP socket exceptions when clients disconnect, and clearing connections upon server stop to prevent state leakage between sessions.

Assets/Mirror/Transports/KCP/kcp2k/highlevel · high confidence

KCP transport updated to V1.41 with security and stability fixes

The KCP transport library (kcp2k) has been updated to version 1.41, bringing several critical improvements for users. Most notably, the KcpHeader is now parsed safely to prevent potential issues from attackers sending values outside the expected enum range, and a secure cookie mechanism is enforced to protect against UDP spoofing. Stability is further enhanced by handling ConnectionRefused SocketExceptions during disconnects, resolving Windows UDP socket exceptions when clients die, and ensuring disconnect messages are sent reliably even if the connection is closed immediately. Additionally, log messages now include a \[KCP\] prefix for easier filtering, and unnecessary log spam from older fixes has been removed.

Assets/Mirror/Transports/KCP/kcp2k · high confidence

Mirror editor icon excluded from builds

The MirrorIcon asset has been moved into the Editor folder, ensuring it is excluded from runtime builds. This prevents unnecessary bloat in deployed packages by keeping editor-only resources out of the final build.

Assets/Mirror/Editor/Icon · high confidence

MultiplexTransport connection ID handling fixed to prevent overflow

The MultiplexTransport now uses a bidirectional dictionary lookup to map connection IDs instead of a mathematical formula. This change prevents integer overflow errors when underlying transports (such as KCP) generate large connection IDs near the integer maximum, ensuring stable multiplexing across multiple transports.

Assets/Mirror/Transports/Multiplex · high confidence

New SimpleWeb WebGL plugin with Unity 2022+ compatibility and warning suppression

Adds the SimpleWeb WebGL client plugin (SimpleWeb.jslib) and a preloading script (SuppressInvalidEnumWarning.jspre) to the Mirror transport. The plugin implements WebSocket management using a Map for storage and employs the makeDynCall macro to ensure correct function calls in Unity 2022 and newer versions. The accompanying preloading script suppresses invalid enum console warnings in Chrome caused by Unity's internal WebGL probes.

Assets/Mirror/Transports/SimpleWeb/SimpleWeb/Client/Webgl/plugin · high confidence

Restored Additive Levels example scenes for Unity 2019+ compatibility

The Additive Levels example scenes (Offline, Online, and SubLevels) have been updated to work with Unity 2019 and later versions. This fix addresses compatibility issues by resetting scene settings, updating lighting configurations, and correcting spawn point placements, ensuring the example runs correctly in modern Unity editor versions.

Assets/Mirror/Examples/AdditiveLevels/Scenes · high confidence

Restored Multiple Additive Scenes example for Unity 2019 compatibility

The Multiple Additive Scenes example scenes (MirrorMultipleAdditiveScenesGame and MirrorMultipleAdditiveScenesMain) have been reset and updated to ensure compatibility with Unity 2019. This change includes restoring the scene files, updating spawn points, and correcting lighting and prefab references so the example runs correctly in supported Unity versions.

Assets/Mirror/Examples/MultipleAdditiveScenes/Scenes · high confidence

Restored TankTheftAuto example scene for Unity 2019 compatibility

The TankTheftAuto example scene and its associated assets (materials, prefabs, scripts) have been updated to ensure compatibility with Unity 2019. This fix restores the example to a working state by updating spawn points, removing obsolete Canvas UI elements, and correcting tank prefab configurations, allowing users to run the demo without errors in supported Unity versions.

Assets/Mirror/Examples/Discovery/Scenes, Assets/Mirror/Examples/RigidbodyPhysics/Scenes, Assets/Mirror/Examples/TankTheftAuto · high confidence

Restored TopDownShooter example prefabs for Unity 2019 compatibility

The prefabs in the TopDownShooter example (DeathSplatter, EnemyPrefab, and PlayerPrefab) have been reset and updated to ensure compatibility with Unity 2019. This includes correcting collider configurations, adding missing namespaces, and removing the deprecated NT Base SendIntervalMultiplier setting, allowing the example to function correctly in older Unity versions.

Assets/Mirror/Examples/TopDownShooter/Prefabs · high confidence

Standalone WebSocket client implementation with improved handshake diagnostics

The Standalone client transport now includes a dedicated ClientHandshake component that validates the server's WebSocket accept key and provides specific error logging when the response is unexpected or incorrect, including a hint to check Windows Server Roles for protocol installation issues. This change also introduces a ClientSslHelper to manage SSL/TLS streams for wss/https connections and updates the WebSocketClientStandAlone to use this new handshake logic, ensuring clearer diagnostics during connection failures.

Assets/Mirror/Transports/SimpleWeb/SimpleWeb/Client/StandAlone · high confidence

SyncDirection example now distinguishes local player color

The SyncDirection demo scene and its Player prefab have been updated to visually identify the local player: the Player.cs script now applies a specific localColor to the player's TextMesh on start, and the prefab exposes this color property. This change, combined with the restored Unity 2019 compatibility of the example scenes and prefabs, ensures the demo correctly highlights which client is local while maintaining backward compatibility.

Assets/Mirror/Examples/SyncDirection · high confidence

Updated Network Transform presets for reliable and unreliable sync

Added and updated preset configurations for the Network Transform component, covering both reliable and unreliable transport modes. The new presets include ClientAuth and ServerAuth variants (Balanced, Casual, Responsive) with tuned settings for sync intervals, interpolation, compression, and sensitivity to better match different gameplay requirements.

Assets/Mirror/Presets · high confidence

Updated PlayerTest example with new prefabs and scene structure

The PlayerTest example has been reorganized to include new CharacterController and Rigidbody player prefabs (Hybrid, Reliable, and Unreliable variants) and a dedicated PlayerTestScene with terrain and lighting data. A custom NetworkManager script (PlayerTestNetMan) is now provided to manage the example's networking lifecycle, ensuring the demo runs correctly with current Mirror APIs.

Assets/Mirror/Examples/PlayerTest · high confidence

Updated Room example scenes for Unity 2019+ compatibility

The Room example scenes (MirrorRoomGame, MirrorRoomOffline, and MirrorRoomOnline) have been updated to ensure compatibility with Unity 2019 and later versions. This includes refreshing scene metadata, updating lighting data assets, and adjusting scene settings such as render paths and camera configurations to align with modern Unity standards.

Assets/Mirror/Examples/Room/Scenes · high confidence

Updated Tanks example scene and assets

The Tanks example scene has been updated to include a new scene file (MirrorTanks.unity) with associated metadata and a NavMesh asset. This change ensures the example scene is properly configured with its necessary resources, including camera settings and navigation data, for users to run the demo.

Assets/Mirror/Examples/Tanks/Scenes · medium confidence

Updated example prefabs for Multiple Additive Scenes

The prefabs in the Multiple Additive Scenes example (Icosphere, PlayerReliable, PlayerUnreliable, and Reward) have been regenerated and updated to be compatible with Unity 2021.3.17. This ensures the example assets function correctly in modern Unity versions and aligns with recent code review updates, such as the removal of deprecated attributes and the application of correct layer settings.

Assets/Mirror/Examples/MultipleAdditiveScenes/Prefabs · high confidence

Test coverage

Added EditModeTest for NetworkStartPosition lifecycle; Added Editor test assembly definition and folder structure; Added EditorBehaviours test assembly for Unity 2022+ compatibility; Added comprehensive editor tests for NetworkIdentity serialization and state management; Added comprehensive editor tests for NetworkReader/Writer serialization; Added comprehensive editor tests for NetworkServer; Added comprehensive test suite for NetworkClient; Added comprehensive unit tests for RPCs, Commands, and their override behaviors; Added editor tests for NetworkBehaviour serialization, dirty bits, and child components; Added editor tests for NetworkManager lifecycle and disconnect handling; Added editor tests for SyncVar hooks and attribute behavior; Added editor tests for threading infrastructure; Added runtime tests for NetworkClient, NetworkServer, and NetworkIdentity; Added test assets for object spawning scenarios; Added test prefabs for ClientScene prefab validation; Added unit tests for Batcher and Unbatcher components; Added unit tests for Interest Management components; Added unit tests for Lag Compensation and History Bounds logic; Added unit tests for Mirror Tools utilities; Added unit tests for Mirror attribute behaviors; Added unit tests for NetworkLoop player loop integration; Added unit tests for NetworkMessage serialization and inheritance; Added unit tests for NetworkTransformUnreliable snapshot logic; Added unit tests for Prediction.Sample and CorrectHistory; Added unit tests for SnapshotInterpolation logic; Added unit tests for local and client network connections; Added unit tests for transport layer components; Expanded Weaver test coverage for RPCs, Commands, and attributes; Expanded test coverage for SyncCollections actions and deferral; New shared test infrastructure for Mirror networking; Test directory structure metadata added.

Dependencies

Add Stinkysteak benchmark dependency and update Edgegap hosting plugin

This change introduces the com.stinkysteak.simulationtimer package (version 0.1.0) as a dependency for the BenchmarkStinkySteak example, providing an efficient frame timer for simulation scenarios. Additionally, the Edgegap Unity Servers Plugin in the Hosting directory has been updated to version 3.0.9, which includes support for moving the plugin folder more effectively and reduces internal Mirror-specific changes.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 41 → 54 (+13.0)
  • Rubric changed (rubric-2026.09.8 → rubric-2026.09.16) — scores are not directly comparable.

Lenses

  • Code Health 30 → 52 (+21.9)
  • Maturity 66 → 61 (-5.3)
  • Readiness 52 → 53 (+1.6)
  • Security 48 → 59 (+11.4)

Resolved (8)

  • Documentation: no installation or build instructions (Assets/Mirror/Readme.txt)
  • Further orphaned files (smaller)
  • High: security finding (details withheld)
  • Off-boarding risk: anonymized user #1
  • Orphaned knowledge (Assets/Mirror/Transports/Encryption/EncryptedConnection.cs)
  • Typo in namespace/type name: 'Virutal' is used instead of the standard spelling 'Virtual'. This appears in both the Client and Server attribute test namespaces/types.
  • redundant comment (Assets/Mirror/Tests/Editor/Weaver/WeaverClientRpcTests~/OverrideAbstractClientRpc.cs)
  • redundant comment (Assets/Mirror/Tests/Editor/Weaver/WeaverClientServerAttributeTests~/ClientAttributeOnOverrideMethod.cs)

New (105)

  • AndroidManifestHelper.AddOrRemoveTag (cognitive 22) (Assets/Mirror/Editor/AndroidManifestHelper.cs)
  • BaseUIGraph.LateUpdate (cognitive 24) (Assets/Mirror/Components/Profiling/BaseUIGraph.cs)
  • BaseUIGraph.Update (cognitive 19) (Assets/Mirror/Components/Profiling/BaseUIGraph.cs)
  • BaseUIGraph.Update (cyclomatic 18) (Assets/Mirror/Components/Profiling/BaseUIGraph.cs)
  • CanvasController.OnServerDisconnect (cognitive 16) (Assets/Mirror/Examples/MultipleMatches/Scripts/CanvasController.cs)
  • ClassTooLong: Kcp (Assets/Mirror/Transports/KCP/kcp2k/kcp/Kcp.cs)
  • ClassTooLong: NetworkBehaviourProcessor (Assets/Mirror/Editor/Weaver/Processors/NetworkBehaviourProcessor.cs)
  • Concentrated knowledge decay
  • DistanceInterestManagement.LateUpdate (cognitive 26) (Assets/Mirror/Components/InterestManagement/Distance/DistanceInterestManagement.cs)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (Assets/Mirror/Examples/BenchmarkPrediction/Readme.md)
  • EdgegapKcpServer.RawReceiveFrom (cognitive 16) (Assets/Mirror/Transports/Edgegap/EdgegapRelay/EdgegapKcpServer.cs)
  • EdgegapLobbyKcpTransport.WaitForLobbyRelay (cognitive 38) (Assets/Mirror/Transports/Edgegap/EdgegapLobby/EdgegapLobbyKcpTransport.cs)
  • EdgegapLobbyKcpTransport.WaitForLobbyRelay (cyclomatic 16) (Assets/Mirror/Transports/Edgegap/EdgegapLobby/EdgegapLobbyKcpTransport.cs)
  • EncryptedConnection.OnReceiveRaw (cognitive 26) (Assets/Mirror/Transports/Encryption/EncryptedConnection.cs)
  • EncryptedConnection.OnReceiveRaw (cyclomatic 19) (Assets/Mirror/Transports/Encryption/EncryptedConnection.cs)
  • FileTooLong: Core/NetworkClient.cs (Assets/Mirror/Core/NetworkClient.cs)
  • FileTooLong: Core/NetworkManager.cs (Assets/Mirror/Core/NetworkManager.cs)
  • FileTooLong: Core/NetworkServer.cs (Assets/Mirror/Core/NetworkServer.cs)
  • FlyerControllerBase.HandleMove (cognitive 16) (Assets/Mirror/Examples/_Common/Controllers/FlyerController/FlyerControllerBase.cs)
  • …and 85 more

Changes since last survey

  • 8 commits — 7 feature/other, 1 fixes

By area

  • .github/workflows — 4 commits
  • Assets/Mirror — 3 commits
  • (repo) — 1 commit

Notable commits

  • fix: fix: Added [Serializable] / [NonSerialized] to clear Unity warnings
  • change: InterestManagement: Syntax
  • change: Merge branch 'master' of https://github.com/MirrorNetworking/Mirror
  • change: SinRandomMoveWrapper: Readonly NetworkUpdate
  • change: chore(CI) RunUnityTests no longer uses UNITY_LICENSE
  • change: chore(CI): RunUnityTests - updated unityVersion
  • change: chore(CI): RunUnityTests - updated unityVersion
  • change: chore(CI): pin conventionalcommits preset to v9

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

MirrorNetworking/Mirror was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit c4f3739966e151f405be1762d33502794fd034ff — the exact code this score is about.
  • Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.