Skip to content
Back to skills

Unity Netcode

ASecurity

Unity Netcode for GameObjects (NGO) — NetworkBehaviour, NetworkVariable, RPCs (Server/Client/Owner), client-side prediction, lag compensation, Multiplay/Relay/Lobby integration. USE WHEN: building multiplayer (co-op, competitive, MMO-lite), network authority decisions, anti-cheat, matchmaking + relay. DO NOT USE FOR: P2P state-sync without NGO (Mirror, Photon — out of scope); ECS-native networking (NetCode for Entities — adjacent stack).

  • 31 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 8, 2026
ai-agentsrustgo

Works with

  • cli

Security analysis

A100/100

Scanned September 8, 2026

npx -y skills add claude-dev-suite/claude-dev-suite --skill unity-netcode --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Unity Netcode?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Unity Netcode
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/claude-dev-suite-unity-netcode/badge)](https://www.skillsdirectory.com/skills/claude-dev-suite-unity-netcode)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: unity-netcode
description: |
  Unity Netcode for GameObjects (NGO) — NetworkBehaviour, NetworkVariable,
  RPCs (Server/Client/Owner), client-side prediction, lag compensation,
  Multiplay/Relay/Lobby integration.

  USE WHEN: building multiplayer (co-op, competitive, MMO-lite), network
  authority decisions, anti-cheat, matchmaking + relay.

  DO NOT USE FOR: P2P state-sync without NGO (Mirror, Photon — out of scope);
  ECS-native networking (NetCode for Entities — adjacent stack).
allowed-tools: Read, Grep, Glob, Write, Edit
---

# Unity Netcode for GameObjects

## Architecture

```
┌────────────┐         ┌───────────┐
│   Client   │  RPCs   │  Server   │  authoritative
│            │◀───────▶│ (or Host) │  state — broadcasts via
│ predicts   │  Vars   │           │  NetworkVariable + RPC
└────────────┘         └───────────┘
```

Use **server-authoritative**: never trust the client for damage, currency, or movement validation.

## NetworkBehaviour basics

```csharp
public class PlayerController : NetworkBehaviour {
    public NetworkVariable<int> Health = new(100,
        NetworkVariableReadPermission.Everyone,
        NetworkVariableWritePermission.Server);

    [Rpc(SendTo.Server)]
    public void FireRpc(Vector3 origin, Vector3 dir) {
        if (!IsServer) return;
        // server-side validation + spawn projectile
        SpawnProjectileServerSide(origin, dir, OwnerClientId);
    }

    [Rpc(SendTo.NotMe)]
    public void OnHitEffectRpc(Vector3 pos) {
        // VFX on every client except sender
    }
}
```

## RPC targets (Unity 6 attribute syntax)

| `SendTo` | Use |
|---|---|
| `Server` | Client → server requests |
| `Owner` | Server → owning client only |
| `NotOwner` | Server → all except owner (for own client prediction) |
| `Everyone` | Server → all clients (state broadcast) |
| `NotMe` | Common for VFX/SFX echo |
| `ClientsAndHost` | Mostly for host-aware logic |

## Client-side prediction

1. Client samples input → applies move locally + sends to server.
2. Server validates → broadcasts authoritative state.
3. Client reconciles: if server state diverges from prediction, replay inputs from divergence frame.

NGO doesn't ship a prediction system out-of-the-box — you build one with `NetworkTransform.AuthoritativeMode = Owner` + custom interpolation, or move to **NetCode for Entities** for first-class prediction.

## Lag compensation (hit-scan)

When server processes a fire RPC:
1. Read client RTT → rewind world state to `now - rtt/2`.
2. Raycast against rewound colliders.
3. Apply damage as if the shot landed at that historical state.

Implement via a ring buffer of past Transform/Collider snapshots (e.g. 1s @ 20Hz).

## Unity Gaming Services integration

- **Relay** — NAT punchthrough; host gets a Join Code that clients use.
- **Lobby** — pre-game rooms with metadata; passes Relay Join Code to clients.
- **Matchmaker** — skill/region-based queue; spins up Multiplay servers.
- **Multiplay** — dedicated server hosting; build Linux server build, deploy via UGS dashboard.

## Anti-patterns

| Anti-pattern | Fix |
|---|---|
| Client-authoritative damage | Always validate on server |
| `NetworkVariable<T>` for every transform field | Use `NetworkTransform` or batched update RPC |
| RPCs for high-frequency state | Use NetworkVariable (delta-compressed) or unreliable channel for visuals |
| Singleton `NetworkManager` accessed before spawn | Subscribe `NetworkManager.OnServerStarted`/`OnClientConnectedCallback` |
| Mixing host-only logic with `IsServer` | Use `IsHost` for host-specific code paths |
| Not pooling spawned NetworkObjects | NGO supports prespawned pools — use them |

## Production checklist

- [ ] All damage / economy / inventory mutations server-side only
- [ ] Lag compensation for hit-scan weapons
- [ ] NetworkObject pools for projectiles / spawned entities
- [ ] Relay + Lobby tested on real network (cellular, restrictive NAT)
- [ ] Server build CI pipeline (Linux IL2CPP) → Multiplay deploy
- [ ] Client/server version negotiation on connect — reject mismatches
- [ ] Anti-cheat: server validates inputs, throttles RPC rate

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…