UNITAF Future
UNITAF

Caution

This site is a work in progress

This site is finished to different degrees. Feedback is welcome. Please bear in mind that most of what you see, if not everything, is still a work in progress.

Data from the live site is synced here every hour. Anything you do on this site stays here. It is not copied back to the live site until we switch over.

Discord and permissions are linked. Be careful with admin actions. Some of them also change Discord.

UNITAF members taking orders before an operation
Force Manual

The FM outlines our core skills, policies and guides to ensure every member stands ready for the mission ahead.

FM/BG-747 · v1.00

Object locality

Code
FM/BG-747
Kind
Guide
Version
v1.00 1yr ago
Views
354
Platforms
As its document
Published by
SP3 Jochem 15 Nov 2024
Last material change
v3.00 Removed Headless Clients

You are reading v1.00, an earlier version. Read the current version

Object locality

Every object in Arma has a locality: the client that owns it. This can be the server, a headless client or a player client. The locality of the object determines where the following calculations happen for that specific object:

  • Hit registration
  • Physics (vehicle steering, collisions,…)
  • AI behaviour (movment, spotting,…)

 

Why care about locality

All objects that are non-local (except for a special type called "local only" objects) have to be synchronized to all other clients to exist. This means they need to be sent to the server, and then from the server to all other clients. The longer this takes, the more “out of sync” the object becomes on other clients, causing issues like bad hit registration and teleporation.

Another thing to keep in mind is that some scripts require to be run where the object is local to work, or some only work when the locality is the server. This is the reason for the three options:

  • Global execution: run on all clients
  • Local execution: run on the client that owns the object
  • Server execution: run on the server

 

Headless clients

As stated above, AI behaviour runs on the client that owns the AI object. This explains how headless clients help achieve better server performance, as the AI calculations can be offloaded to another client.

However with this performance boost, comes a tradeoff: it takes longer to sync the object to the player clients, as the sync path is now HC<->server<->player instead of just server<->player. To minimize the impact of this, headless clients need to be run on the same physicial machine as the server, so that network latency is nearly 0.