{"version":1,"pages":[{"id":"iKoNVAxqzp05Yvfe0aDq","title":"What Is FishNet?","pathname":"/docs","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Overview"}]},{"id":"Bn6tWfAubYUVmaOk7dYQ","title":"Features","pathname":"/docs/overview/readme/features","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Overview"},{"label":"What Is FishNet?"}]},{"id":"5mhAhjwkNDhhSuyMlRvE","title":"Unity Compatibility","pathname":"/docs/overview/readme/features/unity-compatibility","siteSpaceId":"sitesp_NRQKl","description":"Fish-Networking's compatibility with recent Unity versions","breadcrumbs":[{"label":"Overview"},{"label":"What Is FishNet?"},{"label":"Features"}]},{"id":"bbeexvALYJP0tXRt0nSA","title":"Performance","pathname":"/docs/overview/readme/features/performance","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Overview"},{"label":"What Is FishNet?"},{"label":"Features"}]},{"id":"N88YaxXxFprWjja3y6Z6","title":"Benchmark Setup","pathname":"/docs/overview/readme/features/performance/benchmark-setup","siteSpaceId":"sitesp_NRQKl","description":"Everything looks good on paper but dedicated benchmarks can show you what to really expect.","breadcrumbs":[{"label":"Overview"},{"label":"What Is FishNet?"},{"label":"Features"},{"label":"Performance"}]},{"id":"B9jWx1n4oaEQSLSDBxIl","title":"Fish-Networking vs Mirror","pathname":"/docs/overview/readme/features/performance/fish-networking-vs-mirror","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Overview"},{"label":"What Is FishNet?"},{"label":"Features"},{"label":"Performance"}]},{"id":"8rP6RjKU8unzyDoCmQkT","title":"Pro, Projects, and Support","pathname":"/docs/overview/readme/pro-projects-and-support","siteSpaceId":"sitesp_NRQKl","description":"Learn how to access a variety of enhancements for your Fish-Networking experience. We aim to provide reasonable pricing ranging from smaller indie developers to large studios.","breadcrumbs":[{"label":"Overview"},{"label":"What Is FishNet?"}]},{"id":"dCpNNFqvaFfdF56DijVF","title":"Business Support","pathname":"/docs/overview/readme/business-support","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Overview"},{"label":"What Is FishNet?"}]},{"id":"dcwC91rwqT25nIHzelZW","title":"Development","pathname":"/docs/overview/readme/development","siteSpaceId":"sitesp_NRQKl","description":"Fish-Networking is under constant improvement, receiving regular updates containing new features and bug fixes.","breadcrumbs":[{"label":"Overview"},{"label":"What Is FishNet?"}]},{"id":"uK7vtkG7CqOa3FnOkAyz","title":"Branding","pathname":"/docs/overview/readme/branding","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Overview"},{"label":"What Is FishNet?"}]},{"id":"Xn9QUkRrDPnQEgm7W6VX","title":"Legal Restrictions","pathname":"/docs/overview/readme/legal-restrictions","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Overview"},{"label":"What Is FishNet?"}]},{"id":"NdVOK2MfrbFvPsrDORFp","title":"Showcase","pathname":"/docs/overview/showcase","siteSpaceId":"sitesp_NRQKl","description":"Because seeing is believing.","breadcrumbs":[{"label":"Overview"}]},{"id":"HagOvk9aWzYsva22Rkae","title":"Upcoming Releases","pathname":"/docs/overview/showcase/upcoming-releases","siteSpaceId":"sitesp_NRQKl","description":"Here are some upcoming titles we expect in the near future.","breadcrumbs":[{"label":"Overview"},{"label":"Showcase"}]},{"id":"3EkCyca35Az0qvbyNZby","title":"Asset Integrations","pathname":"/docs/overview/asset-integrations","siteSpaceId":"sitesp_NRQKl","description":"You'll find here a collection of third-party integrations for Fish-Networking in other assets, as well as assets that work well with FishNet.","breadcrumbs":[{"label":"Overview"}]},{"id":"0M1kSufvaJoG6sFhPwHH","title":"Fish-Network-Discovery","pathname":"/docs/overview/asset-integrations/fish-network-discovery","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Overview"},{"label":"Asset Integrations"}]},{"id":"Ug5dRWj7l45AT7LWN1n3","title":"Community Resources","pathname":"/docs/overview/community-resources","siteSpaceId":"sitesp_NRQKl","description":"You'll find here a collection of third-party tutorials and resources.","breadcrumbs":[{"label":"Overview"}]},{"id":"Y6QWim2o72cDXMgUuWgH","title":"Getting Started","pathname":"/docs/tutorials/getting-started","siteSpaceId":"sitesp_NRQKl","description":"Whether you're new to network programming or transitioning to Fish-Networking for your latest project, this guide will provide the essential foundation you need to get started smoothly.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"8QfrN4C6bnapJRM2IeIV","title":"Installing Fish-Networking","pathname":"/docs/tutorials/getting-started/installing-fish-networking","siteSpaceId":"sitesp_NRQKl","description":"Step-by-step instructions for installing Fish-Networking into your Unity project.","breadcrumbs":[{"label":"Tutorials"},{"label":"Getting Started"}]},{"id":"wkqefH6xbL4bCuLWDA5q","title":"Getting Connected","pathname":"/docs/tutorials/getting-started/getting-connected","siteSpaceId":"sitesp_NRQKl","description":"The first step to networking is connecting over the network. Learn about that process here!","breadcrumbs":[{"label":"Tutorials"},{"label":"Getting Started"}]},{"id":"0PDWC069NGCEeH9C9aiG","title":"Preparing Your Player","pathname":"/docs/tutorials/getting-started/preparing-your-player","siteSpaceId":"sitesp_NRQKl","description":"Spawn an object over the network to represent each client's player.","breadcrumbs":[{"label":"Tutorials"},{"label":"Getting Started"}]},{"id":"9tB1vdhKcUtPey4EJAGh","title":"Moving Your Player Around","pathname":"/docs/tutorials/getting-started/moving-your-player-around","siteSpaceId":"sitesp_NRQKl","description":"Get your player objects moving around and synchronized!","breadcrumbs":[{"label":"Tutorials"},{"label":"Getting Started"}]},{"id":"H6U4NLZNdWRz996Bt8Bv","title":"Spawning and Despawning Items","pathname":"/docs/tutorials/getting-started/spawning-and-despawning-items","siteSpaceId":"sitesp_NRQKl","description":"Learn about spawning and despawning by having your players throw cubes around!","breadcrumbs":[{"label":"Tutorials"},{"label":"Getting Started"}]},{"id":"Ae2AYNzL4vu2UW1Jhy8I","title":"Using SyncVars to Sync Colors","pathname":"/docs/tutorials/getting-started/using-syncvars-to-sync-colors","siteSpaceId":"sitesp_NRQKl","description":"Synchronizing color with synchronized variables!","breadcrumbs":[{"label":"Tutorials"},{"label":"Getting Started"}]},{"id":"BjN0DPx1y7kWwfVaRxGc","title":"Setting Up a Camera","pathname":"/docs/tutorials/getting-started/setting-up-a-camera","siteSpaceId":"sitesp_NRQKl","description":"How to setup a player camera for your multiplayer setup.","breadcrumbs":[{"label":"Tutorials"},{"label":"Getting Started"}]},{"id":"BgJXuXbfubpDqUqdXCzZ","title":"Instantiating a Local Camera","pathname":"/docs/tutorials/getting-started/setting-up-a-camera/instantiating-a-local-camera","siteSpaceId":"sitesp_NRQKl","description":"Using a Camera Prefab to instantiate your local player's camera.","breadcrumbs":[{"label":"Tutorials"},{"label":"Getting Started"},{"label":"Setting Up a Camera"}]},{"id":"0emSr8HvCRQtNh9rguAQ","title":"Using the Scene Camera","pathname":"/docs/tutorials/getting-started/setting-up-a-camera/using-the-scene-camera","siteSpaceId":"sitesp_NRQKl","description":"Using the camera in the scene for your local player.","breadcrumbs":[{"label":"Tutorials"},{"label":"Getting Started"},{"label":"Setting Up a Camera"}]},{"id":"9Ipgs7Hwzl3RpSMk0a6S","title":"Basic Setup with Cinemachine","pathname":"/docs/tutorials/getting-started/setting-up-a-camera/basic-setup-with-cinemachine","siteSpaceId":"sitesp_NRQKl","description":"Managing a Cinemachine Camera in multiplayer.","breadcrumbs":[{"label":"Tutorials"},{"label":"Getting Started"},{"label":"Setting Up a Camera"}]},{"id":"3I5qTg7gloBGYirMna09","title":"Connecting to Remote Devices","pathname":"/docs/tutorials/getting-started/connecting-to-remote-devices","siteSpaceId":"sitesp_NRQKl","description":"Learn how to connect clients to a remote FishNet server, allowing players on different machines to join your game.","breadcrumbs":[{"label":"Tutorials"},{"label":"Getting Started"}]},{"id":"Og8L2THjwTpYeuvxZhbD","title":"Beyond the Basics","pathname":"/docs/tutorials/getting-started/commonly-used-guides","siteSpaceId":"sitesp_NRQKl","description":"Where to go from here?","breadcrumbs":[{"label":"Tutorials"},{"label":"Getting Started"}]},{"id":"G0H8R2NCc5dx7c0mq92Q","title":"Common Tasks","pathname":"/docs/tutorials/simple","siteSpaceId":"sitesp_NRQKl","description":"Simple step-by-step tutorials on how to perform common tasks in FishNet.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"sIneaQnGY8khFnYNKiGC","title":"Starting FishNet's Connections","pathname":"/docs/tutorials/simple/starting-fishnets-connections","siteSpaceId":"sitesp_NRQKl","description":"A guide on starting the FishNet server and client connections yourself.","breadcrumbs":[{"label":"Tutorials"},{"label":"Common Tasks"}]},{"id":"twtf1pBIyZaosWuoymsB","title":"Making a Custom Player Spawner","pathname":"/docs/tutorials/simple/making-a-custom-player-spawner","siteSpaceId":"sitesp_NRQKl","description":"Step-by-step instructions for how to write a custom player spawner for various scenarios.","breadcrumbs":[{"label":"Tutorials"},{"label":"Common Tasks"}]},{"id":"HlbqPiYhIBiEDweIXSet","title":"Spawning Players Manually","pathname":"/docs/tutorials/simple/making-a-custom-player-spawner/manually","siteSpaceId":"sitesp_NRQKl","description":"Tutorial for creating a script to manually spawn your players when you call a method.","breadcrumbs":[{"label":"Tutorials"},{"label":"Common Tasks"},{"label":"Making a Custom Player Spawner"}]},{"id":"wWALhwsyjdEx0eoG478D","title":"Spawning Selected Player","pathname":"/docs/tutorials/simple/making-a-custom-player-spawner/spawning-selected-player","siteSpaceId":"sitesp_NRQKl","description":"Tutorial for allowing your players to choose a character object before spawning it.","breadcrumbs":[{"label":"Tutorials"},{"label":"Common Tasks"},{"label":"Making a Custom Player Spawner"}]},{"id":"6msm6c0tNuQVqdnCrx24","title":"Spawning Players When Set Number of Players Joined","pathname":"/docs/tutorials/simple/making-a-custom-player-spawner/set-player-number","siteSpaceId":"sitesp_NRQKl","description":"Tutorial for spawning players as soon as a set number of clients have joined your game.","breadcrumbs":[{"label":"Tutorials"},{"label":"Common Tasks"},{"label":"Making a Custom Player Spawner"}]},{"id":"3ArtNgdhVsD2MdcEKqMY","title":"Spawning Players on Scene Load","pathname":"/docs/tutorials/simple/making-a-custom-player-spawner/on-scene-load","siteSpaceId":"sitesp_NRQKl","description":"Tutorial for spawning players as soon as they are loaded by FishNet into a specific scene.","breadcrumbs":[{"label":"Tutorials"},{"label":"Common Tasks"},{"label":"Making a Custom Player Spawner"}]},{"id":"tOCRVFDoSBO7TXF2JnFB","title":"Making a Loading Screen","pathname":"/docs/tutorials/simple/making-a-loading-screen","siteSpaceId":"sitesp_NRQKl","description":"A tutorial for creating a loading screen when using FishNet's Scene Management instead of Unity's default one.","breadcrumbs":[{"label":"Tutorials"},{"label":"Common Tasks"}]},{"id":"TIcpVxYmMUM0777uAPUr","title":"Testing with Multiple Editors","pathname":"/docs/tutorials/simple/testing-with-multiple-editors","siteSpaceId":"sitesp_NRQKl","description":"A tutorial for running multiple Unity Editor windows for testing multiplayer.","breadcrumbs":[{"label":"Tutorials"},{"label":"Common Tasks"}]},{"id":"nEVENrctE5RpZZISRszP","title":"Simulating Bad Network Connections","pathname":"/docs/tutorials/simple/simulating-bad-network-connections","siteSpaceId":"sitesp_NRQKl","description":"This page covers how to simulate poor network conditions when testing with FishNet.","breadcrumbs":[{"label":"Tutorials"},{"label":"Common Tasks"}]},{"id":"h52IjVkWuuZRACcC0enA","title":"Building a Dedicated Server","pathname":"/docs/tutorials/simple/building-a-dedicated-server","siteSpaceId":"sitesp_NRQKl","description":"Instructions for how to build a dedicated FishNet server.","breadcrumbs":[{"label":"Tutorials"},{"label":"Common Tasks"}]},{"id":"ZTSeNAH9IlKypM5sgRoi","title":"High-Level Overview","pathname":"/docs/guides/high-level-overview","siteSpaceId":"sitesp_NRQKl","description":"A general overview of networking using FishNet.","breadcrumbs":[{"label":"Guides"}]},{"id":"yUN10hMpSfnwtvHyICR1","title":"Fundamentals","pathname":"/docs/guides/high-level-overview/fundamentals","siteSpaceId":"sitesp_NRQKl","description":"To understand FishNet, it's helpful to grasp a few fundamental concepts","breadcrumbs":[{"label":"Guides"},{"label":"High-Level Overview"}]},{"id":"OE8I9MAXTxpeV9vYQqMO","title":"Networking Models","pathname":"/docs/guides/high-level-overview/networking-models","siteSpaceId":"sitesp_NRQKl","description":"This page discusses the varius networking models and architectures used in games and what Fish-Networking uses.","breadcrumbs":[{"label":"Guides"},{"label":"High-Level Overview"}]},{"id":"TBjoya5PQfwX10qHkCYf","title":"Terminology","pathname":"/docs/guides/high-level-overview/terminology","siteSpaceId":"sitesp_NRQKl","description":"The following pages give some commonly used terminology for Fish-Networking as well as general networking terms you are likely to encounter.","breadcrumbs":[{"label":"Guides"},{"label":"High-Level Overview"}]},{"id":"bOaHArk9ttwOzvVPEIx9","title":"Server, Client, Host","pathname":"/docs/guides/high-level-overview/terminology/server-client-host","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"High-Level Overview"},{"label":"Terminology"}]},{"id":"AJzJWngJSAvhaxOa6YEx","title":"Communicating","pathname":"/docs/guides/high-level-overview/terminology/communicating","siteSpaceId":"sitesp_NRQKl","description":"There are a variety of ways to send communications between server and clients.","breadcrumbs":[{"label":"Guides"},{"label":"High-Level Overview"},{"label":"Terminology"}]},{"id":"phb8m7iPbVw0neXBM5mC","title":"Miscellaneous","pathname":"/docs/guides/high-level-overview/terminology/miscellaneous","siteSpaceId":"sitesp_NRQKl","description":"There are a several commonly terms which you may encounter throughout your development experience with FishNet.","breadcrumbs":[{"label":"Guides"},{"label":"High-Level Overview"},{"label":"Terminology"}]},{"id":"L4TPvLKVnxL29i2djCtn","title":"Transports","pathname":"/docs/guides/high-level-overview/transports","siteSpaceId":"sitesp_NRQKl","description":"Transports control how data is sent, received, and handled over the network.","breadcrumbs":[{"label":"Guides"},{"label":"High-Level Overview"}]},{"id":"T3pUkhx4toaQfxZtOKBA","title":"Features","pathname":"/docs/guides/features","siteSpaceId":"sitesp_NRQKl","description":"The following are guides on the many features Fish-Networking provides.","breadcrumbs":[{"label":"Guides"}]},{"id":"Cv7tSPyI8wSnckPDcTYF","title":"Server and Client Identification","pathname":"/docs/guides/features/server-and-client-identification","siteSpaceId":"sitesp_NRQKl","description":"Find out how to know if your code is executing on the server or client, as well as how to identify clients from each other.","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"rrpIG9tNQSyKPYLIPkPu","title":"Executing on Server or Client","pathname":"/docs/guides/features/server-and-client-identification/executing-on-server-or-client","siteSpaceId":"sitesp_NRQKl","description":"How you can run certain code on only the server, or only a client, or only on a host.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Server and Client Identification"}]},{"id":"21PWspbbhl6rBbqDHttv","title":"NetworkConnections","pathname":"/docs/guides/features/server-and-client-identification/networkconnections","siteSpaceId":"sitesp_NRQKl","description":"A look at how Fish-Networking distinguishes clients from one another.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Server and Client Identification"}]},{"id":"xMJoeWxvLQrz89niriSA","title":"Networked GameObjects and Scripts","pathname":"/docs/guides/features/networked-gameobjects-and-scripts","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"xqaTWye6aQq7IEDiXunS","title":"NetworkObjects","pathname":"/docs/guides/features/networked-gameobjects-and-scripts/networkobjects","siteSpaceId":"sitesp_NRQKl","description":"Details on the different types of NetworkObjects that will be referenced throughout the guides.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Networked GameObjects and Scripts"}]},{"id":"Cd38LniTSBAOyixLiC4l","title":"Nested NetworkObjects","pathname":"/docs/guides/features/networked-gameobjects-and-scripts/networkobjects/nested-networkobjects","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Networked GameObjects and Scripts"},{"label":"NetworkObjects"}]},{"id":"ftAnTUrpqYOrKMe1kikV","title":"NetworkBehaviour","pathname":"/docs/guides/features/networked-gameobjects-and-scripts/network-behaviour-guides","siteSpaceId":"sitesp_NRQKl","description":"NetworkBehaviours are a fundamental part of networking which allow you to easily synchronize data and access network related information.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Networked GameObjects and Scripts"}]},{"id":"rQePWPly2gErU8TbifaR","title":"Spawning and Despawning","pathname":"/docs/guides/features/networked-gameobjects-and-scripts/spawning","siteSpaceId":"sitesp_NRQKl","description":"Information about how to spawn and despawn objects on the network.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Networked GameObjects and Scripts"}]},{"id":"MPlnaUlVtCVpU7GDc2zf","title":"Spawn Payloads","pathname":"/docs/guides/features/networked-gameobjects-and-scripts/spawning/spawn-payloads","siteSpaceId":"sitesp_NRQKl","description":"Spawn Payloads allow the sending additional information along with an object's Spawn call.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Networked GameObjects and Scripts"},{"label":"Spawning and Despawning"}]},{"id":"qmGwZHStrPkEdBsYgD8F","title":"Predicted Spawning","pathname":"/docs/guides/features/networked-gameobjects-and-scripts/spawning/predicted-spawning","siteSpaceId":"sitesp_NRQKl","description":"Predicted spawning an object allows a client to spawn an object locally and begin using networked features immediately, including RPCs.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Networked GameObjects and Scripts"},{"label":"Spawning and Despawning"}]},{"id":"lvhcI5XtXdywjDqL7PFl","title":"Object Pooling","pathname":"/docs/guides/features/networked-gameobjects-and-scripts/spawning/object-pooling","siteSpaceId":"sitesp_NRQKl","description":"Information about how to use object pooling for networked objects.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Networked GameObjects and Scripts"},{"label":"Spawning and Despawning"}]},{"id":"8j0keMV3LvsjQc8TRIwQ","title":"Network State Events","pathname":"/docs/guides/features/network-callbacks","siteSpaceId":"sitesp_NRQKl","description":"You can take advantage of numerous available events to stay informed about the current state of the network.","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"J4ZvPytv5FfhBPPxWE5f","title":"Network Communication","pathname":"/docs/guides/features/network-communication","siteSpaceId":"sitesp_NRQKl","description":"Read more about the various methods you can use to communicate over the network!","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"EUgvavueCuzRtzKEWDMZ","title":"Remote Procedure Calls","pathname":"/docs/guides/features/network-communication/remote-procedure-calls","siteSpaceId":"sitesp_NRQKl","description":"Information about how to run methods across the network using remote procedure calls.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Network Communication"}]},{"id":"jDlYb30vj6PvnwMvSIlm","title":"SyncTypes","pathname":"/docs/guides/features/network-communication/synchronizing","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Network Communication"}]},{"id":"t2SIhqDs1339nbO3xZA7","title":"Customizing Behavior","pathname":"/docs/guides/features/network-communication/synchronizing/customizing-behavior","siteSpaceId":"sitesp_NRQKl","description":"There are settings and attributes unique to SyncTypes which allow various ways of customizing your SyncType.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Network Communication"},{"label":"SyncTypes"}]},{"id":"7eg60JADgK2ImGpie1Is","title":"SyncVar","pathname":"/docs/guides/features/network-communication/synchronizing/syncvar","siteSpaceId":"sitesp_NRQKl","description":"SyncVars are the most simple way to automatically synchronize a single variable over the network.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Network Communication"},{"label":"SyncTypes"}]},{"id":"GvtQpWx12UU5QLTxdYzi","title":"SyncList","pathname":"/docs/guides/features/network-communication/synchronizing/synclist","siteSpaceId":"sitesp_NRQKl","description":"SyncList is an easy way to keep a List collection automatically synchronized over the network.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Network Communication"},{"label":"SyncTypes"}]},{"id":"jpCmW50nmC8fofZFmfVF","title":"SyncHashSet","pathname":"/docs/guides/features/network-communication/synchronizing/synchashset","siteSpaceId":"sitesp_NRQKl","description":"SyncHashSet is an easy way to keep a HashSet collection automatically synchronized over the network.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Network Communication"},{"label":"SyncTypes"}]},{"id":"egfvDuILVAWLFtqviuqQ","title":"SyncDictionary","pathname":"/docs/guides/features/network-communication/synchronizing/syncdictionary","siteSpaceId":"sitesp_NRQKl","description":"SyncDictionary is an easy way to keep a Dictionary collection automatically synchronized over the network.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Network Communication"},{"label":"SyncTypes"}]},{"id":"z549Ms6Znn38PbIShqem","title":"SyncTimer","pathname":"/docs/guides/features/network-communication/synchronizing/synctimer","siteSpaceId":"sitesp_NRQKl","description":"SyncTimer provides an efficient way to synchronize a timer between server and clients.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Network Communication"},{"label":"SyncTypes"}]},{"id":"kJIk9P6nKLH5J7v5DwOn","title":"SyncStopwatch","pathname":"/docs/guides/features/network-communication/synchronizing/syncstopwatch","siteSpaceId":"sitesp_NRQKl","description":"SyncStopwatch provides an efficient way to synchronize a stopwatch between server and clients.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Network Communication"},{"label":"SyncTypes"}]},{"id":"TGHi21bY86XF9Hc4q1gT","title":"Custom SyncType","pathname":"/docs/guides/features/network-communication/synchronizing/custom-synctype","siteSpaceId":"sitesp_NRQKl","description":"With a customized SynType you can decide how and what data to synchronize, and make optimizations as you see fit.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Network Communication"},{"label":"SyncTypes"}]},{"id":"9RiBwMasSnjuugc4WzyD","title":"Broadcasts","pathname":"/docs/guides/features/network-communication/broadcasts","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Network Communication"}]},{"id":"aZ9rxXr0diYebWSSGfi4","title":"Data Serialization","pathname":"/docs/guides/features/data-serialization","siteSpaceId":"sitesp_NRQKl","description":"Serialization and deserialization of data for the purpose of sending it across the network.","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"iP4SlI4afmrxeLF2ioar","title":"Custom Serializers","pathname":"/docs/guides/features/data-serialization/custom-serializers-guides","siteSpaceId":"sitesp_NRQKl","description":"Custom serializers are useful where an automatic serializer may not be possible, or where you want data to be serialized in a specific manner.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Data Serialization"}]},{"id":"PuEstMLsK9gKTswZaHBj","title":"Interface Serializers","pathname":"/docs/guides/features/data-serialization/custom-serializers-guides/interface-serializers","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Data Serialization"},{"label":"Custom Serializers"}]},{"id":"eWYxbiZ1x54s82AcyZHb","title":"Inheritance Serializers","pathname":"/docs/guides/features/data-serialization/custom-serializers-guides/inheritance-serializers","siteSpaceId":"sitesp_NRQKl","description":"Learn how to serialize classes and any their children classes.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Data Serialization"},{"label":"Custom Serializers"}]},{"id":"RqeZo6qDJCq4bwaOg2fT","title":"Ownership","pathname":"/docs/guides/features/ownership","siteSpaceId":"sitesp_NRQKl","description":"Understanding how to use ownership, as well how it affects clients and the server is essential for any project.","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"tjYFVTRIXFO5xwazK7aN","title":"Using Ownership to Read Values","pathname":"/docs/guides/features/ownership/using-ownership-to-read-values","siteSpaceId":"sitesp_NRQKl","description":"Learn how to store values for clients and read them on unlinked objects by reading owner information.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Ownership"}]},{"id":"hMI0PR7znvhRLuRwvY87","title":"Area of Interest (Observer System)","pathname":"/docs/guides/features/observers","siteSpaceId":"sitesp_NRQKl","description":"Fish-Networking features an advanced area-of-interest system that controls which clients receive updates about specific objects.","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"ec7qf2NWaPu4XTdAVXE6","title":"Modifying Conditions","pathname":"/docs/guides/features/observers/modifying-conditions","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Area of Interest (Observer System)"}]},{"id":"5nZkQH0StjSjiq1uYujq","title":"Custom Conditions","pathname":"/docs/guides/features/observers/custom-conditions","siteSpaceId":"sitesp_NRQKl","description":"A simple guide on how to write a custom observer condition.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Area of Interest (Observer System)"}]},{"id":"WQRItSgL0GOhRHOJnfRB","title":"Scene Management","pathname":"/docs/guides/features/scene-management","siteSpaceId":"sitesp_NRQKl","description":"Fish-Networking comes with a powerful scene manager tool that enables you to synchronize networked scenes with minimal effort, while also exposing a lot of powerful options.","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"85rQu6IAYWByxCfWkE2g","title":"Scene Events","pathname":"/docs/guides/features/scene-management/scene-events","siteSpaceId":"sitesp_NRQKl","description":"Information about FishNet's many available scene events, the order they are invoked in, and how to use them.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Scene Management"}]},{"id":"8hvVoZbigsNFADAKoHHg","title":"Scene Data","pathname":"/docs/guides/features/scene-management/scene-data","siteSpaceId":"sitesp_NRQKl","description":"Scene Data is the data types used that the user will interface with when using the SceneManager.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Scene Management"}]},{"id":"mI5qDNszWjSg4pntkDOq","title":"SceneLookupData","pathname":"/docs/guides/features/scene-management/scene-data/scenelookupdata","siteSpaceId":"sitesp_NRQKl","description":"SceneLookupData is how the server determines to load clients into a new instance of a Scene, or load a client into a scene that the server already has loaded.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Scene Management"},{"label":"Scene Data"}]},{"id":"ui1T77NO9kag8ZQUT2lM","title":"SceneLoadData","pathname":"/docs/guides/features/scene-management/scene-data/sceneloaddata","siteSpaceId":"sitesp_NRQKl","description":"The Data Class needed for the SceneManager to know how to handle loading a scene.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Scene Management"},{"label":"Scene Data"}]},{"id":"RsFUR7ey8ndXB8OV58Ol","title":"SceneUnloadData","pathname":"/docs/guides/features/scene-management/scene-data/sceneunloaddata","siteSpaceId":"sitesp_NRQKl","description":"The Data Class needed for the SceneManager to know how to handle unloading a scene.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Scene Management"},{"label":"Scene Data"}]},{"id":"mxZXshMJIsFPo3DZEHcC","title":"Loading Scenes","pathname":"/docs/guides/features/scene-management/loading-scenes","siteSpaceId":"sitesp_NRQKl","description":"Instructions for loading networked scenes with FishNet, both on the server and on clients.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Scene Management"}]},{"id":"1jEvcwJGqqNO0TsJpnyk","title":"Automatic Online and Offline Scenes","pathname":"/docs/guides/features/scene-management/loading-scenes/automatic-online-and-offline-scenes","siteSpaceId":"sitesp_NRQKl","description":"Using the DefaultScene component to automatically manage simple scene setups.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Scene Management"},{"label":"Loading Scenes"}]},{"id":"DOmC63EGMwPT7tfzuKYZ","title":"Unloading Scenes","pathname":"/docs/guides/features/scene-management/unloading-scenes","siteSpaceId":"sitesp_NRQKl","description":"Instructions for how to unload networked scenes in FishNet.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Scene Management"}]},{"id":"AE2S6dLorwzCyq4UrAGw","title":"Scene Stacking","pathname":"/docs/guides/features/scene-management/scene-stacking","siteSpaceId":"sitesp_NRQKl","description":"Scene Stacking is the ability for server or host to load multiple instances of the same scene at once, usually with different clients/observers in each scene.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Scene Management"}]},{"id":"EieUqyyytpKEPlTLXccQ","title":"Scene Caching","pathname":"/docs/guides/features/scene-management/scene-caching","siteSpaceId":"sitesp_NRQKl","description":"Scene Caching is the ability for the Server to keep a scene loaded when either all clients have unloaded that scene, or stopped observing that scene.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Scene Management"}]},{"id":"lmto4cds12G0MXYIjJDj","title":"Scene Visibility","pathname":"/docs/guides/features/scene-management/scene-visibility","siteSpaceId":"sitesp_NRQKl","description":"Scene Visibility offers details of using the \"Scene Condition\" with the ObserverManager, and how to manage Observers in a Scene.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Scene Management"}]},{"id":"aZ5N2q9cnoWm8q4XkXD5","title":"Persisting NetworkObjects","pathname":"/docs/guides/features/scene-management/persisting-networkobjects","siteSpaceId":"sitesp_NRQKl","description":"This page will go over details on the options available to users for persisting NetworkObjects across scene loading and unloading","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Scene Management"}]},{"id":"ZuJ4Bn6hVU8UpMT9IwDm","title":"Custom Scene Processors","pathname":"/docs/guides/features/scene-management/custom-scene-processors","siteSpaceId":"sitesp_NRQKl","description":"You can create a custom scene processor to handle how a scene is loaded/unloaded.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Scene Management"}]},{"id":"Q54B9IpUpOU5mdyyUTin","title":"Addressables","pathname":"/docs/guides/features/scene-management/custom-scene-processors/addressables","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Scene Management"},{"label":"Custom Scene Processors"}]},{"id":"o1wkHYEhp4dMDCs5Z4N7","title":"InstanceFinder","pathname":"/docs/guides/features/instancefinder-guides","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"bclV3BlFaYarblRJJDPq","title":"Addressables","pathname":"/docs/guides/features/addressables","siteSpaceId":"sitesp_NRQKl","description":"How to manage prefab and scene addressables with FishNet.","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"jUSvM9xTWbnT4uTEhdUW","title":"Transports","pathname":"/docs/guides/features/transports","siteSpaceId":"sitesp_NRQKl","description":"Some transports offer features additional to what is configured within the inspector. Within this section are guides on using unique features of each official transport.","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"O3YjKMiQiyrsgrh0sFkI","title":"Multipass","pathname":"/docs/guides/features/transports/multipass","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Transports"}]},{"id":"31LYaao898GeZZZhRqLB","title":"Prediction","pathname":"/docs/guides/features/prediction","siteSpaceId":"sitesp_NRQKl","description":"Prediction is the act of server-authoritative actions while allowing clients to move in real-time without delay.","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"4V2kDJO4JAkuj67KauN6","title":"What Is Client-Side Prediction","pathname":"/docs/guides/features/prediction/what-is-client-side-prediction","siteSpaceId":"sitesp_NRQKl","description":"Client-Side Prediction allows clients to perform actions in real-time while maintaining server authority.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"}]},{"id":"inEqaY3heuIE9K3AcJ4e","title":"Configuring PredictionManager","pathname":"/docs/guides/features/prediction/configuring-predictionmanager","siteSpaceId":"sitesp_NRQKl","description":"The PredictionManager is responsible for global prediction settings, and other prediction related information.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"}]},{"id":"zFc2VwaVSUUQtt0M38vz","title":"Configuring TimeManager","pathname":"/docs/guides/features/prediction/configuring-timemanager","siteSpaceId":"sitesp_NRQKl","description":"Very little of the TimeManager has to be configured for prediction.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"}]},{"id":"c8587n1MsHWIUZtDKIen","title":"Configuring NetworkObject","pathname":"/docs/guides/features/prediction/configuring-networkobject","siteSpaceId":"sitesp_NRQKl","description":"Setting up the NetworkObject inspector for prediction is mandatory for using prediction methods in scripts belonging to the NetworkObject.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"}]},{"id":"DdDMbwEMYuLYWKIyO7E9","title":"Offline Rigidbodies","pathname":"/docs/guides/features/prediction/offline-rigidbodies","siteSpaceId":"sitesp_NRQKl","description":"In some cases you will want the player to be able to interact with non-networked rigidbodies; these require a special component.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"}]},{"id":"WYMTUIArKoZCp11uFq6x","title":"Interpolations","pathname":"/docs/guides/features/prediction/interpolations","siteSpaceId":"sitesp_NRQKl","description":"Both the PredictionManager and NetworkObject have interpolation values, but with separate objectives","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"}]},{"id":"pbklnNSyPLO5uPkIjqhP","title":"Creating Code","pathname":"/docs/guides/features/prediction/creating-code","siteSpaceId":"sitesp_NRQKl","description":"This guide provides examples of creating prediction code, understanding important aspects of the code, and leveraging it to your game.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"}]},{"id":"20h9yxDVUqmKNoSW3OT4","title":"Controlling an Object","pathname":"/docs/guides/features/prediction/creating-code/controlling-an-object","siteSpaceId":"sitesp_NRQKl","description":"Learn how to create a predicted object that the owner or server can control.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"},{"label":"Creating Code"}]},{"id":"WGWHuNMZVuNQKVIY0LwX","title":"Non-Controlled Object","pathname":"/docs/guides/features/prediction/creating-code/non-controlled-object","siteSpaceId":"sitesp_NRQKl","description":"A very simple script for keeping non-controlled objects in synchronization with the prediction system.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"},{"label":"Creating Code"}]},{"id":"3gtP2oZTXQibPVYPxKOO","title":"Understanding ReplicateState","pathname":"/docs/guides/features/prediction/creating-code/understanding-replicatestate","siteSpaceId":"sitesp_NRQKl","description":"Being familiar with what each state means will help you fine-tune your gameplay on spectated objects.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"},{"label":"Creating Code"}]},{"id":"DPhelhfu2bgwkHx8SxfH","title":"Using States in Code","pathname":"/docs/guides/features/prediction/creating-code/understanding-replicatestate/using-states-in-code","siteSpaceId":"sitesp_NRQKl","description":"Understanding how to use states will greatly improve your experience when writing code for your replicate method.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"},{"label":"Creating Code"},{"label":"Understanding ReplicateState"}]},{"id":"WaoGNpnx6mNXnqeGSJx3","title":"Predicting States in Code","pathname":"/docs/guides/features/prediction/creating-code/understanding-replicatestate/predicting-states-in-code","siteSpaceId":"sitesp_NRQKl","description":"Due to the unpredictability of the Internet inputs may drop or arrive late. Predicting states is a simple way to compensate for these events.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"},{"label":"Creating Code"},{"label":"Understanding ReplicateState"}]},{"id":"fKwW1MHSNpAlviWsoMRb","title":"Advanced Controls","pathname":"/docs/guides/features/prediction/creating-code/advanced-controls","siteSpaceId":"sitesp_NRQKl","description":"This guide supplements the basic prediction guide by showing how to introduce more complexities to your controls.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"},{"label":"Creating Code"}]},{"id":"WCY5nuuoQxEduVOcNyaF","title":"Custom Comparers","pathname":"/docs/guides/features/prediction/custom-comparers","siteSpaceId":"sitesp_NRQKl","description":"Fish-Networking generates comparers for prediction data to perform internal optimizations, but on occasion certain types cannot have comparers automatically generated.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"}]},{"id":"DLvDrQIrFmFEUjp0817d","title":"PredictionRigidbody","pathname":"/docs/guides/features/prediction/predictionrigidbody","siteSpaceId":"sitesp_NRQKl","description":"This class provides accurate simulations and re-simulations when applying outside forces, most commonly through collisions.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"}]},{"id":"1lXGxRfVPWvvDwrU1w62","title":"Using NetworkColliders","pathname":"/docs/guides/features/prediction/using-networkcolliders","siteSpaceId":"sitesp_NRQKl","description":"Using each NetworkCollider component is the same, and can be used very similar to Unity callbacks.","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Prediction"}]},{"id":"bAs2xBicn9R4I9iU0NMF","title":"Lag Compensation","pathname":"/docs/guides/features/lag-compensation","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"uEyfHppTXfANmLimsrRi","title":"States","pathname":"/docs/guides/features/lag-compensation/states","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Lag Compensation"}]},{"id":"H5DR2kxwbK1ZiCF5HWfm","title":"Raycast","pathname":"/docs/guides/features/lag-compensation/raycast","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Lag Compensation"}]},{"id":"tdfqMghzEJlkaxNQpmCt","title":"Projectiles","pathname":"/docs/guides/features/lag-compensation/projectiles","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Features"},{"label":"Lag Compensation"}]},{"id":"B6foe6RpdBMHdW83J6JY","title":"Code Stripping (Pro Feature)","pathname":"/docs/guides/features/code-stripping","siteSpaceId":"sitesp_NRQKl","description":"FishNet's code stripping feature allows your server-only code to be automatically stripped from client builds and client-only code to be stripped from server builds.","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"7BgCfyDRY3Kjwwt8HflU","title":"Level of Detail (Pro Feature)","pathname":"/docs/guides/features/level-of-detail","siteSpaceId":"sitesp_NRQKl","description":"FishNet's LOD system enables a reduction in network traffic by reducing the network data sent for objects that are further away.","breadcrumbs":[{"label":"Guides"},{"label":"Features"}]},{"id":"eYDQJqXoWDpVOAktueUo","title":"Demos","pathname":"/docs/guides/demos","siteSpaceId":"sitesp_NRQKl","breadcrumbs":[{"label":"Guides"}]},{"id":"AJ4pGuFX2YiCb0RLUFcI","title":"Updating FishNet","pathname":"/docs/guides/updating-fishnet","siteSpaceId":"sitesp_NRQKl","description":"Instructions for how to update FishNet to the latest or Pro version.","breadcrumbs":[{"label":"Guides"}]},{"id":"AG9VmzMqFqTZn11q8g1w","title":"Changes in API","pathname":"/docs/guides/updating-fishnet/upgrading-api","siteSpaceId":"sitesp_NRQKl","description":"Sometimes logic has to be changed for the better, but it doesn't have to be a rough experience. You may find planned breaks here, and how to resolve them.","breadcrumbs":[{"label":"Guides"},{"label":"Updating FishNet"}]},{"id":"LCrEx4y2c4Gxi1ttQJEK","title":"Upgrading to FishNet Pro","pathname":"/docs/guides/updating-fishnet/upgrading-to-fishnet-pro","siteSpaceId":"sitesp_NRQKl","description":"Instructions for how to purchase and then install FishNet Pro in your Unity project.","breadcrumbs":[{"label":"Guides"},{"label":"Updating FishNet"}]},{"id":"gzvX8IaXipu7FuZinqX5","title":"Server Hosting","pathname":"/docs/guides/server-hosting","siteSpaceId":"sitesp_NRQKl","description":"Hosting is a way for players to access your game and play together.","breadcrumbs":[{"label":"Guides"}]},{"id":"Ic4gjgLj40yaEaFzpNZc","title":"Terminology","pathname":"/docs/guides/server-hosting/terminology","siteSpaceId":"sitesp_NRQKl","description":"Overview of key server hosting terms, comparing session-based vs persistent architectures, and outlining the roles of relays and dedicated servers.","breadcrumbs":[{"label":"Guides"},{"label":"Server Hosting"}]},{"id":"Eev4dozsyL9If1Ebn2OE","title":"Services","pathname":"/docs/guides/server-hosting/services","siteSpaceId":"sitesp_NRQKl","description":"A comparison of third-party hosting and relay services compatible with FishNet, including our recommended providers.","breadcrumbs":[{"label":"Guides"},{"label":"Server Hosting"}]},{"id":"pd7NlE0LX2btlvM33UkY","title":"PlayFlow Cloud (Recommended)","pathname":"/docs/guides/server-hosting/services/playflow-cloud","siteSpaceId":"sitesp_NRQKl","description":"PlayFlow handles the server hosting, matchmaking, & lobbies so you can focus on your game.","breadcrumbs":[{"label":"Guides"},{"label":"Server Hosting"},{"label":"Services"}]},{"id":"S0nhkIdRw3v5VJKMxt4b","title":"Getting Started with PlayFlow","pathname":"/docs/guides/server-hosting/services/playflow-cloud/getting-started-with-playflow","siteSpaceId":"sitesp_NRQKl","description":"Step-by-step tutorial for getting up and running with PlayFlow Cloud.","breadcrumbs":[{"label":"Guides"},{"label":"Server Hosting"},{"label":"Services"},{"label":"PlayFlow Cloud (Recommended)"}]},{"id":"ca7Vh7oez0J44h7VPlZT","title":"Easy WebGL Hosting with PlayFlow","pathname":"/docs/guides/server-hosting/services/playflow-cloud/easy-webgl-hosting-with-playflow","siteSpaceId":"sitesp_NRQKl","description":"Simple tutorial showing how easy PlayFlow makes it to host a server for your WebGL game.","breadcrumbs":[{"label":"Guides"},{"label":"Server Hosting"},{"label":"Services"},{"label":"PlayFlow Cloud (Recommended)"}]},{"id":"McD4u2tWGXRdZo9ppebv","title":"Getting Started with AWS","pathname":"/docs/guides/server-hosting/services/getting-started-with-aws","siteSpaceId":"sitesp_NRQKl","description":"A community-made guide for using AWS to host a FishNet server.","breadcrumbs":[{"label":"Guides"},{"label":"Server Hosting"},{"label":"Services"}]},{"id":"04SPGiTs3ruGKoc5b3dX","title":"Moving to Fish-Networking","pathname":"/docs/guides/upgrading-to-fish-net","siteSpaceId":"sitesp_NRQKl","description":"Helpful tips for how to move your project from another solution to FishNet.","breadcrumbs":[{"label":"Guides"}]},{"id":"szrQmmv3WXskrjk12wch","title":"Troubleshooting","pathname":"/docs/guides/troubleshooting","siteSpaceId":"sitesp_NRQKl","description":"This section will go over common limitations and issues you may run into, what FishNet's warning and error logs mean, and how to report problems.","breadcrumbs":[{"label":"Guides"}]},{"id":"3BgJGhU8v9wKuEyqOcOq","title":"Technical Limitations","pathname":"/docs/guides/troubleshooting/technical-limitations","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"Guides"},{"label":"Troubleshooting"}]},{"id":"QTzI9NMUylA2JZ1T8pdd","title":"Creating Bug Reports","pathname":"/docs/guides/troubleshooting/creating-bug-reports","siteSpaceId":"sitesp_NRQKl","description":"A well crafted bug report will result in bugs being resolved much quicker.","breadcrumbs":[{"label":"Guides"},{"label":"Troubleshooting"}]},{"id":"tXWor6UC7BhLrXBhzcGR","title":"Report Example","pathname":"/docs/guides/troubleshooting/creating-bug-reports/report-example","siteSpaceId":"sitesp_NRQKl","description":"This is an example of what a created bug report might look like.","breadcrumbs":[{"label":"Guides"},{"label":"Troubleshooting"},{"label":"Creating Bug Reports"}]},{"id":"zDe5bfAlE4EzfSuAh1ZL","title":"FAQ","pathname":"/docs/guides/troubleshooting/frequently-asked-questions-faq","siteSpaceId":"sitesp_NRQKl","description":"Discover frequently asked questions and their answers.","breadcrumbs":[{"label":"Guides"},{"label":"Troubleshooting"}]},{"id":"zaFZnhu7HdYNzDbvEQnG","title":"Components","pathname":"/docs/fishnet-building-blocks/components","siteSpaceId":"sitesp_NRQKl","description":"Components are included scripts which you may attach to your objects for additional functionality.","breadcrumbs":[{"label":"FishNet Building Blocks"}]},{"id":"vwc5gONeDiavrUtWPH9N","title":"Managers","pathname":"/docs/fishnet-building-blocks/components/managers","siteSpaceId":"sitesp_NRQKl","description":"Manager components are generally only added once per NetworkManager and play a vital role on configuring your project.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"}]},{"id":"-MjvGa0z4UemplnF8NhH","title":"NetworkManager","pathname":"/docs/fishnet-building-blocks/components/managers/network-manager","siteSpaceId":"sitesp_NRQKl","description":"The NetworkManager is an essential component for running the client and server. It acts as a bridge between core components and configuring your network.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Managers"}]},{"id":"-MjvKk9h8vKHCh-i7fhh","title":"TimeManager","pathname":"/docs/fishnet-building-blocks/components/managers/time-manager","siteSpaceId":"sitesp_NRQKl","description":"The TimeManager handles and provides callbacks related to network timing.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Managers"}]},{"id":"XAfhTgpvV9Cmlz7slXdJ","title":"PredictionManager","pathname":"/docs/fishnet-building-blocks/components/managers/predictionmanager","siteSpaceId":"sitesp_NRQKl","description":"The PredictionManager provides states, callbacks, and settings to fine tuning prediction for your game type.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Managers"}]},{"id":"NOUBVqBLpPemPLDtxG0u","title":"ServerManager","pathname":"/docs/fishnet-building-blocks/components/managers/server-manager","siteSpaceId":"sitesp_NRQKl","description":"The ServerManager handles validation of clients and a variety of settings only applicable to the server.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Managers"}]},{"id":"ZtmdRPvZua9wDJNqKfBZ","title":"ClientManager","pathname":"/docs/fishnet-building-blocks/components/managers/clientmanager","siteSpaceId":"sitesp_NRQKl","description":"The ClientManager provides settings unique to clients.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Managers"}]},{"id":"niUVTo6MK4dWt0f5pZOT","title":"SceneManager","pathname":"/docs/fishnet-building-blocks/components/managers/scenemanager","siteSpaceId":"sitesp_NRQKl","description":"The SceneManager handles networking scenes between the server and clients, including updating active scenes, addressable scenes, provide helpful callbacks, and more.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Managers"}]},{"id":"etUCfwPgkicBPb1aRX4I","title":"TransportManager","pathname":"/docs/fishnet-building-blocks/components/managers/transportmanager","siteSpaceId":"sitesp_NRQKl","description":"The TransportManager handles talking to the transports as well sending, receiving, and even customizing packets on the fly.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Managers"}]},{"id":"vErYOYJvUH6UOs3LQaQi","title":"IntermediateLayer","pathname":"/docs/fishnet-building-blocks/components/managers/transportmanager/intermediatelayer","siteSpaceId":"sitesp_NRQKl","description":"The IntermediateLayer is a pass-through for data in and out. This feature can be used to encrypt data, inject headers, and more.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Managers"},{"label":"TransportManager"}]},{"id":"bOuX8mrPCV8iNdUNzlzp","title":"StatisticsManager","pathname":"/docs/fishnet-building-blocks/components/managers/statisticsmanager","siteSpaceId":"sitesp_NRQKl","description":"The StatisticManager provides statics about Fish-Networking for a variety of tasks, including monitoring network traffic.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Managers"}]},{"id":"pZQ8BdYhtS4kkQzrRz4E","title":"ObserverManager","pathname":"/docs/fishnet-building-blocks/components/managers/observermanager","siteSpaceId":"sitesp_NRQKl","description":"The ObserverManager assists in controlling what network objects each client may see.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Managers"}]},{"id":"8Ut3DiKjRh4dXWIESMxR","title":"HashGrid","pathname":"/docs/fishnet-building-blocks/components/managers/observermanager/hashgrid","siteSpaceId":"sitesp_NRQKl","description":"The HashGrid is the managing script for when using the Grid Observer Condition.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Managers"},{"label":"ObserverManager"}]},{"id":"KpJ4ixaQ9RI57w57XmPl","title":"RollbackManager (Pro Feature)","pathname":"/docs/fishnet-building-blocks/components/managers/rollbackmanager-pro-feature","siteSpaceId":"sitesp_NRQKl","description":"RollbackManager contains configurations and optimizations for how colliders are sent back in time when using lag compensation.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Managers"}]},{"id":"fJeFyeN7159Wt64HLCBD","title":"DebugManager","pathname":"/docs/fishnet-building-blocks/components/managers/debugmanager","siteSpaceId":"sitesp_NRQKl","description":"The DebugManager helps you debug various networking functions when in the Unity Editor or Development builds.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Managers"}]},{"id":"SFUXkL9doxJKGp9fQC60","title":"Prediction","pathname":"/docs/fishnet-building-blocks/components/prediction","siteSpaceId":"sitesp_NRQKl","description":"Prediction components are for use with FishNet's prediction systems. Learn more about each of them here!","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"}]},{"id":"W9jk7d3r8MMKQ2ppY2Jy","title":"Network Collider","pathname":"/docs/fishnet-building-blocks/components/prediction/network-collider","siteSpaceId":"sitesp_NRQKl","description":"The NetworkCollider components are a simple way to use Trigger and Collision callbacks with prediction.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Prediction"}]},{"id":"cpK7XTotg1RcxBLXTkLH","title":"NetworkCollision","pathname":"/docs/fishnet-building-blocks/components/prediction/network-collider/networkcollision","siteSpaceId":"sitesp_NRQKl","description":"NetworkCollision is used to execute collision events for use with prediction.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Prediction"},{"label":"Network Collider"}]},{"id":"F5WMMM5nqoLHthYeRdRQ","title":"NetworkCollision2D","pathname":"/docs/fishnet-building-blocks/components/prediction/network-collider/networkcollision2d","siteSpaceId":"sitesp_NRQKl","description":"NetworkCollision2D is used to execute collision2D events for use with prediction.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Prediction"},{"label":"Network Collider"}]},{"id":"9Mz5RVqpeCjmkNmh5Ne5","title":"NetworkTrigger","pathname":"/docs/fishnet-building-blocks/components/prediction/network-collider/networktrigger","siteSpaceId":"sitesp_NRQKl","description":"NetworkTrigger is used to execute trigger events for use with prediction.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Prediction"},{"label":"Network Collider"}]},{"id":"EgzSdmNaqIc7qBEZwVgz","title":"NetworkTrigger2D","pathname":"/docs/fishnet-building-blocks/components/prediction/network-collider/networktrigger2d","siteSpaceId":"sitesp_NRQKl","description":"NetworkTrigger2D is used to execute trigger2D events for use with prediction.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Prediction"},{"label":"Network Collider"}]},{"id":"aXMtl4zWKd96XiY3ZPc4","title":"OfflineRigidbody","pathname":"/docs/fishnet-building-blocks/components/prediction/offlinerigidbody","siteSpaceId":"sitesp_NRQKl","description":"This component can be used to prevent client side objects from running physics too quickly due to prediction replays.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Prediction"}]},{"id":"IUQJt4cL05NanK93m6Ag","title":"PredictedOwner","pathname":"/docs/fishnet-building-blocks/components/prediction/predictedowner","siteSpaceId":"sitesp_NRQKl","description":"The PredictedOwner component allows a user to claim ownership of an object immediately and be able to use it before the server officially gives the ownership over.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Prediction"}]},{"id":"jrkOstikYsS4Js0Ed62g","title":"PredictedSpawn","pathname":"/docs/fishnet-building-blocks/components/prediction/predictedspawn","siteSpaceId":"sitesp_NRQKl","description":"The PredictedSpawn component allows you to spawn this Network Object directly on the client side.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Prediction"}]},{"id":"4ncjFyDbBlyKFyOgJ0QQ","title":"Utilities","pathname":"/docs/fishnet-building-blocks/components/utilities","siteSpaceId":"sitesp_NRQKl","description":"There are multiple commonly needed helper or debugging components that come with Fish-Networking.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"}]},{"id":"CbXWkfZdjqwmlPaVPGIE","title":"PingDisplay","pathname":"/docs/fishnet-building-blocks/components/utilities/pingdisplay","siteSpaceId":"sitesp_NRQKl","description":"The PingDisplay can be used to easily display the client's network ping during development.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Utilities"}]},{"id":"VedaBLzRzmnhyqyZnnQ9","title":"BandwidthDisplay","pathname":"/docs/fishnet-building-blocks/components/utilities/bandwidthdisplay","siteSpaceId":"sitesp_NRQKl","description":"The BandwidthDisplay component is a simple development GUI to show the bandwidth ingress and egress.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Utilities"}]},{"id":"4ydau1jBjT5azP4JLAUE","title":"Authenticator","pathname":"/docs/fishnet-building-blocks/components/utilities/authenticator","siteSpaceId":"sitesp_NRQKl","description":"Authenticators are an additional layer of security. A client must pass the authenticator in order to communicate with the game server.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Utilities"}]},{"id":"9jYEzUxhVo8cShBvz5Lw","title":"Tick Smoothers","pathname":"/docs/fishnet-building-blocks/components/tick-smoothers","siteSpaceId":"sitesp_NRQKl","description":"These components smooths a child graphical object over frames between each network tick. These are useful for prediction and smoothing graphics on larger physics steps.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"}]},{"id":"enrQhRZ1ESbO5w14NLzR","title":"NetworkTickSmoother","pathname":"/docs/fishnet-building-blocks/components/tick-smoothers/networkticksmoother","siteSpaceId":"sitesp_NRQKl","description":"The Network Tick Smoother component ensures smooth and visually consistent movement of networked objects by interpolating their positions, rotations, and scale between network updates.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Tick Smoothers"}]},{"id":"ac5Ra9U3ikL4pPQ9HFe2","title":"OfflineTickSmoother","pathname":"/docs/fishnet-building-blocks/components/tick-smoothers/offlineticksmoother","siteSpaceId":"sitesp_NRQKl","description":"The Offline Tick Smoother component ensures smooth and visually consistent movement of non-networked objects by interpolating their positions, rotations, and scale between network updates.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Tick Smoothers"}]},{"id":"GNn4dQL9vo6mNY3JCinQ","title":"MonoTickSmoother [Obsolete]","pathname":"/docs/fishnet-building-blocks/components/tick-smoothers/monoticksmoother-obsolete","siteSpaceId":"sitesp_NRQKl","description":"MonoTickSmoother smooths a child graphical object over frames between each network tick. This component can be used on non-networked objects.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Tick Smoothers"}]},{"id":"wsYOCkx7sVRAWtO9w3x6","title":"DetachableNetworkTickSmoother [Obsolete]","pathname":"/docs/fishnet-building-blocks/components/tick-smoothers/detachablenetworkticksmoother-obsolete","siteSpaceId":"sitesp_NRQKl","description":"This component is primarily used for smooth camera movement between ticks. It can be used with prediction or normal design.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"},{"label":"Tick Smoothers"}]},{"id":"3KAls4h7ctSw3mQHDZHs","title":"NetworkObject","pathname":"/docs/fishnet-building-blocks/components/network-object","siteSpaceId":"sitesp_NRQKl","description":"This component is attached automatically anytime a script which inherits from NetworkBehaviour is added to your object.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"}]},{"id":"QAspqh4bWRUOQJq2SMZ9","title":"NetworkBehaviour","pathname":"/docs/fishnet-building-blocks/components/network-behaviour-components","siteSpaceId":"sitesp_NRQKl","description":"NetworkBehaviour allows your scripts to perform networked actions, such as synchronizing data, responding to network events, and handling remote procedure calls (RPCs).","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"}]},{"id":"-MjuTuaUcEmCXR--J_76","title":"NetworkTransform","pathname":"/docs/fishnet-building-blocks/components/network-transform","siteSpaceId":"sitesp_NRQKl","description":"The NetworkTransform synchronizes transform properties across the network.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"}]},{"id":"IdpoJPZ8jtqM0aOdez4C","title":"NetworkAnimator","pathname":"/docs/fishnet-building-blocks/components/networkanimator","siteSpaceId":"sitesp_NRQKl","description":"The NetworkAnimator component synchronizes animations across the network.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"}]},{"id":"pbGDMoyZAOMRhjvH1JPl","title":"NetworkObserver","pathname":"/docs/fishnet-building-blocks/components/network-observer","siteSpaceId":"sitesp_NRQKl","description":"This component lets you override the default observer conditions for a specific network object.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"}]},{"id":"aBcTcH1eiybybxCgmL02","title":"DefaultScene","pathname":"/docs/fishnet-building-blocks/components/defaultscene","siteSpaceId":"sitesp_NRQKl","description":"This component can be used to easily load an online scene when network starts and an offline one when it stops.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"}]},{"id":"0NGeOkdRp2blEugt2Qxk","title":"PlayerSpawner","pathname":"/docs/fishnet-building-blocks/components/playerspawner","siteSpaceId":"sitesp_NRQKl","description":"The Player Spawner component can be used to spawn a game object for a client once they connect to the game.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"}]},{"id":"dmZWDwqkxo547HnA4R7i","title":"ServerSpawner","pathname":"/docs/fishnet-building-blocks/components/serverspawner","siteSpaceId":"sitesp_NRQKl","description":"An easy tool to assist with spawning specific objects as soon as the server starts.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"}]},{"id":"nme4e5wtPWrOf4ijWZ9U","title":"ColliderRollback (Pro Feature)","pathname":"/docs/fishnet-building-blocks/components/colliderrollback","siteSpaceId":"sitesp_NRQKl","description":"ColliderRollback allows an object's colliders to be rolled back for lag compensation.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Components"}]},{"id":"uhoMeijiofx0LuQpF1Aa","title":"Prefabs","pathname":"/docs/fishnet-building-blocks/prefabs","siteSpaceId":"sitesp_NRQKl","description":"Prefabs are reusable GameObject assets containing components, property values, and child GameObjects.","breadcrumbs":[{"label":"FishNet Building Blocks"}]},{"id":"dlAiSohIg0Z7PgsvGl9B","title":"NetworkManager","pathname":"/docs/fishnet-building-blocks/prefabs/networkmanager","siteSpaceId":"sitesp_NRQKl","description":"A pre-configured NetworkManager prefab, for ease-of-use.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Prefabs"}]},{"id":"UsjTXldRBHf1wcmpokpD","title":"NetworkHudCanvas","pathname":"/docs/fishnet-building-blocks/prefabs/networkhudcanvas","siteSpaceId":"sitesp_NRQKl","description":"A basic HUD for starting and stopping the client and server, useful for development.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Prefabs"}]},{"id":"eV0fmXLuNvSaBBVXgDf1","title":"ScriptableObjects","pathname":"/docs/fishnet-building-blocks/scriptableobjects","siteSpaceId":"sitesp_NRQKl","description":"Scriptable Objects utilized by FishNet for configuration.","breadcrumbs":[{"label":"FishNet Building Blocks"}]},{"id":"dwcHmOk9erhASsH4uHdg","title":"ObserverConditions","pathname":"/docs/fishnet-building-blocks/scriptableobjects/observerconditions","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"ScriptableObjects"}]},{"id":"PyO9UzWI2iMCmw5eskGL","title":"DistanceCondition","pathname":"/docs/fishnet-building-blocks/scriptableobjects/observerconditions/distancecondition","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"ScriptableObjects"},{"label":"ObserverConditions"}]},{"id":"Xp99crFXFXVhrXMDT7t3","title":"GridCondition","pathname":"/docs/fishnet-building-blocks/scriptableobjects/observerconditions/gridcondition","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"ScriptableObjects"},{"label":"ObserverConditions"}]},{"id":"izQenVrQh2wqAdE49gK6","title":"HostOnlyCondition","pathname":"/docs/fishnet-building-blocks/scriptableobjects/observerconditions/hostonlycondition","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"ScriptableObjects"},{"label":"ObserverConditions"}]},{"id":"JqpoOn1FHXnXdr2fA2vZ","title":"MatchCondition","pathname":"/docs/fishnet-building-blocks/scriptableobjects/observerconditions/matchcondition","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"ScriptableObjects"},{"label":"ObserverConditions"}]},{"id":"nd2eKAPrte0sf32Orw7K","title":"OwnerOnlyCondition","pathname":"/docs/fishnet-building-blocks/scriptableobjects/observerconditions/owneronlycondition","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"ScriptableObjects"},{"label":"ObserverConditions"}]},{"id":"eOBiMdOHlcFt5yAGZGdC","title":"SceneCondition","pathname":"/docs/fishnet-building-blocks/scriptableobjects/observerconditions/scenecondition","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"ScriptableObjects"},{"label":"ObserverConditions"}]},{"id":"ynwtK8Apbxi6gBBxTg24","title":"SpawnablePrefabs","pathname":"/docs/fishnet-building-blocks/scriptableobjects/spawnableprefabs","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"ScriptableObjects"}]},{"id":"JR7rIKWXHLUFnTwG3pHi","title":"DefaultPrefabObjects","pathname":"/docs/fishnet-building-blocks/scriptableobjects/spawnableprefabs/defaultprefabobjects","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"ScriptableObjects"},{"label":"SpawnablePrefabs"}]},{"id":"aPL0we4wu55SKw855Gkw","title":"SinglePrefabObjects","pathname":"/docs/fishnet-building-blocks/scriptableobjects/spawnableprefabs/singleprefabobjects","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"ScriptableObjects"},{"label":"SpawnablePrefabs"}]},{"id":"c1sBBszP9nHhb9B7cfdV","title":"DualPrefabObjects","pathname":"/docs/fishnet-building-blocks/scriptableobjects/spawnableprefabs/dualprefabobjects","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"ScriptableObjects"},{"label":"SpawnablePrefabs"}]},{"id":"9xgJFBtYnSypOgMTV2d4","title":"LevelLoggingConfiguration","pathname":"/docs/fishnet-building-blocks/scriptableobjects/levelloggingconfiguration","siteSpaceId":"sitesp_NRQKl","description":"The scriptable object that allows you to customize what FishNet will output logs of.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"ScriptableObjects"}]},{"id":"cOZhXIV6E2ErCxZaJjDX","title":"Transports","pathname":"/docs/fishnet-building-blocks/transports","siteSpaceId":"sitesp_NRQKl","description":"Transports control how data is sent, received, and handled over the network.","breadcrumbs":[{"label":"FishNet Building Blocks"}]},{"id":"6cwvtpoM7MLHxdVLVRyi","title":"Tugboat","pathname":"/docs/fishnet-building-blocks/transports/tugboat","siteSpaceId":"sitesp_NRQKl","description":"The default transport of FishNet, utilizing the power, efficiency and reliability of LiteNetLib.","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Transports"}]},{"id":"UOwq646WxtQMSzG04RYK","title":"Multipass","pathname":"/docs/fishnet-building-blocks/transports/multipass","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Transports"}]},{"id":"OP8PGD13r5gNBM9lX7Uj","title":"Yak (Pro Feature)","pathname":"/docs/fishnet-building-blocks/transports/yak-pro-feature","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Transports"}]},{"id":"hOu2w3vWjnrSkuzL0wCV","title":"Bayou","pathname":"/docs/fishnet-building-blocks/transports/bayou","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Transports"}]},{"id":"3c5gIIJN0Ij5OD6cUB7N","title":"FishyWebRTC","pathname":"/docs/fishnet-building-blocks/transports/fishywebrtc","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Transports"}]},{"id":"kY313ffIVGuMfcgQRnIx","title":"FishyUnityTransport","pathname":"/docs/fishnet-building-blocks/transports/fishyunitytransport","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Transports"}]},{"id":"G0oIJKwdXwGEspv8Knat","title":"FishySteamworks (Steam)","pathname":"/docs/fishnet-building-blocks/transports/fishysteamworks","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Transports"}]},{"id":"qOBKVkgLkeA50jaJksrY","title":"FishyEOS (Epic Online Services)","pathname":"/docs/fishnet-building-blocks/transports/fishyeos-epic-online-services","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Transports"}]},{"id":"RZ1Z28d34acQ4gKcKVUu","title":"FishyFacepunch (Steam)","pathname":"/docs/fishnet-building-blocks/transports/fishyfacepunch-steam","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Transports"}]},{"id":"jOYd3guzXi5sOqMymfb3","title":"FishyRealtime (Photon)","pathname":"/docs/fishnet-building-blocks/transports/fishyrealtime","siteSpaceId":"sitesp_NRQKl","description":"","breadcrumbs":[{"label":"FishNet Building Blocks"},{"label":"Transports"}]},{"id":"loWHYIBP82rbgnYYGO07","title":"Configuration and Tools","pathname":"/docs/fishnet-building-blocks/configuration-and-tools","siteSpaceId":"sitesp_NRQKl","description":"Information about FishNet's additional configuration and editor tools.","breadcrumbs":[{"label":"FishNet Building Blocks"}]}]}