Skip to content

Networking Compatibility

Anomaly uses a versioned, encrypted messaging layer between modded clients and Anomaly-enabled servers. Players and most mod authors do not need to parse packets, choose security settings, or depend on the underlying transport format.

When an Anomaly client joins an Anomaly server:

  1. The client and server perform an asymmetric handshake before gameplay state is loaded.
  2. The server verifies that the client controls its local Anomaly identity.
  3. The server assigns the player their stable @anomaly ID.
  4. The client and server confirm they are using compatible Anomaly networking versions.
  5. If compatibility checks fail, the connection is rejected cleanly before the player enters the round.

Vanilla clients cannot complete this handshake, and Anomaly clients cannot join vanilla servers.

Mod authors normally interact with networking through public APIs:

  • Client side: Anomaly.Client.Api.Networking.AnomalyMessaging.
  • Server side: Anomaly.Server.Networking.AnomalyMessaging.
  • Shared contracts: IAnomalyMessage in Anomaly.Shared.dll.

Define a message once in a shared assembly, register it on both sides, and send it through AnomalyMessaging. Anomaly handles routing, encryption, replay protection, and version checks.

See Custom Networking for the supported mod-facing workflow.

Each custom message declares a MessageChannel so the transport knows what delivery guarantees you need.

ChannelUse for
ReliableOrderedCommands, one-shot events, state changes that must arrive in order.
UnreliableHigh-frequency updates where occasional loss is acceptable.
SequencedFrequent state where only the newest update matters.
ReliableSequencedReliable state where stale updates should be skipped.
ReliableUnorderedReliable messages that do not need ordering.

If you are unsure, start with ReliableOrdered and move to a lighter channel only for high-frequency data.

Anomaly clients and servers must use compatible networking versions. If they do not, the connection is rejected with a version mismatch instead of failing later during gameplay.

For players, the fix is to update the Launcher or join a server using the same Anomaly release. For server operators, keep Anomaly.Server.dll and Anomaly.Shared.dll from the same release bundle.

Asset Lifecycle.