vedaloivdocs

Multiplayer

PurrNet Multiplayer Addon

Documentation for v1.6.0Optional addonPurrNet v1.22.0FBSystem v1.6.0

Add host-client co-op for 2 to 4 players to FBSystem with the optional FBSystemPurrNet addon: owner-authoritative movement, synced animator and foot planting, item equip, pickup and drop, and networked world items, wired by a dedicated Setup Wizard.

On this page
  1. What the addon does
  2. Requirements
  3. 1. Install PurrNet and the addon
  4. 2. PurrNet Setup Wizard
  5. Step 1: Scene Setup
  6. Step 2: Select Player
  7. Step 3: Network Player
  8. Step 4: World Items
  9. Step 5: Validation
  10. 3. Networked world items
  11. What gets synchronized
  12. Not included by design
  13. Testing host & clients
  14. Host test in the editor
  15. Remote client test
  16. Troubleshooting

What the addon does#

An optional package in Assets/FBSystemPurrNet/ that adds host-client co-op to any FBSystem scene. It does not depend on FishNet and does not change the base package.

  • A 5-step Setup Wizard (Tools ▸ FBSystem ▸ PurrNet ▸ Setup Wizard) builds the scene, converts the player and world items, and validates the result. Every step is idempotent: existing objects are reused.
  • PurrNetPlayerBridge (namespace FBSystem.PurrNet) replicates movement, animator parameters, look pitch, the foot planting drive state and item slots.
  • Item sync: equip and unequip by slot, pickup and drop with request and confirm round trips, revision gates and automatic reconcile on divergence.
  • A prepared test scene, player prefab and network prefab collection are included.

Requirements#

RequirementVersionNotes
FBSystemv1.6.0base asset must already be in the project; add-on packages from older versions do not compile against 1.6
PurrNetv1.22.0install before importing FBSystemPurrNet; PurrNet is not bundled in the addon
Unity6000.5.0+ (Unity 6.5)same as the base asset
Render PipelineURPinherited from the base asset (demo + FPCutter)

1. Install PurrNet and the addon#

  1. In the Package Manager, choose Add package from git URL and add https://github.com/PurrNet/PurrNet.git?path=/Assets/PurrNet#v1.22.0.
  2. Import the optional FBSystemPurrNet addon folder or package.
  3. Open the scene you want to make multiplayer-ready.

2. PurrNet Setup Wizard#

Menu: Tools ▸ FBSystem ▸ PurrNet ▸ Setup Wizard. The wizard has five steps with a progress bar, < Back and Next > buttons, and Finish Setup on the last step. To run only the scene part, use Make Scene PurrNet Ready from the same menu. The wizard does not change core files under Assets/FBSystem.

Step 1: Scene Setup#

Creates or reuses the PurrNetNetworkManager with UDP transport on port 5000, a PlayerSpawner, network prefabs and rules, and an EventSystem. It also adds the FBSystemConnectionHUD with Start Host, Start Client and Disconnect buttons. Existing objects are reused.

Step 2: Select Player#

Pick the FBSystem player GameObject in the scene. The wizard uses it as the source for the network player.

Step 3: Network Player#

Converts the scene player into Assets/FBSystemPurrNet/Testing/FBSystemPurrNetPlayer.prefab. The prefab gets the bridge and an owner-authoritative NetworkTransform. The scene player is replaced by SpawnPoint1 to SpawnPoint4, and the PlayerSpawner is wired to the prefab. The bridge replicates the animator blend parameters itself with remote smoothing. The wizard does not add PurrNet's stock NetworkAnimator and removes one left over from an earlier run.

Individual action: Tools ▸ FBSystem ▸ PurrNet ▸ Setup Network Player.

Step 4: World Items#

Converts the player's WorldItem prefabs to *_Net variants under Assets/FBSystemPurrNet/Testing/WorldItems/, registers them as network prefabs and fills the bridge's networkWorldItemPrefabs list. For a manual list, use Tools ▸ FBSystem ▸ PurrNet ▸ Setup Networked World Items.

Step 5: Validation#

Final health check: the NetworkManager, the connection HUD, the player prefab, the spawner wiring, the world items and the EventSystem. Fix any warnings, then press Finish Setup.

Press Play and use the FBSystemConnectionHUD buttons (Start Host / Start Client).

3. Networked world items#

Menu: Tools ▸ FBSystem ▸ PurrNet ▸ Setup Networked World Items opens the drag-and-drop window for a manual list. The window:

  • Creates *_Net WorldItem variants.
  • Registers them as PurrNet network prefabs.
  • Fills the bridge's networkWorldItemPrefabs list.

A pickup despawns the server object. A drop spawns a networked WorldItem that all clients see.

What gets synchronized#

WhatHow
Root position & rotationPurrNet NetworkTransform, owner-authoritative
Animator parametersbridge SyncVars with remote smoothing; no stock NetworkAnimator
Look pitchnetworked for camera-dependent remote IK
Foot plantingremote feet plant from the owner's synced drive state (SetExternalDriveState)
Equip / unequipslot sync with revision gates and automatic reconcile on divergence
Item pickup & droprequest and confirm round trips; pickup despawns the server object, drop spawns a networked WorldItem for all clients
Health (PlayerVitals)not synchronized
Camera & inputlocal-only camera ownership and owner-only local input
Server sanity checksmovement validation, a heuristic and not anti-cheat

Not included by design#

Testing host & clients#

The addon ships a prepared test setup, and its scene is already in Build Settings:

  • Scene: Assets/FBSystemPurrNet/Testing/Demo.unity
  • Player: Assets/FBSystemPurrNet/Testing/FBSystemPurrNetPlayer.prefab
  • Network prefab collection: Assets/FBSystemPurrNet/Testing/FBSystemPurrNetPrefabs.asset

Host test in the editor#

  1. Open Demo.unity. It must contain PurrNetNetworkManager with UDP transport, the PlayerSpawner and the network prefabs.
  2. Press Play and click Start Host on the HUD. A player spawns at a spawn point.
  3. Verify movement, jump, sprint, crouch, root rotation, remote animator state, remote look pitch and remote foot placement. The remote player must not process local input.
  4. Switch items (number keys, Q, or scroll) and verify that equip and unequip sync to the other instance. Item use stays local.
  5. Disconnect the client and check for ghost players or items.

Remote client test#

  1. Recommended for iteration: add a Multiplayer Play Mode virtual player.
  2. Alternatively, build the scene for Windows and start the build as a client with the launch argument -purrnet-client 127.0.0.1:5000, or enter the address and port in the HUD and click Start Client.
  3. Repeat the same verification as above across both instances.

Troubleshooting#

SymptomFix
No player spawns, or the spawner reports no player prefabRun the Network Player step again so PlayerSpawner points to FBSystemPurrNetPlayer.prefab.
Spawner has no spawn pointsRun the Network Player step again. It creates SpawnPoint1 to SpawnPoint4 if they are missing.
Items not visible to other playersRun the World Items step so the bridge's networkWorldItemPrefabs list is filled with *_Net variants.