> For the complete documentation index, see [llms.txt](https://dotsnet.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dotsnet.gitbook.io/docs/user-manual/untitled.md).

# Migrating from Mirror

https\://github.com/vis2k/Mirror/

The **bad news** is that you will need to create your project from scratch, and can’t reuse anything from the MonoBehaviour world. **DOTSNET** intentionally uses pure ECS, not hybrid.

The **good news** is that **DOTSNET** was optimized for ease of use. It’s very clean, simple & elegant to work with. It’s extremely stable thanks to over 90% test coverage.

In fact, it makes networking **fun** again!

Here is a brief overview on how the old concepts translate to **DOTSNET**. Please take your time to learn each one, and don’t expect to convert your full Mirror project to **DOTSNET** by friday.

| Mirror               | DOTSNET                                                                                                                                                                                     |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Server-Only mode     | Still exists, but in a completely separate Server World.                                                                                                                                    |
| Client-Only mode     | Still exists, but in a completely separate Client World.                                                                                                                                    |
| Host Mode            | <p>Not needed anymore. Server & Client worlds are fully separated in memory. Simply start a server and start a client.</p><p>Yes, we have a true, fully memory separated host mode now.</p> |
| NetworkServer        | NetworkServerSystem + Authoring                                                                                                                                                             |
| NetworkClient        | NetworkClientSystem + Authoring                                                                                                                                                             |
| NetworkIdentity      | NetworkIdentity                                                                                                                                                                             |
| NetworkBehaviour     | Gone.                                                                                                                                                                                       |
| isServer             | Not needed anymore. You are the server if your system is running in the server world.                                                                                                       |
| isClient             | Not needed anymore. You are the client if your system is running in the client world.                                                                                                       |
| isLocalPlayer        | NetworkEntity.owned                                                                                                                                                                         |
| hasAuthority         | NetworkEntity.owned                                                                                                                                                                         |
| OnStartServer        | OnStartRunning if \[ServerWorld] and \[UpdateInGroup(ServerActiveSimulationSystemGroup)]                                                                                                    |
| OnStopServer         | OnStopRunning if \[ServerWorld] and \[UpdateInGroup(ServerActiveSimulationSystemGroup)]                                                                                                     |
| OnStartClient        | OnStartRunning if \[ClientWorld] and \[UpdateInGroup(ClientConnectedSimulationSystemGroup)]                                                                                                 |
| OnStopClient         | OnStopRunning if \[ClientWorld] and \[UpdateInGroup(ClientConnectedSimulationSystemGroup)]                                                                                                  |
| NetworkWriter        | BitWriter                                                                                                                                                                                   |
| NetworkReader        | BitReader                                                                                                                                                                                   |
| Connection.ready     | ConnectionState.joinedWorld (on server)                                                                                                                                                     |
| NetworkServer.active | NetworkServerSystem.state == ACTIVE                                                                                                                                                         |
| NetworkClient.active | NetworkClientSystem.state != DISCONNECTED                                                                                                                                                   |
