BETA / LIVE
Underlying Arma mechanics - UNITAF Force Manual (FM)


Group

Underlying Arma mechanics



FM/BG-746 - AI communication/awareness

AI awareness

In Arma, AI awareness is handled on the group level. Each AI group acts like a hivemind, with perfect knowledge of the positions of its group members and the targets they detect.

Hit detection

When an AI unit is hit, it and its group instantly gain knowledge of the position of the attacker. This generally leads to:

  • Immediate engagement by the hit unit and its group if the attacker is in range and not already engaged.
  • Quick reaction times make the AI groups formidable in combat.

Visual spotting

The ability of the AI units to visually detect a target depends on a host of factors, including:

  • Proximity: The closer the target, the quicker the AI will notice it.
  • AI skill level: Higher-skilled AI are more adept at detecting targets.
  • Environment: Light, fog, and other environmental conditions impact visibility. NVGs or lights will assist the AI units.
  • Target Stance: Standing targets are easier for AI to detect than prone ones.
  • Weapon Scope: AI units with scoped weapons are able to spot targets from greater distances.

Certain elements do not affect AI spotting capabilities, including:

  • Laser pointers or lights on weapons.
  • Uniforms or vests, including ghillie suits.
  • Tracers from fired rounds.
FM/BG-747 - Object locality

In Arma, all objects have a locality, which refers to the client in possession. It can be the server, a headless client (HC), or a player client. Locality will determine where calculations for that particular object run, including:

  • Hit registration: Whether shots land and do their damage.
  • Physics: How vehicles steer, collide, and interact with the physical world.
  • AI Behaviour: Handles movement, spotting and decision-making.

Why locality matters

Non-local objects (except for "local only" objects) have to be synchronised across all clients to exist. Synchronisation involves sending information to the server and redistributing it to other clients. Delays in doing so may lead to:

  • Bad Hit Registration: Shots not registering or registering wrong.
  • Teleportation: Objects or units seemingly jump around.

Some scripts also need to be executed only where appropriate, that is:

  • Global Execution: Runs on every client at the same time.
  • Local Execution: Runs only on the client which owns the object.
  • Server Execution: Runs only on the server.
FM/BG-833 - Headless Clients

Headless clients reduce the load on the server CPU by offloading AI calculations to the client, allowing the server to focus solely on game logic. AI calculations are offloaded to the client which owns the AI object.

In UNITAF we are using Zulu Headless Client (ZHC) mod, that allows the Game Masters to be better informed about the performance impact their mission has. ZHC uses multiple ways of communicating the performance hit.

On the bottom right of the in-game map every player has an information about the number of active HC, and the server performance:

  • The information contains the name of the Headless Clients, its performance graded in frames per second (fps), and how many local units have been transferred to it.
  • The information is colour coded:
    • Green text indicates that the HC is performing well, and above 30 fps.
    • Yellow text indicates that the HC is struggling, and its performance is between 20 fps and 30 fps.
    • Orange text indicates that the HC is performing unwell, and its performance is between 10 fps and 20 fps.
    • Red text indicates that the HC is performing very bad, and its performance is below 10 fps.

Additionally the Game Masters have an access to the per AI group information displayed above the AI groups if the Debug Mode is activated:

  • To Toggle Debug Mode you have to press a key combination. By default it's “Ctrl+]
  • The information is colour coded. The colours correspond with what the unit is offloaded to:
    • Yellow icon indicates a group that hasn't been transferred yet.
    • Red icon indicates a group that is transferred to the server.
    • Green icon indicates a group that is transferred to the Headless Client.
    • Pink icon indicates a group that is local.

Tradeoffs of Using HCs

While HCs offer better performance, they introduce some additional synchronization latency. The sync path now goes through HC ↔ server ↔ player, which may cause delays. To alleviate this HCs should be run on the same physical machine as the server to reduce network latency.

FM/BG-776 - Performance

The single most important aspect of your role as a Zeus is to ensure both a playable experience for the players and exceptional server performance. Achieving this requires careful resource management, particularly regarding objects and AI. The simplest way to maintain good performance is to minimise objects and AI that are not visible or within the effective range of players. Here's how and why:

Eden Editor Best Practices
ActionReason
Use Simple Objects & disable simulation for non-interactive props (walls, set pieces).Saves processing power by skipping physics on objects players won’t interact with.
Keep object count as low as possible.Every object consumes resources, even unused ones. Fewer objects = smoother performance.
Avoid repeatable scripts where possible.Constant loops and triggers add server load. Use one-time triggers or static solutions.
Avoid Dynamic Simulation if players have long view distances (CAV, Air, snipers).Objects may pop in/out unrealistically at long range, breaking immersion.
In-Game Best Practices
ActionReason
Spawn AI gradually rather than all at once.Prevents sudden lag spikes and server desync.
Wait for AI to transfer to HC (Headless Client).Offloads AI processing from the main server, keeping performance stable.
Delete dropped weapons & corpses once players move on.They still consume resources as physical objects — clearing them keeps things smooth.
Group AI intelligently (2–3 groups instead of 20 single units).Each group has its own overhead — fewer groups = less server strain.
Limit total AI alive to ~2× player count (max).Keeps AI numbers manageable, avoiding lag and unplayable firefights.
Avoid excessive fragmentation assets (AI grenade launchers, autocannons).Fragment calculations are extremely costly for the server.
Minimize mobile scripts (e.g., sound emitters on moving vehicles).These track constantly and hurt performance if overused.
This page generated 1.19MB in 0.1318 seconds.