Universal Conflict Performance

by KanCooRu

3.2.6

Game Version
1.8.0.13
Created
Sun, 13 Sep 2026 00:10:31 GMT
Last Modified
Sun, 13 Sep 2026 00:10:37 GMT

3.2.5

UCP 3.5.0 — AI Population Guard & AI Active Limit

New: AI Population Guard (AIPopulation*, off by default, observation-only)
The server's aiLimit is a cooperative check — spawners that never ask the engine spawn straight past it. This guard enforces a hard cap from the outside: every 5 s it takes a world-wide AI census via AIWorld.GetAIAgents() and, if the count exceeds AIPopulationHardLimit, evicts the excess a few at a time, farthest from any player first. Never touches players, corpses, vehicle crews, AI within 300 m of a player, AI younger than 90 s, or the last member of a group. No dependency on any scenario or spawner mod.

New: AI Active Limit (AIActiveLimit*, off by default)
Drives the engine's native SetLimitOfActiveAIs() from UCP's performance state. Deletes nothing — caps how many AI are simulated at once. Restores the engine baseline when disabled.
Game Version
1.8.0.13
Created
Sat, 12 Sep 2026 14:59:49 GMT
Last Modified
Sat, 12 Sep 2026 14:59:56 GMT

3.2.4

Game Version
1.8.0.13
Created
Wed, 09 Sep 2026 15:44:20 GMT
Last Modified
Wed, 09 Sep 2026 15:44:30 GMT

3.2.3

Game Version
1.8.0.13
Created
Wed, 09 Sep 2026 13:28:49 GMT
Last Modified
Wed, 09 Sep 2026 13:28:55 GMT

3.2.2

Game Version
1.8.0.13
Created
Tue, 08 Sep 2026 09:04:45 GMT
Last Modified
Tue, 08 Sep 2026 09:04:53 GMT

3.2.1

New
Frame monitor: measures real server FPS, frame time and scheduler lateness. Previously the governor only saw UCP's own cycle time and cleanup backlog, so a server at 25 FPS still reported NORMAL
#ucp command: live console now reachable in-game (#ucp frame, #ucp help). It previously had no caller at all
ROW diagnostic log: one fixed-shape line with players, FPS and entity density — greppable straight into a spreadsheet
Performance fixes
Removed O(n²) in cleanup (full array scan per candidate → cached single pass)
Discovery now scales with player count (full sweep at 40 players: ~4 min → ~1 min)
Profiler string lookup → map index
Default changes
ObservationOnly → false (cleanup now actually deletes; it never had)
InvisibleAIObservationOnly → false
AIVisibilityObservationOnly → false
MaxDestroyedVehicles 30 → 15 (an infantry-heavy PVE server never exceeded 30, so wreck cleanup was unreachable)
Safety
The player-protection check now refreshes position data itself, so fast-moving players can't have entities deleted out from under them
Notes
Config v7 migration applies automatically to existing JSON
Frame measurement is on, governing is off. Verify the numbers live, then enable PerformanceUseFrameMonitor
Game Version
1.8.0.13
Created
Tue, 08 Sep 2026 08:34:09 GMT
Last Modified
Tue, 08 Sep 2026 08:34:14 GMT

3.1.9

AIVisibilityGuard optimization and partial script updates for 1.8 compatibility
Game Version
1.8.0.10
Created
Sun, 23 Aug 2026 11:19:44 GMT
Last Modified
Sun, 23 Aug 2026 11:19:53 GMT

3.1.8

InvisibleAI FIX
Game Version
1.8.0.10
Created
Wed, 19 Aug 2026 21:32:37 GMT
Last Modified
Wed, 19 Aug 2026 21:32:42 GMT

3.1.7

InvisibleAI FIX
Game Version
1.8.0.10
Created
Tue, 18 Aug 2026 20:49:35 GMT
Last Modified
Tue, 18 Aug 2026 20:49:40 GMT

3.1.6

UCP Patch — Visibility Replication Fix
Root cause: SetVisible(true) was already a no-op (hiddenLevels=0 in logs) — server saw AI as visible, but that state was never replicated to clients. Explains why Game Master could see it but players couldn't.
Fix: UCP_AIVisibilityGuard.c now also calls EnableVisibilityReplication(true) on the character + full ancestor chain, alongside SetVisible(true).
Added: replicationEnabled counter in Metrics AIVisibility, and replicationDisabledLevels in the fixed/would-fix log lines — to confirm this was the actual gap.
Game Version
1.8.0.10
Created
Sat, 15 Aug 2026 20:21:21 GMT
Last Modified
Sat, 15 Aug 2026 20:21:27 GMT

3.1.5

UCP Patch — Query Budget Optimization
Changed: UCP_Settings.c / UCP_ConfigLoader.c
Reduced default InvisibleAIQueryBudgetPerPlayer and AIVisibilityQueryBudgetPerPlayer from 192 → 64 (a 67% cut)
Proportionally lowered the CRITICAL-load fallback cap on both from 96 → 32
CURRENT_CONFIG_VERSION bumped 4 → 5, with a new migration step: existing UCP_Settings.json files get these two values corrected automatically, but only if they're still sitting at the stale 192 default — any admin who already customized them to a different number is left untouched
Changed: UCP_InvisibleAIGuard.c / UCP_AIVisibilityGuard.c
Updated GetEffectiveQueryBudget() in both files to match the new 64/32 baseline
Game Version
1.8.0.10
Created
Sat, 15 Aug 2026 17:20:14 GMT
Last Modified
Sat, 15 Aug 2026 17:20:23 GMT

3.1.4

InvisibleAI FIX
Game Version
1.7.0.54
Created
Thu, 13 Aug 2026 11:42:39 GMT
Last Modified
Thu, 13 Aug 2026 11:42:44 GMT

3.1.3

AIVisibility fix
Game Version
1.7.0.54
Created
Wed, 12 Aug 2026 14:52:57 GMT
Last Modified
Wed, 12 Aug 2026 14:53:02 GMT

3.1.2

1. AI invisibility — root-cause fix (UCP_AIGroupSerializer.c, new)
Patches SCR_AIGroupSerializer to never write AI group member UUIDs on save
On restart, groups come back empty and get refilled by ConflictPVERemixedVanilla2.0's own spawn system (SpawnPatrol) — the path that never produced invisible AI
Setting: SkipAIGroupMemberPersistence (default false)
2. AI invisibility — live detection and fix (UCP_AIVisibilityGuard.c, new)
Finds characters where SCR_EditableEntityComponent.GetVisibleSelf() is false and calls SetVisible(true) (same API as Game Master's "Visibility" attribute — confirmed as the actual root cause)
Also applies LOD-unlock calls (PreventMaxLOD, SetLOD(9), etc.) as a secondary measure
Settings: AIVisibilityGuardEnabled, AIVisibilityObservationOnly, AIVisibilityFixIntervalMs, AIVisibilityRadius, AIVisibilityPlayersPerCycle, AIVisibilityQueryBudgetPerPlayer, AIVisibilityFixBudgetPerCycle, AIVisibilityMaxTracked
3. Query performance/accuracy (UCP_InvisibleAIGuard.c, UCP_AIVisibilityGuard.c)
Added EQueryEntitiesFlags.DYNAMIC to QueryEntitiesBySphere calls — excludes static world geometry (trees, rocks) so the query budget is spent finding actual characters instead
4. Save/restore (UCP_Runtime.c)
Widens ROKAConflict's save types from AUTO-only to AUTO|MANUAL|SCRIPTED|SHUTDOWN, preventing lost saves on a clean server stop
Setting: SaveGameFixEnabled (default true)
5. ACE Medical conflict / player misclassification (UCP_EntityClassifier.c)
Classifies corpses via ECharacterLifeState.DEAD instead of the raw IsDestroyed() flag, so ACE's "alive but incapacitated" state is no longer mistaken for death
Player-controlled characters are excluded from cleanup entirely, dead or not
6. Vehicle deleted right after exit (UCP_EntityClassifier.c)
Occupied vehicles are excluded from tracking; the abandonment timer only starts fresh the moment a vehicle is actually vacated (existing 90-minute grace period now applies correctly per vehicle)
7. Config infrastructure (UCP_Settings.c, UCP_ConfigLoader.c)
Added all settings fields needed for the above (declarations, defaults, JSON registration, validation, hot-reload diffing)
Bumped CURRENT_CONFIG_VERSION 2→3 with a migration step so existing JSON config files automatically pick up the new fields
Game Version
1.7.0.54
Created
Fri, 07 Aug 2026 10:13:57 GMT
Last Modified
Fri, 07 Aug 2026 10:14:03 GMT

3.1.1

Bug Fixes
1. Fixed AIPopulationGuard's Deletion Method
Replaced SCR_EntityHelper.DeleteEntityAndChildren() with group.RemoveAgent() + RplComponent.DeleteRplEntity()
Verified against and switched to the method the original addon actually uses (the old call was meant for deleting corpses, not living AI)
2. Added a Group-Wipeout Prevention Guard
Unconditionally refuses any deletion that would leave a group with 1 or fewer members
Prevents removing the last member from ever triggering counter-group/capture logic
3. Replaced Combat Detection with the Real API
Swapped the distance-based guess for the actual measured value from group.GetGroupUtilityComponent().m_Perception.m_aTargets
4. Replaced AIPopulationGuard's Discovery Method
Removed the per-player QueryEntitiesBySphere loop → replaced with a single AIWorld.GetAIAgents() call
Improved efficiency and also eliminated the old "can only find AI near players" limitation
5. Cleaned Up Now-Unused Settings (AIPopulationGuard)
Removed 3 dead fields: AIPopulationDetectionRadius / PlayersPerCycle / QueryBudgetPerPlayer
6. Fixed InvisibleAIGuard Debug Log Flooding
Re-gated two logging spots behind DebugLogs as originally intended, after they were left unconditionally printing from a past debugging session
7. Fixed AIVisibilityGuard's "Fix Once, Never Again" Bug
if (m_FixedEntities.Contains(entity)) return; meant an AI fixed once was never re-checked again → changed to match the original addon's behavior (SetGroupLOD reapplies every tick), now reapplies every time
This was the actual root cause of AI going invisible again over time with UCP unable to catch it
8. Switched AIVisibilityGuard's Discovery Method to GetAIAgents() Too
Same reasoning as #4 — also means a full AI sweep now happens even with zero players online after a server restart
Cleaned up now-unused AIVisibilityRadius/PlayersPerCycle/QueryBudgetPerPlayer settings
Game Version
1.7.0.54
Created
Sat, 01 Aug 2026 23:37:00 GMT
Last Modified
Sat, 01 Aug 2026 23:37:05 GMT

3.1.0

Bug Fixes (this session)
1. Fixed AIPopulationGuard's Deletion Method
Replaced SCR_EntityHelper.DeleteEntityAndChildren() with group.RemoveAgent() + RplComponent.DeleteRplEntity()
Verified against and switched to the method the original addon actually uses (the old call was meant for deleting corpses, not living AI)
2. Added a Group-Wipeout Prevention Guard
Unconditionally refuses any deletion that would leave a group with 1 or fewer members
Prevents removing the last member from ever triggering counter-group/capture logic
3. Replaced Combat Detection with the Real API
Swapped the distance-based guess for the actual measured value from group.GetGroupUtilityComponent().m_Perception.m_aTargets
4. Replaced Spatial-Query Discovery with GetAIAgents()
Removed the per-player QueryEntitiesBySphere loop → improved efficiency and also eliminated the old "can only find AI near players" limitation
5. Cleaned Up Now-Unused Settings
Removed 3 dead fields (AIPopulationDetectionRadius / PlayersPerCycle / QueryBudgetPerPlayer) that became meaningless after fix #4
6. Fixed InvisibleAIGuard Debug Log Flooding
Re-gated two logging spots behind DebugLogs as originally intended, after they were left unconditionally printing from a past debugging session
Game Version
1.7.0.54
Created
Sat, 01 Aug 2026 17:52:14 GMT
Last Modified
Sat, 01 Aug 2026 17:52:19 GMT

3.0.0

Game Version
1.7.0.54
Created
Tue, 28 Jul 2026 12:37:43 GMT
Last Modified
Tue, 28 Jul 2026 12:37:48 GMT

2.7.5

Game Version
1.7.0.54
Created
Mon, 27 Jul 2026 02:10:23 GMT
Last Modified
Mon, 27 Jul 2026 02:10:29 GMT

2.7.4

Game Version
1.7.0.54
Created
Mon, 27 Jul 2026 01:39:14 GMT
Last Modified
Mon, 27 Jul 2026 01:39:33 GMT

2.7.3

Game Version
1.7.0.54
Created
Mon, 27 Jul 2026 01:25:20 GMT
Last Modified
Mon, 27 Jul 2026 01:25:26 GMT

2.7.2

Game Version
1.7.0.54
Created
Mon, 27 Jul 2026 00:52:27 GMT
Last Modified
Mon, 27 Jul 2026 00:52:39 GMT

2.7.1

Game Version
1.7.0.54
Created
Mon, 27 Jul 2026 00:02:40 GMT
Last Modified
Mon, 27 Jul 2026 00:02:53 GMT

2.7.0

Game Version
1.7.0.54
Created
Sat, 25 Jul 2026 17:50:50 GMT
Last Modified
Sat, 25 Jul 2026 17:50:58 GMT

2.6.4

Game Version
1.7.0.54
Created
Thu, 23 Jul 2026 12:55:36 GMT
Last Modified
Thu, 23 Jul 2026 12:55:41 GMT

2.6.3

Game Version
1.7.0.54
Created
Wed, 22 Jul 2026 15:02:32 GMT
Last Modified
Wed, 22 Jul 2026 15:02:40 GMT

2.6.2

Game Version
1.7.0.54
Created
Mon, 20 Jul 2026 16:07:29 GMT
Last Modified
Mon, 20 Jul 2026 16:07:35 GMT

2.6.1

Game Version
1.7.0.54
Created
Mon, 20 Jul 2026 15:28:38 GMT
Last Modified
Mon, 20 Jul 2026 15:28:49 GMT

2.5.0

Game Version
1.7.0.54
Created
Mon, 20 Jul 2026 11:09:30 GMT
Last Modified
Mon, 20 Jul 2026 11:09:42 GMT

Showing 1 to 28 of 28 results

Rows per page