Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
josiahsiegel avatar

Unity Networking

  • 77 installs
  • 50 repo stars
  • Updated June 18, 2026
  • josiahsiegel/claude-plugin-marketplace

Helps with ai & agent building tasks.

About

unity-networking is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.

  • unity-networking
  • AI & Agent Building
  • AI-coding skill

Unity Networking by the numbers

  • 77 all-time installs (skills.sh)
  • +5 installs in the week ending Aug 2, 2026 (Skillselion tracking)
  • Ranked #5,386 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill unity-networking

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs77
repo stars50
Last updatedJune 18, 2026
Repositoryjosiahsiegel/claude-plugin-marketplace

What it does

Helps with ai & agent building tasks.

Files

SKILL.mdMarkdownGitHub ↗

Unity Networking and Multiplayer

Overview

Reference for implementing multiplayer systems and backend services in Unity. Covers the major networking frameworks, authority models, common multiplayer patterns, and Unity Gaming Services integration.

Networking Framework Comparison

FrameworkTypeBest ForLicense
Netcode for GameObjects (NGO)Client-hosted / DedicatedUnity-native projects, UGS integrationFree (Unity)
MirrorClient-hosted / DedicatedOpen-source alternative, mature ecosystemMIT
Photon PUN 2Cloud-hostedQuick prototyping, room-based gamesFree tier + paid
Photon Fusion 2Cloud/Self-hostedCompetitive games, tick-based simulationFree tier + paid
Fish-NetClient-hosted / DedicatedPerformance-critical, Mirror alternativeMIT

Netcode for GameObjects (NGO)

Setup

1. Install via Package Manager: com.unity.netcode.gameobjects 2. Add NetworkManager to a scene GameObject 3. Select transport (Unity Transport is default) 4. Mark networked prefabs with NetworkObject component 5. Register prefabs in NetworkManager's prefab list

Core Components

ComponentPurpose
NetworkManagerManages connections, spawning, scene management
NetworkObjectRequired on all networked GameObjects
NetworkBehaviourBase class for networked scripts (replaces MonoBehaviour)
NetworkVariable<T>Synchronized variable with ownership/permissions
NetworkTransformAutomatic position/rotation sync
NetworkAnimatorAutomatic Animator parameter sync

RPCs (Remote Procedure Calls)

public class PlayerCombat : NetworkBehaviour
{
    NetworkVariable<int> _health = new(100,
        NetworkVariableReadPermission.Everyone,
        NetworkVariableWritePermission.Server);

    [ServerRpc]
    void AttackServerRpc(ulong targetId)
    {
        // Runs on server - validate and apply damage
        if (!IsServer) return;
        var target = NetworkManager.SpawnManager.SpawnedObjects[targetId];
        target.GetComponent<PlayerCombat>().TakeDamage(10);
    }

    [ClientRpc]
    void PlayHitEffectClientRpc(Vector3 position)
    {
        // Runs on all clients - visual feedback only
        Instantiate(hitVFX, position, Quaternion.identity);
    }

    void TakeDamage(int amount)
    {
        _health.Value -= amount;
        PlayHitEffectClientRpc(transform.position);
    }
}
RPC TypeDirectionUse For
[ServerRpc]Client -> ServerPlayer actions, requests
[ClientRpc]Server -> All ClientsVFX, sound, UI updates
[ClientRpc(SendTo.Owner)]Server -> Owner ClientOwner-specific feedback

NetworkVariable Permissions

// Server-writable (default) - authoritative state
NetworkVariable<int> score = new(0, writePerm: NetworkVariableWritePermission.Server);

// Owner-writable - client-authoritative (use sparingly)
NetworkVariable<Vector3> cursorPos = new(writePerm: NetworkVariableWritePermission.Owner);

Use OnValueChanged callback for UI reactions:

_health.OnValueChanged += (oldVal, newVal) => healthBar.value = newVal;

Authority Models

ModelDescriptionWhen to Use
Server-AuthoritativeServer validates all actions, clients are thinCompetitive, anti-cheat critical
Client-AuthoritativeClients own their state, server relaysCooperative, trust-based
Client Prediction + Server ReconciliationClient predicts locally, server correctsFPS, fast-paced action
Relay / Listen ServerOne player hosts, others connect via relayCasual, small lobbies

Server-Authoritative Flow

Client: Press "Attack" -> Send ServerRpc(targetId)
Server: Validate range/cooldown -> Apply damage -> Update NetworkVariable
Server: Send ClientRpc for VFX
All Clients: Play hit effect

Never trust client data. Validate positions, cooldowns, ammunition, and line-of-sight on the server.

Common Multiplayer Patterns

Lobby System

1. Player authenticates (UGS Auth / custom)
2. Player creates or joins lobby (UGS Lobby / custom)
3. Lobby fills -> host starts game
4. Relay allocation for NAT traversal (UGS Relay)
5. All players connect to relay
6. NetworkManager starts host/client

Spawn and Despawn

// Server-side spawning
var instance = Instantiate(prefab, spawnPoint, Quaternion.identity);
instance.GetComponent<NetworkObject>().SpawnWithOwnership(clientId);

// Server-side despawning
networkObject.Despawn(); // Removes from all clients

Scene Management

Use NetworkManager.SceneManager.LoadScene("GameScene", LoadSceneMode.Single) for synchronized scene loading. Only the server/host should call this.

REST API and WebSocket Integration

REST API (UnityWebRequest)

async Awaitable<T> GetAsync<T>(string url)
{
    using var request = UnityWebRequest.Get(url);
    request.SetRequestHeader("Authorization", $"Bearer {token}");
    await request.SendWebRequest();
    if (request.result != UnityWebRequest.Result.Success)
        throw new Exception(request.error);
    return JsonUtility.FromJson<T>(request.downloadHandler.text);
}

Use JsonUtility for simple types or Newtonsoft.Json (com.unity.nuget.newtonsoft-json) for complex serialization. Always use using with UnityWebRequest to prevent memory leaks.

WebSocket (NativeWebSocket / WebSocketSharp)

For real-time non-game communication (chat, notifications), use a WebSocket library. NativeWebSocket works across platforms including WebGL.

Unity Gaming Services (UGS)

ServicePackagePurpose
Authenticationcom.unity.services.authenticationAnonymous/platform sign-in
Lobbycom.unity.services.lobbyRoom creation, matchmaking
Relaycom.unity.services.relayNAT traversal for P2P
Cloud Savecom.unity.services.cloudsaveServer-side player data
Leaderboardscom.unity.services.leaderboardsRanked scoreboards
Economycom.unity.services.economyVirtual currencies, purchases
Analyticscom.unity.services.analyticsPlayer behavior tracking
Matchmakercom.unity.services.matchmakerSkill-based matchmaking

Initialize UGS before using any service:

await UnityServices.InitializeAsync();
await AuthenticationService.Instance.SignInAnonymouslyAsync();

Firebase and PlayFab

Use Firebase for indie/mobile projects needing Realtime Database, Cloud Functions, and FCM push notifications. Use PlayFab for LiveOps-heavy games needing player segmentation, A/B testing, and automated rule processing. Both provide Unity SDKs via their respective download pages.

Additional Resources

Reference Files

  • `references/netcode-advanced.md` -- Client prediction and reconciliation implementation, interest management, network LOD, bandwidth optimization, custom serialization, transport layer configuration
  • `references/backend-services.md` -- Detailed UGS setup walkthroughs, Firebase/PlayFab integration patterns, REST API architecture, authentication flows, leaderboard and economy implementation

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.