OpsTrack

by mikkelsen

0.3.25

0.3.25 — Entity Definition Self-Healing

- API drift recovery: when the API reports unknownEntityIds (states referencing entities it doesn't know about), the mod now automatically re-sends those entity definitions in the next batch. Previously, any loss of entity definitions on the API side would permanently result in skipped states for the rest of the mission. The mod now detects the drift and heals itself with zero admin intervention.
- Faction change detection: entity definitions are kept in sync when the faction changes mid-life. Previously, a vehicle first seen empty (faction="Unknown") retained that faction in the definition forever, even after being occupied by players. Same issue applied to players switching sides via Game Master or campaign mechanics. Now, any faction change triggers an entity definition update (sent as an idempotent upsert — no new endpoint required).
- Internal: Entity cache refactored from JSON payload strings to full OpsTrack_Entity objects. Enables regenerating payloads on demand with current faction, and opens the door for future entity metadata updates.
- 17 new automated tests covering UUID response parsing, re-enqueue edge cases (empty input, cached, partial hits, cache invalidation), and faction change detection (no change, occupied vehicle, null guards, uncached entities).
Game Version
1.6.0.119
Created
Fri, 24 Apr 2026 18:34:19 GMT
Last Modified
Fri, 24 Apr 2026 18:34:22 GMT

0.3.24

Set baseurl to be a constant instead of configurable
Game Version
1.6.0.119
Created
Thu, 23 Apr 2026 20:27:20 GMT
Last Modified
Thu, 23 Apr 2026 20:27:24 GMT

0.3.23

Added map
- Novka
Game Version
1.6.0.119
Created
Wed, 22 Apr 2026 04:40:39 GMT
Last Modified
Wed, 22 Apr 2026 04:40:41 GMT

0.3.22

hotfix kolguyev
Game Version
1.6.0.119
Created
Sun, 19 Apr 2026 17:53:01 GMT
Last Modified
Sun, 19 Apr 2026 17:53:03 GMT

0.3.21

Added support for Kolguyev
Game Version
1.6.0.119
Created
Sun, 19 Apr 2026 08:00:03 GMT
Last Modified
Sun, 19 Apr 2026 08:00:05 GMT

0.3.20

Added maps:
- Zarichne
- Rostov
Game Version
1.6.0.119
Created
Mon, 06 Apr 2026 12:25:08 GMT
Last Modified
Mon, 06 Apr 2026 12:25:10 GMT

0.3.19

0.3.19 — Logging Cleanup & API Response Handling 
Console spam eliminated: Repetitive INFO logs that fired every 3 seconds (batch flush summaries, HTTP 200 confirmations) have been downgraded to DEBUG. In normal mode, the console now only shows operational events: entity creation, connections, recording start/stop, and errors. Debug mode still shows everything.
Unknown entity detection: The mod now parses the API's unknownEntityIds response field and logs a WARNING when entity states reference entities the API doesn't recognize. This makes it easy to spot entity definition delivery issues without enabling debug mode.
Combat event logging reduced: Kill/self-harm event details moved from INFO to DEBUG. Kill data is already stored in the API, no need to spam the server console during large battles with many AI casualties.
Fire test logging silenced: Both OpsTrack_FireTest and OpsTrack_MuzzleFireTest (experimental/diagnostic classes) now log exclusively at DEBUG level.
Enfusion IndexOf compatibility fix: The unknownEntityIds parser uses single-argument IndexOf calls only, matching Enfusion's string API (no start-position overload).
Game Version
1.6.0.119
Created
Tue, 17 Mar 2026 09:32:23 GMT
Last Modified
Tue, 17 Mar 2026 09:32:24 GMT

0.3.18

0.3.18 — Entity Durability & Backoff Fixes
Fixed
Entity definitions no longer lost during API outages — Previously, if the API was unreachable for 5+ consecutive retries, all queued data including entity definitions was dropped. The mod continued tracking entities and sending position data, but the API didn't know the entityIds, causing cascading 500 errors. Entity definitions and mission assignments now survive all backoff cycles.
Entities spawned during API downtime are now registered — New entities (AI reinforcements, vehicles, players joining) that appeared while the API was down were silently dropped. They are now always queued and sent with the first successful batch after recovery.
Mission start/end no longer disrupts batch pipeline — Mission requests (start/stop) previously shared the same callback as batch data. If a mission request failed with a 5xx error, it incorrectly counted toward the batch retry limit and could trigger premature data drops. Mission requests now use a separate callback that cannot interfere with the batch pipeline.
No more Virtual Machine Exception on concurrent requests — Sending a mission start/end while a batch was in-flight could cause the engine to garbage-collect the active batch callback, resulting in a crash. Fixed by using a dedicated callback field for mission requests.
Resolved compile warnings — Fixed "Possible variable name conflict" warnings in entity constructor.
Game Version
1.6.0.119
Created
Mon, 16 Mar 2026 15:42:25 GMT
Last Modified
Mon, 16 Mar 2026 15:42:27 GMT

0.3.17

HOTFIX
V0.3.17
Map name strictness — Auto-mode now uses config-only lookup (OpsTrack_MapNames.conf). Unknown maps are blocked with a list of available maps. Path-extraction fallback removed.
Backoff fix — Flush timer now respects backoff cooldown. Prevents requests during active cooldown period.
5xx retry limit — Max 5 retries on server errors, then poisoned data is dropped with log + admin notification. Prevents infinite retry loops (previously 31+ minutes).
Error state reset — Queues and error counters are cleared on new recording start. Prevents stale data from corrupting new recordings.
Stop-recording race fix — m_IsRecording is set to false BEFORE async mission-end call. Prevents mission-end 404 errors from re-entering StopRecording() and incrementing the error counter.
API error handling — 401 (invalid key) and 429 (tier limit) stop recording immediately. 409 (mission ended) stops gracefully. 400 stops after 3 consecutive failures.
Admin chat notifications — Server errors and API issues are sent as in-game chat messages to admin players (throttled to 1/min).
Callback message passthrough — API error messages are now shown in logs and admin notifications.
Game Version
1.6.0.119
Created
Fri, 13 Mar 2026 19:05:47 GMT
Last Modified
Fri, 13 Mar 2026 19:05:48 GMT

0.3.16

Added maps
- Denali
- Barzan
Game Version
1.6.0.119
Created
Fri, 13 Mar 2026 17:03:20 GMT
Last Modified
Fri, 13 Mar 2026 17:03:22 GMT

0.3.15

V0.3.15
Map name strictness
Auto-mode #opstrack_start now only accepts maps defined in config. Previously, unsupported maps could start recording via path extraction fallback (e.g. "RL_TraningWorld_Gamemode"). Unsupported maps are now blocked with an error listing available maps.
Backoff fix
Fixed a bug where the 3-second flush timer ignored the backoff cooldown, causing infinite retry spam every 3 seconds despite reporting "retry in 120 seconds". The flush timer now respects the backoff state.
API error handling
All API error codes now have specific handling. 401 (invalid API key) and 429 (tier limit) stop recording immediately. 409 (mission ended) stops gracefully. 400 stops after 3 consecutive failures. Error messages from the API response body are now logged with full context.
Admin chat notifications
API errors are now sent as in-game chat messages to all players with administrator role, throttled to max 1 message per 60 seconds. Uses BaseChatComponent.SendMessage() — channel ID needs in-game verification.
Callback message passthrough
REST callback now extracts the API response body and passes it through to all error handlers (Backoff, OnClientError, OnMissionEndedByServer), so the actual API error message is available for logging and admin notification.

Added support for Everon
Game Version
1.6.0.119
Created
Thu, 12 Mar 2026 19:04:38 GMT
Last Modified
Thu, 12 Mar 2026 19:04:39 GMT

0.3.14

**V0.3.14**
**Guaranteed death state**
Entities now always send a final isAlive=false state when destroyed. Previously entities could disappear from replay without a death marker if they died between capture ticks.

**GM possession fix**
When a Game Master possesses an AI character, the AI retains its correct identity (name, faction, type=AI) on replay. Previously the AI would incorrectly appear as the GM entity.

**Vehicle tracking: full world discovery**
All vehicles are now tracked from mission start via QueryEntitiesBySphere, not just when a player/AI occupies them. Parked and empty vehicles are now visible on replay.

**Dynamic faction on entity states**
All entity states (players, AI, vehicles) now include a faction field in every state payload. For vehicles, faction dynamically reflects alive occupants per tick. Empty vehicles or vehicles with only dead occupants send faction: "Unknown".

**Dead occupant check**
Vehicle faction only considers alive passengers. If all occupants are dead, faction transitions to "Unknown". Previously a vehicle with corpses in seats would still report the dead passenger's faction.
Game Version
1.6.0.119
Created
Tue, 10 Mar 2026 14:11:19 GMT
Last Modified
Tue, 10 Mar 2026 14:11:23 GMT

0.3.13

Batch retry data loss fix
Fixed a critical bug where entity definitions could be permanently lost when the API returned a server error (5xx). Previously, queued data was cleared before the request completed — meaning if the request failed, entity definitions were gone and could never be resent. This caused cascading 500 errors on the API side. Data is now only removed from queues after a successful response. On failure, all data is kept for retry.
Autostop on empty server
When all players disconnect during an active recording, OpsTrack now starts a 5-minute countdown. If no players return within that window, the recording stops automatically. If a player reconnects before the timer expires, the countdown resets and recording continues as normal.
Game Version
1.6.0.119
Created
Mon, 09 Mar 2026 18:30:27 GMT
Last Modified
Mon, 09 Mar 2026 18:30:31 GMT

0.3.12

Map Name Resolution
Auto-detection: Map name resolves automatically from the world file for supported maps (config lookup + path extraction with prefix stripping)
Manual override: Use #opstrack_start <MapName> to specify the map name directly (case-insensitive)
Blocked on unknown: Recording is blocked if the map name cannot be resolved — error message shows available maps and the world file path for troubleshooting
Mission name auto-generated: Mission names are now always timestamp-based (Mission_2026-03-07T...), no longer set via command
Command changes:
#opstrack_start              — auto-detect map name
#opstrack_start Chernarus    — manual map name (case-insensitive)
Game Version
1.6.0.119
Created
Sat, 07 Mar 2026 10:29:01 GMT
Last Modified
Sat, 07 Mar 2026 10:29:03 GMT

0.3.11

Added maps:
Gogland
Hamland
Arland
Game Version
1.6.0.119
Created
Fri, 06 Mar 2026 11:49:10 GMT
Last Modified
Fri, 06 Mar 2026 11:49:11 GMT

0.3.10

Added support for Serhiivka
Game Version
1.6.0.119
Created
Wed, 04 Mar 2026 05:50:00 GMT
Last Modified
Wed, 04 Mar 2026 05:50:03 GMT

0.3.9

Added Takistan to supported maps
Game Version
1.6.0.119
Created
Sun, 01 Mar 2026 15:49:04 GMT
Last Modified
Sun, 01 Mar 2026 15:49:06 GMT

0.3.8

Game Version
1.6.0.119
Created
Thu, 26 Feb 2026 11:23:41 GMT
Last Modified
Thu, 26 Feb 2026 11:23:42 GMT

0.3.7

Add support for Ruha and Chernarus
Game Version
1.6.0.119
Created
Wed, 25 Feb 2026 12:43:20 GMT
Last Modified
Wed, 25 Feb 2026 12:43:24 GMT

0.3.6

Added support for vehicle tracking(still wip)
Added ability to stop recording from webapp
Game Version
1.6.0.119
Created
Tue, 24 Feb 2026 16:45:26 GMT
Last Modified
Tue, 24 Feb 2026 16:45:27 GMT

0.3.5

Added vehicle tracking
Game Version
1.6.0.119
Created
Mon, 23 Feb 2026 22:44:30 GMT
Last Modified
Mon, 23 Feb 2026 22:44:33 GMT

0.3.4

Added AI Tracking
Game Version
1.6.0.119
Created
Mon, 23 Feb 2026 19:56:24 GMT
Last Modified
Mon, 23 Feb 2026 19:56:27 GMT

0.3.3

Added /api endpoint
Game Version
1.6.0.119
Created
Sat, 21 Feb 2026 16:11:23 GMT
Last Modified
Sat, 21 Feb 2026 16:11:26 GMT

0.3.2

Fix combat and connection event logging
Added combat and connection events to batch to reduce api calls
Game Version
1.6.0.119
Created
Sun, 15 Feb 2026 12:18:30 GMT
Last Modified
Sun, 15 Feb 2026 12:18:32 GMT

0.3.1

Batch entitystate requests
Game Version
1.6.0.119
Created
Thu, 12 Feb 2026 21:22:42 GMT
Last Modified
Thu, 12 Feb 2026 21:22:45 GMT

0.3.0

Added first iteration of support for tracking player entities.
Start a mission record with #opstrack_start <missionname> stop it with #opstrack_stop
<missionname> is optional, defaults to datetime.now
Game Version
1.6.0.119
Created
Fri, 30 Jan 2026 22:48:00 GMT
Last Modified
Fri, 30 Jan 2026 22:48:02 GMT

0.2.32

Game Version
1.6.0.95
Created
Fri, 02 Jan 2026 23:03:01 GMT
Last Modified
Fri, 02 Jan 2026 23:03:03 GMT

0.2.31

Game Version
1.6.0.95
Created
Fri, 02 Jan 2026 18:35:02 GMT
Last Modified
Fri, 02 Jan 2026 18:35:05 GMT

0.2.30

Game Version
1.6.0.95
Created
Fri, 02 Jan 2026 09:29:41 GMT
Last Modified
Fri, 02 Jan 2026 09:29:44 GMT

0.2.29

Game Version
1.6.0.95
Created
Thu, 01 Jan 2026 22:04:07 GMT
Last Modified
Thu, 01 Jan 2026 22:04:10 GMT

Showing 1 to 30 of 50 results

Rows per page

Next