← modperf · analyzed mods

Sentinel Enforcer

Sentinel Enforcer Server-side event reporter for DayZ - real-time, structured, HMAC-authenticated events into the dayz.fyi platform. A server-admin mod: players see no new content. What you get Live event feed - sessions, combat, chat, item pickups, vehicles, building and raid events, locks - structured and queryable on dayz.fyi within seconds, across all your servers. Server health - frame time, freezes and… (more)

Sentinel Enforcer Server-side event reporter for DayZ - real-time, structured, HMAC-authenticated events into the dayz.fyi platform. A server-admin mod: players see no new content. What you get Live event feed - sessions, combat, chat, item pickups, vehicles, building and raid events, locks - structured and queryable on dayz.fyi within seconds, across all your servers. Server health - frame time, freezes and restart-cycle trends on every 30-second heartbeat, so you can see when your server stutters and how hard. Optional anti-cheat signals - observe-only inputs to the dashboard's review tools. Raw observations only; you decide. Methods and thresholds are deliberately not documented publicly. Take-action (opt-in) - kick or message a player from the dashboard over the mod's own connection; no RCON credentials needed. Add-ons for DayZ-Expansion (Market / Groups / Hardline / Quests), VPPAdminTools, CodeLock and BreachingCharge - separate Workshop items; subscribe only to what your server runs. Install (server admin) Add the server on dayz.fyi first. Sign in at dayz.fyi, open your community page (first time? create your community from the dashboard - one click), click Add server, name it. You get a bootstrap token (sntl_v1. followed by a long string) and a ready-to-paste config.json snippet. Install the mod. Subscribe, copy @SentinelEnforcer/ into your server root, drop keys/sentinel_enforcer.bikey into keys/. Paste the token. Save the snippet as <profile>/SentinelEnforcer/config.json. That one line is the whole setup: it tells the mod which server on your community it reports for, and it is what signs the upload. Every other setting has a default. {"BootstrapToken": "sntl_v1.YOUR-TOKEN-HERE"} Launch with -serverMod=@SentinelEnforcer. The server comes up already linked - your setup page on dayz.fyi flips to Connected on the first heartbeat. (Add -doLogs -adminLog if you also want DayZ's own admin log files - not required.) Already booted the mod before adding the server on the site? Then use the claim-code fallback: the mod registered itself and wrote a one-time claim code to <profile>/SentinelEnforcer/claim.txt (it is in the server log too) - paste that code at dayz.fyi/claim to attach the server to your community. Full walkthrough: dayz.fyi/docs/getting-started Tip: set steamQueryPort in serverDZ.cfg so the dashboard auto-fills your server name and map. What it costs your server The mod measures its own footprint on every server - the numbers are on your dashboard, not taken on faith. On a 100-player server running the previous release, that self-report was 1.6% of the main thread with the standard capture set and up to 5.3% with item-movement capture on, nearly all of it the signed upload pipeline, with a 10-12 ms burst once per batch at full population. 0.26.0 is the performance release that addresses exactly that: events are serialized as they arrive instead of a hundred at a time, batches are capped at 16 KB, the queue drains without touching every entry, the signing cost per byte no longer grows with batch size, and the signed lane carries four times the throughput. Per-frame work outside uploads is about 0.02% of a frame. The event queue is bounded (10,000); the previous release dropped no events in seven days of fleet telemetry at full population. Transparency and control Every engine hook the mod owns is disclosed at every boot in your script log ( chain-link lines: what it is for, what it cannot do, how to switch it off) and in the full description linked below. Every override calls the original engine code - a build check enforces it. Owner kill switches in config.json turn any hook family into a pure pass-through without uninstalling. Server-side only. Sends the same identifiers vanilla admin logs already expose (Steam ID / DayZ ID); no client-side data; item types only, never inventories. Pure Enforce Script - Windows and Linux servers identically, no DLL. Validated against every DayZ update (badge on dayz.fyi). Hooks the eight vanilla vehicle classes for a count-only health metric; a game update that changes those classes can need a hotfix. Full description, hook list, privacy details dayz.fyi/docs/sentinel-enforcer Support dayz.fyi platform: dayz.fyi Discord: link in the dayz.fyi footer - bug reports and integration questions go here

Workshop 3714349930 · mod updated 2026-09-28 · analyzed 2026-10-03 09:37 UTC · history · 66 script files

MechanicsServer Workshop tags, chosen by the author

Stall risks
None found

No file I/O on hot paths, no timers created per event, no per-player-per-frame hooks.

Compatibility
Chain-safe

Every server-visible override preserves its chain.

Structural footprint 1.1
A
clean
Heavier than 82% of 328 scripted mods analyzed.

0.0308% of each server frame at 100 players (0.308 ms/s). Counts hook dispatch and timers only, not what the hooks do inside. Methodology.

Where this mod sits

Structural load of the 328 scripted mods analyzed, lightest on the left. This mod's bar is lit; 25 others share it. Ranked list.

20
40
60
  • 24 mods
    0.0000022 to 0.0000046 ms/s · grade A
  • 7 mods
    0.0000046 to 0.00001 ms/s · grade A
  • 1 mod
    0.00001 to 0.000022 ms/s · grade A
  • 1 mod
    0.000022 to 0.000046 ms/s · grade A
  • 37 mods
    0.0001 to 0.00022 ms/s · grade A
  • 26 mods
    0.00022 to 0.00046 ms/s · grade A
  • 33 mods
    0.00046 to 0.001 ms/s · grade A
  • 22 mods
    0.001 to 0.0022 ms/s · grade A
  • 13 mods
    0.0022 to 0.0046 ms/s · grade A
  • 10 mods
    0.0046 to 0.01 ms/s · grade A
  • 5 mods
    0.01 to 0.022 ms/s · grade A
  • 18 mods
    0.022 to 0.046 ms/s · grade A
  • 17 mods
    0.046 to 0.1 ms/s · grade A
  • 41 mods
    0.1 to 0.22 ms/s · grade A
  • This mod
  • 28 mods
    0.46 to 1 ms/s · grade A
  • 8 mods
    1 to 2.2 ms/s · grade A to B
  • 10 mods
    2.2 to 4.6 ms/s · grade B
  • 1 mod
    4.6 to 10 ms/s · grade B to C
A316
B11
C1
D0
E0
ms/s, log scale: each labelled step is ten times the one before. Letter grade and mods holding it below the axis.
Where the load comes from

Every-frame hooks carry 97% of this mod's structural load. 0.308 ms/s in all.

97%Every-frame hooks · 97%
12 hooks · 0.3 ms/s
Event hooks · 3.4%
7 hooks · 0.01 ms/s
Lifecycle hooks · <0.1%
13 hooks · 0.000026 ms/s
Every-frame hooksrun every server frame 12 hooks 0.3 ms/s 97% AnimalBase.CommandHandler, CarScript.EOnPostSimulate, CivilianSedan.EOnPostSimulate and 9 more
Event hooksrun when something happens: an inventory move, a hit, an action 7 hooks 0.01 ms/s 3.4% ItemBase.EEItemLocationChanged, PlayerBase.EEItemAttached, PlayerBase.EEItemDetached and 4 more
Lifecycle hooksrun when an entity is created, loaded or deleted 13 hooks 0.000026 ms/s <0.1% BaseBuildingBase.EEDelete, BaseBuildingBase.EEInit, BaseBuildingBase.EEKilled and 10 more

Counts how often each hook is dispatched and how many timers stay alive, not what the code inside does. Some rates are order-of-magnitude estimates; the methodology lists which.

Where this mod runs often

Hooks on per-frame and high-rate surfaces, with what their bodies call. Body work, not the hook itself, is what costs frame time.

EOnPostSimulate × 9 classes
every frame, per active instance
no I/O, timers or RPC
CommandHandler × 2 classes
every frame, per active instance
no I/O, timers or RPC
OnUpdate on MissionServer
every server frame
no I/O, timers or RPC
EEItemAttached on PlayerBase
every inventory move
no I/O, timers or RPC
EEItemDetached on PlayerBase
every inventory move
no I/O, timers or RPC
EEItemLocationChanged on ItemBase
every inventory move
no I/O, timers or RPC
EEHitBy × 2 classes
per event
no I/O, timers or RPC
CanPutInCargo on ItemBase
per event
no I/O, timers or RPC
OnRPC on PlayerBase
per event
no I/O, timers or RPC

Other findings

What this report can tell you

Which vanilla methods the mod hooks, which of them drop the chain, how often each hook fires, and which risky calls sit inside hot hooks.

What it cannot

How long hook bodies take, network cost, or engine-side load. Measured across live fleets, most server lag comes from the engine and world state, not mod script chains — a light footprint does not clear a mod of lag, and a heavy one does not convict it. Methodology.

Everything else

All 52 overrides

Surface is the dispatch tier the rubric can price (— = unpriced); server is whether the override exists on a dedicated server; super() shows whether the vanilla chain is preserved on a server.

methodsurfaceserversuper()where
ActionTakeItem.OnEndServer — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\PickupHook.c:42
ActionTakeItemToHands.OnEndServer — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\PickupHook.c:51
AnimalBase.CommandHandler T1 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\ActivationHook.c:108
BaseBuildingBase.OnPartBuiltServer — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\BuildingHook.c:20
BaseBuildingBase.OnPartDismantledServer — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\BuildingHook.c:31
BaseBuildingBase.EEHitBy T2 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\BuildingHook.c:47
BaseBuildingBase.EEKilled T3 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\BuildingHook.c:58
BaseBuildingBase.EEInit T3 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\BuildingHook.c:67
BaseBuildingBase.EEDelete T3 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\BuildingHook.c:73
CarScript.EEKilled T3 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\VehicleHook.c:45
CarScript.EEDelete T3 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\VehicleHook.c:54
CarScript.EOnPostSimulate T1 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\VehicleHook.c:83
CivilianSedan.EOnPostSimulate T1 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\VehicleHook.c:102
CombinationLock.LockServer — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\CodeLockHook.c:21
CombinationLock.UnlockServer — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\CodeLockHook.c:27
FirearmActionDetachMagazine.ActionConditionContinue — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\MagazineHook.c:24
HandEventBase.ReadFromContext — yes ✓ sentinel_enforcer.pbo::scripts\3_Game\SentinelInvCommandHook.c:55
HandEventBase.CheckRequestEx — yes ✓ sentinel_enforcer.pbo::scripts\3_Game\SentinelInvCommandHook.c:65
Hatchback_02.EOnPostSimulate T1 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\VehicleHook.c:111
ItemBase.CanPutInCargo T2 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\ItemLocationHook.c:220
ItemBase.OnCEUpdate — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\ItemLocationHook.c:235
ItemBase.EEItemLocationChanged T2 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\ItemLocationHook.c:241
MissionServer.OnInit T3 yes ✓ sentinel_enforcer.pbo::scripts\5_Mission\SentinelMissionInit.c:16
MissionServer.OnEvent — yes ✓ sentinel_enforcer.pbo::scripts\5_Mission\SentinelMissionInit.c:145
MissionServer.OnClientRespawnEvent T3 yes ✓ sentinel_enforcer.pbo::scripts\5_Mission\SentinelMissionInit.c:217
MissionServer.OnClientNewEvent T3 yes ✓ sentinel_enforcer.pbo::scripts\5_Mission\SentinelMissionInit.c:229
MissionServer.OnClientReadyEvent T3 yes ✓ sentinel_enforcer.pbo::scripts\5_Mission\SentinelMissionInit.c:246
MissionServer.OnClientDisconnectedEvent T3 yes ✓ sentinel_enforcer.pbo::scripts\5_Mission\SentinelMissionInit.c:273
MissionServer.OnMissionFinish T3 yes ✓ sentinel_enforcer.pbo::scripts\5_Mission\SentinelMissionInit.c:288
MissionServer.OnUpdate T0 yes ✓ sentinel_enforcer.pbo::scripts\5_Mission\SentinelMissionInit.c:307
Offroad_02.EOnPostSimulate T1 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\VehicleHook.c:129
OffroadHatchback.EOnPostSimulate T1 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\VehicleHook.c:120
PlayerBase.OnConnect — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\KillHook.c:142
PlayerBase.OnDisconnect — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\KillHook.c:189
PlayerBase.EEHitBy T2 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\KillHook.c:334
PlayerBase.EEKilled T3 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\KillHook.c:611
PlayerBase.OnVehicleSeatDriverEnter — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\KillHook.c:763
PlayerBase.OnVehicleSeatDriverLeft — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\KillHook.c:769
PlayerBase.EEItemAttached T2 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\KillHook.c:792
PlayerBase.EEItemDetached T2 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\KillHook.c:799
PlayerBase.OnRPC T2 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\KillHook.c:810
PlayerBase.OnInputUserDataProcess — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\KillHook.c:838
PluginAdminLog.LogPrint — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\AdminLogHook.c:40
Sedan_02.EOnPostSimulate T1 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\VehicleHook.c:138
TerritoryFlag.OnPartBuiltServer — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\FlagHook.c:30
TerritoryFlag.EEKilled T3 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\FlagHook.c:42
Truck_01_Base.EOnPostSimulate T1 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\VehicleHook.c:147
Truck_02.EOnPostSimulate T1 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\VehicleHook.c:156
Van_01.EOnPostSimulate T1 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\VehicleHook.c:165
Weapon_Base.EEFired — yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\FireHook.c:29
WeaponManager.StartPendingAction — yes conditional sentinel_enforcer.pbo::scripts\4_World\capture\WeaponActionHook.c:837
ZombieBase.CommandHandler T1 yes ✓ sentinel_enforcer.pbo::scripts\4_World\capture\ActivationHook.c:56
Dispatch surfaces and timers the grade prices
surfacetierrate (Hz)rate sourcems/s
ZombieBase.CommandHandlerT1 1000.0placeholder0.0248
AnimalBase.CommandHandlerT1 1000.0placeholder0.0248
CarScript.EOnPostSimulateT1 1000.0placeholder0.0248
CivilianSedan.EOnPostSimulateT1 1000.0placeholder0.0248
Hatchback_02.EOnPostSimulateT1 1000.0placeholder0.0248
OffroadHatchback.EOnPostSimulateT1 1000.0placeholder0.0248
Offroad_02.EOnPostSimulateT1 1000.0placeholder0.0248
Sedan_02.EOnPostSimulateT1 1000.0placeholder0.0248
Truck_01_Base.EOnPostSimulateT1 1000.0placeholder0.0248
Truck_02.EOnPostSimulateT1 1000.0placeholder0.0248
Van_01.EOnPostSimulateT1 1000.0placeholder0.0248
MissionServer.OnUpdateT0 1000.0measured0.0248
ItemBase.EEItemLocationChangedT2 130.0measured0.0032
PlayerBase.EEItemAttachedT2 130.0measured0.0032
PlayerBase.EEItemDetachedT2 130.0measured0.0032
BaseBuildingBase.EEHitByT2 8.0placeholder0.0002
ItemBase.CanPutInCargoT2 8.0placeholder0.0002
PlayerBase.EEHitByT2 8.0placeholder0.0002
PlayerBase.OnRPCT2 8.0placeholder0.0002
BaseBuildingBase.EEKilledT3 0.1placeholder0.0000
BaseBuildingBase.EEInitT3 0.1placeholder0.0000
BaseBuildingBase.EEDeleteT3 0.1placeholder0.0000
TerritoryFlag.EEKilledT3 0.1placeholder0.0000
PlayerBase.EEKilledT3 0.1placeholder0.0000
CarScript.EEKilledT3 0.1placeholder0.0000
CarScript.EEDeleteT3 0.1placeholder0.0000
MissionServer.OnInitT3 0.1placeholder0.0000
MissionServer.OnClientRespawnEventT3 0.1placeholder0.0000
MissionServer.OnClientNewEventT3 0.1placeholder0.0000
MissionServer.OnClientReadyEventT3 0.1placeholder0.0000
MissionServer.OnClientDisconnectedEventT3 0.1placeholder0.0000
MissionServer.OnMissionFinishT3 0.1placeholder0.0000

Includes 0.274 ms/s from placeholder-rated surfaces.

Load-order constraints (CfgPatches)

What each PBO declares: its addon identity and the addons it requires to be loaded first (requiredAddons). A partial load-order signal from the mod's own metadata.

sentinel_enforcer.pbo

  • SentinelEnforcer requiredVersion 0.1 — no requiredAddons

census 1.1 · findings 1.1 · hash 00e6265b9f8d28eb