Skip to content
pluginv1.0

ScarNet

Multiplayer automation and debugger.

Make any actor multiplayer-ready in one click, replicate variables and fire network events without touching an RPC, and find out why your netcode is broken with the in-game ScarNet Debugger. Blueprint-first, C++ compatible, and it works with Dedicated, Listen, LAN, Steam and EOS.

Engine support
Unreal Engine 5.2
Version
1.0
Backends
Dedicated, Listen, LAN, Steam, EOS

What you get

  • Make any actor multiplayer-ready with one component
  • Replication profiles for Character, Weapon, Projectile, Pickup and more
  • Replicate variables and fire network events without writing RPCs
  • In-game debugger with an Issues tab that names the problem and the fix
  • Blueprint-first, C++ compatible

What ScarNet does

Multiplayer in Unreal is 10% gameplay and 90% "why isn't this replicating." ScarNet does two things about that.

  • Automates the boring, error-prone setup. Add one component, pick a profile, and your actor is replicated with sane update rates, priority, dormancy, relevancy and ownership. Replicate variables and fire network events straight from Blueprint.
  • Tells you what is broken and how to fix it. Press F9 in game for a live debugger that inspects every networked actor and, most importantly, an Issues tab that names the problem in plain English with a suggested fix.

It does not replace Unreal networking. It sits on top of the engine replication layer, so it works with any Online Subsystem and any server type with no backend-specific code.

The golden rule of this plugin: when something does not sync, do not guess. Press F9, read the top red line on the Issues tab, and do what it says. That loop is the whole point of ScarNet.

Install and enable

  1. 01Copy the ScarNet folder into your project Plugins/ directory.
  2. 02Open the project. If prompted to rebuild modules, click Yes.
  3. 03Confirm it is on under Edit > Plugins > Networking > ScarNet. It is enabled by default.
  4. 04Tune anything you like under Project Settings > Plugins > ScarNet.

C++ is not required. Everything in this guide is done with Blueprint nodes and the Details panel. The plugin is fully C++ compatible too, but you never have to open a .cpp file.

Quick start in 4 steps

#Do thisResult
1Open your actor Blueprint. Add Component ScarNet Ready.The actor can now be made multiplayer-ready.
2In the component Details, pick a Replication Profile (Character, Weapon, Projectile, Pickup and so on).On Begin Play the actor is replicated with tuned settings for that kind of actor.
3Use the ScarNet nodes: Register / Set Replicated Variable, Broadcast / Send To Server / Send To Owner, MP Spawn / Interact.Variables sync and events fire on the right machines automatically.
4Play with 2 or more players and press F9.The ScarNet Debugger opens and shows any problems, with fixes.

Call setup on the server, at runtime. Add the component, apply profiles and register variables from Begin Play (or later) on the server, not in a Construction Script and not on a client. Components added on a client do not replicate. ScarNet warns you in the log if you get this wrong.

Replication profiles

A profile is a curated bundle of networking settings for a kind of actor. Pick the closest one and ScarNet applies proven defaults. Choose Custom to set them by hand. All values are editable per project in Project Settings > ScarNet.

ProfileUse it forWhat it tunes
CharacterPlayer pawnsHigh update rate, replicated movement, always awake
ProjectileBullets, rockets, grenadesHigh rate plus replicated movement while alive
WeaponEquipped weaponsMedium rate, relevant through the owner
InteractableDoors, buttons, levers, switchesDormant until used, then flushed
PickupWorld pickupsLow rate, dormant until grabbed
InventoryPrivate per-player stateOnly relevant to the owning player
AIAI pawnsMedium rate, replicated movement
CustomAnything elseYou set every value on the component

Movement replication is on by default. The ScarNet Ready component forces Replicate Movement on, and fixes a Static root that would silently block it. Moving actors just work. Turn it off per component only for truly static objects.

The Blueprint nodes

All nodes handle authority checks and server routing for you. They work on any machine and any net mode. Call them where it reads naturally and ScarNet does the right thing.

Setup

NodeWhat it does
Make Multiplayer ReadyAdds a ScarNet Ready component (if missing) and applies a profile. Great for actors you spawn at runtime.

Replicated variables

NodeWhat it does
Register Replicated VariableCreates a synced variable with a default value. Replicates to everyone, including late joiners.
Set Replicated VariableWrites it. Automatically routed to the server when called on a client. Fires the change event.
Get Replicated VariableReads the local copy anywhere.
Unregister Replicated VariableRemoves it everywhere (server only).

To react to a change, select the ScarNet Ready component and bind On Replicated Variable Changed. It fires on the server and every client. Use the As Bool / As Int / As Float / As Vector nodes to unpack the value.

Network events

NodeRuns on
Send To ServerThe server only (a client asks the server to do something).
Broadcast EventThe server and every client (explosions, round start, global FX).
Send To OwnerThe client that owns the target actor (ammo, private messages).
Network EventAny of the above. You choose the scope on a dropdown, including Run Locally.

Receive events by binding On Network Event on the target ScarNet Ready component, then branch on the event name.

Smart actors and interaction

NodeWhat it does
MP Spawn ActorSpawns on the server from anywhere and replicates. On the server it returns the actor; on a client it returns None and the actor arrives via replication a moment later.
MP Destroy ActorDestroys on the server from anywhere (client requests obey the security settings).
MP InteractInteracts with an actor that has a ScarNet Interactable component. Works from any machine and is validated (distance-checked) on the server.

MP Spawn returns None on clients, and that is correct. The actor is created on the server and replicated down, so it does not exist on the calling client yet. Do not try to use the return value on a client. React to the actor in its own Begin Play instead.

Auto variables and the "my RepNotify never fires" trap

ScarNet only sends a variable when its value actually changes, which saves bandwidth. That also means if you set a variable to the value it already has, nothing replicates and the change event does not fire. This is the single most common multiplayer head-scratcher, so ScarNet makes it visible.

  • The Variables tab shows a No-Change Sets counter climbing.
  • The Issues tab warns: "Variable X was set N times to the value it already had, so it never replicated and its change event never fired."
  • If you genuinely need the callback to fire anyway, tick Force Notify on Set Replicated Variable.

If a client callback "never runs", 99% of the time the value simply is not changing on the server. Check the No-Change Sets column first before suspecting replication itself.

The ScarNet Debugger (F9)

Press F9 in any play session, or run the ScarNet.Debugger console command. It opens straight to a status banner and the Issues tab: the answer, not a wall of data. The panel is draggable (grab the header) and resizable (orange corner).

Read the banner first

Banner colourMeansDo
AmberYou are in Standalone, so no networking is running.Set Number of Players to 2 or more (or Net Mode: Play As Client) in the Play dropdown.
RedProblems were found.Open the Issues tab (it is already in front) and read the top line.
GreenNo replication problems detected.Carry on. Move and interact; issues appear the moment they happen.

The five tabs

TabShows
IssuesAuto-detected problems, most severe first, each with a suggested fix. Start here.
ActorsPer actor: Replicates, Movement, Activity (really moving?), Last Sent, owner, authority, dormancy, update rate, relevancy.
VariablesEvery registered variable: value, updates, and No-Change Sets.
EventsServer / Client / Multicast RPC history with Sent, Received, Failed and Dropped.
HealthPing, packet loss, bandwidth, connections, active vs dormant actors, saturation.

Debug from any client. Most problems are only visible on the server. When you open the debugger on a client, ScarNet streams the server findings down to you, so the Issues, Events and Variables tabs match the server. Text is clipped to fit, so hover any cell to read the full line.

Bottom bar: Ownership Overlay draws colour-coded boxes in the world (green = server, blue = client, yellow = shared, red = problem). Save Report writes a full diagnostics text file to Saved/ScarNet/ and the on-screen message shows the exact path. Clear Events wipes the RPC history.

Troubleshooting: symptom to fix

The Issues tab detects all of these automatically. This table is the same knowledge for offline reference.

SymptomLikely causeFix
Actor says Replicates: Yes but is frozen on clientsMovement replication is off (Movement: No).Enable Replicate Movement. ScarNet forces it on by default.
Nothing replicates at all; only 1 windowYou are in Standalone / 1 player.Play with 2 or more players, or Net Mode: Play As Client.
Client RepNotify / change event never firesThe value was set to what it already was.Change the value, or tick Force Notify. Check No-Change Sets.
Spawned actor only appears in one windowIt was spawned on a client (client authority).Use MP Spawn Actor so it spawns on the server.
Send To Owner does nothing or logs a failureThe actor has no owning connection.Set the actor Owner to a player controller or pawn.
Actor exists but its state never updatesRuntime-spawned with dormancy Initial, or moving while Dormant All.Use an Awake profile, or Flush Net Dormancy on change.
Interactable state does not sync to othersOnly Relevant To Owner is on.Turn it off. The Interactable profile already sets relevancy.
Values set on a client take no effectCalled Set on a client with client writes disabled.Server-authoritative by design. Enable client writes in Settings if intended.

Testing multiplayer on one PC

  • Quick (PIE): in the Play dropdown set Number of Players to 2 and Net Mode to Play As Client. You get two windows with a hidden dedicated server underneath.
  • Realistic: open Tools > ScarNet > ScarNet Debugger and use Dedicated Server Testing. One click launches a dedicated server (or listen host) plus N client processes of your current map, each with its own log in Saved/Logs.

Put movement behind Switch Has Authority. When you test replication, only the server should drive the change (move the actor, set the variable). If both machines do it locally, both windows look right and you have proven nothing.

Settings worth knowing

Project Settings > Plugins > ScarNet:

  • Debugger: hotkey (F9 by default), refresh interval, overlay interval, max rows.
  • Security: allow or deny client spawn, destroy and variable-write requests. All validated server-side.
  • Profiles: every value each built-in profile applies, editable per project.
  • Server Testing: default client count, dedicated vs listen, extra launch parameters.

Quick FAQ

QuestionAnswer
Does it work with Steam / EOS?Yes, any Online Subsystem. ScarNet has no backend-specific code.
Does it run in packaged / shipping builds?Yes. The debugger uses runtime Slate, so F9 works in packaged games. Not on dedicated servers, where you use ScarNet.Report instead.
Is it heavy?No. Nothing ticks while idle; the debugger costs nothing when closed and streams to clients only while open.
Can I still write my own replication?Absolutely. ScarNet sits on top of the Unreal system, so mix and match freely.

Stuck on something?

We answer every serious message ourselves. Discord is the fastest way to get an answer from the person who built the plugin.