# Guides

- [High-Level Overview](/docs/guides/high-level-overview.md): A general overview of networking using FishNet.
- [Fundamentals](/docs/guides/high-level-overview/fundamentals.md): To understand FishNet, it's helpful to grasp a few fundamental concepts
- [Networking Models](/docs/guides/high-level-overview/networking-models.md): This page discusses the varius networking models and architectures used in games and what Fish-Networking uses.
- [Terminology](/docs/guides/high-level-overview/terminology.md): The following pages give some commonly used terminology for Fish-Networking as well as general networking terms you are likely to encounter.
- [Server, Client, Host](/docs/guides/high-level-overview/terminology/server-client-host.md)
- [Communicating](/docs/guides/high-level-overview/terminology/communicating.md): There are a variety of ways to send communications between server and clients.
- [Miscellaneous](/docs/guides/high-level-overview/terminology/miscellaneous.md): There are a several commonly terms which you may encounter throughout your development experience with FishNet.
- [Transports](/docs/guides/high-level-overview/transports.md): Transports control how data is sent, received, and handled over the network.
- [Features](/docs/guides/features.md): The following are guides on the many features Fish-Networking provides.
- [Server and Client Identification](/docs/guides/features/server-and-client-identification.md): 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.
- [Executing on Server or Client](/docs/guides/features/server-and-client-identification/executing-on-server-or-client.md): How you can run certain code on only the server, or only a client, or only on a host.
- [NetworkConnections](/docs/guides/features/server-and-client-identification/networkconnections.md): A look at how Fish-Networking distinguishes clients from one another.
- [Networked GameObjects and Scripts](/docs/guides/features/networked-gameobjects-and-scripts.md)
- [NetworkObjects](/docs/guides/features/networked-gameobjects-and-scripts/networkobjects.md): Details on the different types of NetworkObjects that will be referenced throughout the guides.
- [Nested NetworkObjects](/docs/guides/features/networked-gameobjects-and-scripts/networkobjects/nested-networkobjects.md)
- [NetworkBehaviour](/docs/guides/features/networked-gameobjects-and-scripts/network-behaviour-guides.md): NetworkBehaviours are a fundamental part of networking which allow you to easily synchronize data and access network related information.
- [Spawning and Despawning](/docs/guides/features/networked-gameobjects-and-scripts/spawning.md): Information about how to spawn and despawn objects on the network.
- [Spawn Payloads](/docs/guides/features/networked-gameobjects-and-scripts/spawning/spawn-payloads.md): Spawn Payloads allow the sending additional information along with an object's Spawn call.
- [Predicted Spawning](/docs/guides/features/networked-gameobjects-and-scripts/spawning/predicted-spawning.md): Predicted spawning an object allows a client to spawn an object locally and begin using networked features immediately, including RPCs.
- [Object Pooling](/docs/guides/features/networked-gameobjects-and-scripts/spawning/object-pooling.md): Information about how to use object pooling for networked objects.
- [Network State Events](/docs/guides/features/network-callbacks.md): You can take advantage of numerous available events to stay informed about the current state of the network.
- [Network Communication](/docs/guides/features/network-communication.md): Read more about the various methods you can use to communicate over the network!
- [Remote Procedure Calls](/docs/guides/features/network-communication/remote-procedure-calls.md): Information about how to run methods across the network using remote procedure calls.
- [SyncTypes](/docs/guides/features/network-communication/synchronizing.md)
- [Customizing Behavior](/docs/guides/features/network-communication/synchronizing/customizing-behavior.md): There are settings and attributes unique to SyncTypes which allow various ways of customizing your SyncType.
- [SyncVar](/docs/guides/features/network-communication/synchronizing/syncvar.md): SyncVars are the most simple way to automatically synchronize a single variable over the network.
- [SyncList](/docs/guides/features/network-communication/synchronizing/synclist.md): SyncList is an easy way to keep a List collection automatically synchronized over the network.
- [SyncHashSet](/docs/guides/features/network-communication/synchronizing/synchashset.md): SyncHashSet is an easy way to keep a HashSet collection automatically synchronized over the network.
- [SyncDictionary](/docs/guides/features/network-communication/synchronizing/syncdictionary.md): SyncDictionary is an easy way to keep a Dictionary collection automatically synchronized over the network.
- [SyncTimer](/docs/guides/features/network-communication/synchronizing/synctimer.md): SyncTimer provides an efficient way to synchronize a timer between server and clients.
- [SyncStopwatch](/docs/guides/features/network-communication/synchronizing/syncstopwatch.md): SyncStopwatch provides an efficient way to synchronize a stopwatch between server and clients.
- [Custom SyncType](/docs/guides/features/network-communication/synchronizing/custom-synctype.md): With a customized SynType you can decide how and what data to synchronize, and make optimizations as you see fit.
- [Broadcasts](/docs/guides/features/network-communication/broadcasts.md)
- [Data Serialization](/docs/guides/features/data-serialization.md): Serialization and deserialization of data for the purpose of sending it across the network.
- [Custom Serializers](/docs/guides/features/data-serialization/custom-serializers-guides.md): Custom serializers are useful where an automatic serializer may not be possible, or where you want data to be serialized in a specific manner.
- [Interface Serializers](/docs/guides/features/data-serialization/custom-serializers-guides/interface-serializers.md)
- [Inheritance Serializers](/docs/guides/features/data-serialization/custom-serializers-guides/inheritance-serializers.md): Learn how to serialize classes and any their children classes.
- [Ownership](/docs/guides/features/ownership.md): Understanding how to use ownership, as well how it affects clients and the server is essential for any project.
- [Using Ownership to Read Values](/docs/guides/features/ownership/using-ownership-to-read-values.md): Learn how to store values for clients and read them on unlinked objects by reading owner information.
- [Area of Interest (Observer System)](/docs/guides/features/observers.md): Fish-Networking features an advanced area-of-interest system that controls which clients receive updates about specific objects.
- [Modifying Conditions](/docs/guides/features/observers/modifying-conditions.md)
- [Custom Conditions](/docs/guides/features/observers/custom-conditions.md): A simple guide on how to write a custom observer condition.
- [Scene Management](/docs/guides/features/scene-management.md): 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.
- [Scene Events](/docs/guides/features/scene-management/scene-events.md): Information about FishNet's many available scene events, the order they are invoked in, and how to use them.
- [Scene Data](/docs/guides/features/scene-management/scene-data.md): Scene Data is the data types used that the user will interface with when using the SceneManager.
- [SceneLookupData](/docs/guides/features/scene-management/scene-data/scenelookupdata.md): 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.
- [SceneLoadData](/docs/guides/features/scene-management/scene-data/sceneloaddata.md): The Data Class needed for the SceneManager to know how to handle loading a scene.
- [SceneUnloadData](/docs/guides/features/scene-management/scene-data/sceneunloaddata.md): The Data Class needed for the SceneManager to know how to handle unloading a scene.
- [Loading Scenes](/docs/guides/features/scene-management/loading-scenes.md): Instructions for loading networked scenes with FishNet, both on the server and on clients.
- [Automatic Online and Offline Scenes](/docs/guides/features/scene-management/loading-scenes/automatic-online-and-offline-scenes.md): Using the DefaultScene component to automatically manage simple scene setups.
- [Unloading Scenes](/docs/guides/features/scene-management/unloading-scenes.md): Instructions for how to unload networked scenes in FishNet.
- [Scene Stacking](/docs/guides/features/scene-management/scene-stacking.md): 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.
- [Scene Caching](/docs/guides/features/scene-management/scene-caching.md): 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.
- [Scene Visibility](/docs/guides/features/scene-management/scene-visibility.md): Scene Visibility offers details of using the "Scene Condition" with the ObserverManager, and how to manage Observers in a Scene.
- [Persisting NetworkObjects](/docs/guides/features/scene-management/persisting-networkobjects.md): This page will go over details on the options available to users for persisting NetworkObjects across scene loading and unloading
- [Custom Scene Processors](/docs/guides/features/scene-management/custom-scene-processors.md): You can create a custom scene processor to handle how a scene is loaded/unloaded.
- [Addressables](/docs/guides/features/scene-management/custom-scene-processors/addressables.md)
- [InstanceFinder](/docs/guides/features/instancefinder-guides.md)
- [Addressables](/docs/guides/features/addressables.md): How to manage prefab and scene addressables with FishNet.
- [Transports](/docs/guides/features/transports.md): 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.
- [Multipass](/docs/guides/features/transports/multipass.md)
- [Prediction](/docs/guides/features/prediction.md): Prediction is the act of server-authoritative actions while allowing clients to move in real-time without delay.
- [What Is Client-Side Prediction](/docs/guides/features/prediction/what-is-client-side-prediction.md): Client-Side Prediction allows clients to perform actions in real-time while maintaining server authority.
- [Configuring PredictionManager](/docs/guides/features/prediction/configuring-predictionmanager.md): The PredictionManager is responsible for global prediction settings, and other prediction related information.
- [Configuring TimeManager](/docs/guides/features/prediction/configuring-timemanager.md): Very little of the TimeManager has to be configured for prediction.
- [Configuring NetworkObject](/docs/guides/features/prediction/configuring-networkobject.md): Setting up the NetworkObject inspector for prediction is mandatory for using prediction methods in scripts belonging to the NetworkObject.
- [Offline Rigidbodies](/docs/guides/features/prediction/offline-rigidbodies.md): In some cases you will want the player to be able to interact with non-networked rigidbodies; these require a special component.
- [Interpolations](/docs/guides/features/prediction/interpolations.md): Both the PredictionManager and NetworkObject have interpolation values, but with separate objectives
- [Creating Code](/docs/guides/features/prediction/creating-code.md): This guide provides examples of creating prediction code, understanding important aspects of the code, and leveraging it to your game.
- [Controlling an Object](/docs/guides/features/prediction/creating-code/controlling-an-object.md): Learn how to create a predicted object that the owner or server can control.
- [Non-Controlled Object](/docs/guides/features/prediction/creating-code/non-controlled-object.md): A very simple script for keeping non-controlled objects in synchronization with the prediction system.
- [Understanding ReplicateState](/docs/guides/features/prediction/creating-code/understanding-replicatestate.md): Being familiar with what each state means will help you fine-tune your gameplay on spectated objects.
- [Using States in Code](/docs/guides/features/prediction/creating-code/understanding-replicatestate/using-states-in-code.md): Understanding how to use states will greatly improve your experience when writing code for your replicate method.
- [Predicting States in Code](/docs/guides/features/prediction/creating-code/understanding-replicatestate/predicting-states-in-code.md): Due to the unpredictability of the Internet inputs may drop or arrive late. Predicting states is a simple way to compensate for these events.
- [Advanced Controls](/docs/guides/features/prediction/creating-code/advanced-controls.md): This guide supplements the basic prediction guide by showing how to introduce more complexities to your controls.
- [Custom Comparers](/docs/guides/features/prediction/custom-comparers.md): Fish-Networking generates comparers for prediction data to perform internal optimizations, but on occasion certain types cannot have comparers automatically generated.
- [PredictionRigidbody](/docs/guides/features/prediction/predictionrigidbody.md): This class provides accurate simulations and re-simulations when applying outside forces, most commonly through collisions.
- [Using NetworkColliders](/docs/guides/features/prediction/using-networkcolliders.md): Using each NetworkCollider component is the same, and can be used very similar to Unity callbacks.
- [Lag Compensation](/docs/guides/features/lag-compensation.md)
- [States](/docs/guides/features/lag-compensation/states.md)
- [Raycast](/docs/guides/features/lag-compensation/raycast.md)
- [Projectiles](/docs/guides/features/lag-compensation/projectiles.md)
- [Code Stripping (Pro Feature)](/docs/guides/features/code-stripping.md): 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.
- [Level of Detail (Pro Feature)](/docs/guides/features/level-of-detail.md): FishNet's LOD system enables a reduction in network traffic by reducing the network data sent for objects that are further away.
- [Demos](/docs/guides/demos.md)
- [Updating FishNet](/docs/guides/updating-fishnet.md): Instructions for how to update FishNet to the latest or Pro version.
- [Changes in API](/docs/guides/updating-fishnet/upgrading-api.md): 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.
- [Upgrading to FishNet Pro](/docs/guides/updating-fishnet/upgrading-to-fishnet-pro.md): Instructions for how to purchase and then install FishNet Pro in your Unity project.
- [Server Hosting](/docs/guides/server-hosting.md): Hosting is a way for players to access your game and play together.
- [Terminology](/docs/guides/server-hosting/terminology.md): Overview of key server hosting terms, comparing session-based vs persistent architectures, and outlining the roles of relays and dedicated servers.
- [Services](/docs/guides/server-hosting/services.md): A comparison of third-party hosting and relay services compatible with FishNet, including our recommended providers.
- [PlayFlow Cloud (Recommended)](/docs/guides/server-hosting/services/playflow-cloud.md): PlayFlow handles the server hosting, matchmaking, & lobbies so you can focus on your game.
- [Getting Started with PlayFlow](/docs/guides/server-hosting/services/playflow-cloud/getting-started-with-playflow.md): Step-by-step tutorial for getting up and running with PlayFlow Cloud.
- [Easy WebGL Hosting with PlayFlow](/docs/guides/server-hosting/services/playflow-cloud/easy-webgl-hosting-with-playflow.md): Simple tutorial showing how easy PlayFlow makes it to host a server for your WebGL game.
- [Getting Started with AWS](/docs/guides/server-hosting/services/getting-started-with-aws.md): A community-made guide for using AWS to host a FishNet server.
- [Moving to Fish-Networking](/docs/guides/upgrading-to-fish-net.md): Helpful tips for how to move your project from another solution to FishNet.
- [Troubleshooting](/docs/guides/troubleshooting.md): 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.
- [Technical Limitations](/docs/guides/troubleshooting/technical-limitations.md)
- [Creating Bug Reports](/docs/guides/troubleshooting/creating-bug-reports.md): A well crafted bug report will result in bugs being resolved much quicker.
- [Report Example](/docs/guides/troubleshooting/creating-bug-reports/report-example.md): This is an example of what a created bug report might look like.
- [FAQ](/docs/guides/troubleshooting/frequently-asked-questions-faq.md): Discover frequently asked questions and their answers.
