Capture current mission, AI, map and administration development

Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
This commit is contained in:
2026-10-13 22:52:53 +02:00
parent a951a96edc
commit 6a667d8deb
8104 changed files with 2124945 additions and 2061 deletions
@@ -0,0 +1,54 @@
# Guard work slicing — 8 October 2026
The reviewed live log `logs_2026-10-08_16-41-19` contained 981 ms update gaps and
856 ms guard/garrison scopes in the latest played round's 20 stable, populated
windows. Its journal flush peak was 7 ms. These are elapsed wall times, not proof
of CPU attribution or a complete explanation of every stall.
The source now uses a shared 100 ms background worker for town/object guards.
It alternates services and discovery/placement work, caches 250 m static-world
cells, resumes ground and roof candidate searches, and loads resources/creates
soldiers individually. Distance is checked before and after native creation;
placement clearance is checked immediately before creation. Exhausted searches
wait before retrying. Shutdown removes the callback. A native call remains
indivisible, so no hard maximum frame time is promised.
`native-fixture.c` overrides observer positions to represent an approach to St
Philippe on Everon; it leaves guard queries, navigation, physics, RHS infantry
allocation and Cessna flight intact. It suppresses unrelated procedural site
generation after initial startup. A first attempt without that isolation was
terminated by `No safe terrain or valid authored fallback for required site
everon-medical-1`; this change does not fix that separate generation failure.
The completed Reforger 1.8.0.13 fixture admitted two town squads (7 and 8 soldiers)
without unsafe birth positions. It performed 1,349 guard work slices, totaling
613 ms and peaking at 19 ms. The optional Cessna took off with RHS_AFRF aircrew and
patrolled. The emitted telemetry includes `garrison_work_ms` and a measured
`performance_flush_ms` sample of 1 ms. Pending final telemetry windows are not
included when the runner terminates.
This is a component test on different hardware/terrain/population from the live
Chernarus session. It is not a matched performance benchmark, an assurance of
lag-free gameplay, or reproduction of the live Cessna startup failure. Retained
native `error.log` includes existing resource warnings; no claim of a completely
clean engine log is made.
Cessna preparation now checks at 250 ms rather than scanning crew inventories on
every 50 ms control callback. Timeout reasons distinguish unready crew, seating,
missing manpacks and engine startup. Three consecutive pre-service failures
pause further allocations until the next round. Loss of an aircraft that entered
service still schedules its normal replacement. The real server's old generic
timeout did not identify its failed gate; the isolated RHS test did not reproduce
that failure.
`report.json` records final source hashes. The private runner requires the local
engine/addon caches named in it and never connects to or modifies the live server.
Focused town policy/HQ registration checks and the source-bundle audit passed.
No publication or server restart was performed.
A second native fixture deliberately moved its observer into a partly prepared
squad's next spawn position and forced every Cessna preparation to fail. It
verified at most one birth per slice, cancellation/removal of the partial squad,
exactly three aircraft failures followed by a pause, and no further guard
callbacks after HQ shutdown. The final marker is retained in `fault-summary.log`.
The injected failures test the retry limit, not the cause of the real failure.
@@ -0,0 +1,103 @@
class ERR_LagFixture
{
static vector Centre;
static vector Observer;
static bool Ready;
static int WorkCount;
static int WorkMax;
static int WorkSum;
static int Admitted;
static int Unsafe;
static int Burst;
static bool Moved, Cancelled;
static int PlaneFailures;
static bool Place(IEntity entity)
{
Centre = entity.GetOrigin(); Observer = ERR_Actors.Ground(Centre + "690 0 0"); Ready = true; return false;
}
static bool Town(IEntity entity)
{
MapDescriptorComponent d = MapDescriptorComponent.Cast(entity.FindComponent(MapDescriptorComponent));
return d && d.GetBaseType() == EMapDescriptorType.MDT_NAME_CITY;
}
}
modded class ERR_TownGarrisons
{
override protected void Players(out array<vector> positions)
{
positions.Clear(); if (ERR_LagFixture.Ready) positions.Insert(ERR_LagFixture.Observer);
}
override protected void Work(float now)
{
int start=System.GetTickCount(); super.Work(now); int elapsed=System.GetTickCount()-start;
ERR_LagFixture.WorkCount++; ERR_LagFixture.WorkMax=Math.Max(ERR_LagFixture.WorkMax,elapsed); ERR_LagFixture.WorkSum+=elapsed;
}
override protected void Attempt(ERR_TownGarrison town, array<vector> players, float now)
{
int before=town.Spawned; super.Attempt(town,players,now);
ERR_LagFixture.Burst=Math.Max(ERR_LagFixture.Burst,town.Spawned-before);
if(!ERR_LagFixture.Moved&&town.Spawned==1&&!town.Finished&&town.Positions.Count()>1)
{
ERR_LagFixture.Moved=true; ERR_LagFixture.Observer=town.Positions[1];
Print("ERR PLANE TEST observer moved into remaining planned guard positions");
}
if(ERR_LagFixture.Moved&&town.Finished&&!town.Admitted&&town.Spawned==1&&!town.Group) ERR_LagFixture.Cancelled=true;
}
override protected void Admitted(ERR_TownGarrison town)
{
super.Admitted(town); ERR_LagFixture.Admitted++;
array<AIAgent> agents={};town.Group.GetAgents(agents);
foreach(AIAgent a:agents) if(vector.DistanceXZ(a.GetControlledEntity().GetOrigin(),ERR_LagFixture.Observer)<SpawnDistance()) ERR_LagFixture.Unsafe++;
}
}
modded class ArmaReforgerScripted
{
protected float m_LagStart,m_LagNext,m_LagPrint;
protected bool m_LagDone,m_LagAirborne;
protected int m_StoppedCount;
protected float m_DoneAt;
protected bool m_FinalPrinted;
protected void CheckStop()
{
PrintFormat("ERR PLANE COMPLETE faults birth_burst=%1 moved=%2 cancelled=%3 setup_failures=%4 callbacks_stopped=%5",ERR_LagFixture.Burst,ERR_LagFixture.Moved,ERR_LagFixture.Cancelled,ERR_LagFixture.PlaneFailures,ERR_LagFixture.WorkCount==m_StoppedCount);
}
override void OnUpdate(BaseWorld world,float timeslice)
{
super.OnUpdate(world,timeslice);
ERR_GameMode mode=ERR_GameMode.Get();ERR_HQ hq=ERR_HQ.Get();
if(!mode||!hq||!mode.Active())return;
if(m_LagDone) { if(!m_FinalPrinted && world.GetWorldTime()-m_DoneAt>2000) { m_FinalPrinted=true;CheckStop(); } return; }
float now=world.GetWorldTime();
if(m_LagStart==0)
{
m_LagStart=now;
vector low,high;GetGame().GetWorldEntity().GetWorldBounds(low,high);
world.QueryEntitiesByAABB(low,high,ERR_LagFixture.Place,ERR_LagFixture.Town,EQueryEntitiesFlags.ALL);
mode.Transition(ERR_Phase.RADIO_SEARCH);
PrintFormat("ERR PLANE GUARD FIXTURE ready=%1 observer=%2",ERR_LagFixture.Ready,ERR_LagFixture.Observer);
}
if(now>=m_LagNext){m_LagNext=now+1000;hq.Tick(now);hq.Journal().Flush();}
ERR_PlaneFlight flight=hq.PlaneRecon().Current();
if(flight&&flight.Airborne())m_LagAirborne=true;
if(now>=m_LagPrint){m_LagPrint=now+10000;PrintFormat("ERR PLANE GUARD samples=%1 max=%2 admitted=%3 unsafe=%4 status=%5",ERR_LagFixture.WorkCount,ERR_LagFixture.WorkMax,ERR_LagFixture.Admitted,ERR_LagFixture.Unsafe,hq.PlaneRecon().Status());}
if(now-m_LagStart>150000)
{
m_LagDone=true; m_DoneAt=now; m_StoppedCount=ERR_LagFixture.WorkCount; hq.Stop(); PrintFormat("ERR PLANE FAULT SUMMARY guards=%1 unsafe=%2 slices=%3 max_ms=%4 sum_ms=%5 plane_airborne=%6",ERR_LagFixture.Admitted,ERR_LagFixture.Unsafe,ERR_LagFixture.WorkCount,ERR_LagFixture.WorkMax,ERR_LagFixture.WorkSum,m_LagAirborne);
}
}
}
// Component fixture: do not generate unrelated optional mission sites. The
// production guard discovery/placement, physics, roster and plane remain active.
modded class ERR_ScenarioComponent
{
override protected void BackgroundStep() {}
}
// Deliberate preparation failure tests the production retry circuit breaker.
modded class ERR_PlaneFlight
{
override protected bool Prepare(float now)
{
ERR_LagFixture.PlaneFailures++; Fail("injected native fixture preparation failure"); return false;
}
}
@@ -0,0 +1,63 @@
from pathlib import Path
import os,sys,json,shutil,subprocess,time,signal
ROOT=Path('/home/jakub/devel/escapistsrereintroduced');sys.path.insert(0,str(ROOT/'tools'))
from external_addons import policy,prepare_profile
from source_manifest import addon_manifest
from dedicated_native import PROBE
base=Path('/tmp/erri-plane-native');base.mkdir(exist_ok=True)
run=base/sys.argv[1];run.mkdir();source=run/'source';source.mkdir()
for rel in addon_manifest(ROOT):
dest=source/Path(rel).relative_to('addons/core');dest.parent.mkdir(parents=True,exist_ok=True);shutil.copy2(ROOT/rel,dest)
shutil.copy2('/tmp/erri-takeover-pair-source32/resourceDatabase.rdb',source/'resourceDatabase.rdb')
if run.name.endswith('-unfixed'): (source/'Scripts/Game/ERR/00_Core/ERR_ItemStationLifecycle.c').unlink()
shutil.copy2('/tmp/err-lag-fault-diag.c',source/'Scripts/Game/ERR/00_Core/ERR_ZErrorsProbe.c')
p=source/'Scripts/Game/ERR/10_AI/ERR_PlaneRecon.c'
s=p.read_text().replace('if (!Clear(start, forward)) return false;', 'if (!Clear(start, forward)) { PrintFormat("ERR PLANE BLOCKED start=%1 heading=%2", start, Heading); return false; }')
p.write_text(s)
addons=run/'addons';addons.mkdir();steam=Path.home()/'.local/share/Steam'
# Private compile-only profile: use the currently installed dependency projects.
import re
installed=steam/'steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons'
required={'595F2BF2F44836FB','629B2BA37EFFD577','5E524E4FEECCA92B','65930CB4CD0237B2'}
projects={}
for project in installed.glob('*/addon.gproj'):
text=project.read_text();match=re.search(r'GUID "([A-Fa-f0-9]+)"',text)
if match: projects[match[1].upper()]=(project,re.findall(r'"([A-Fa-f0-9]{16})"',text.split('Dependencies',1)[-1]) if 'Dependencies' in text else [])
pending=list(required);seen=set()
while pending:
guid=pending.pop()
if guid in seen or guid=='58D0FB3206B6F859':continue
seen.add(guid);project,deps=projects[guid]
(addons/('Dependency_'+guid)).symlink_to(project.parent,target_is_directory=True)
pending.extend(deps)
for folder in Path('/tmp/err-cessna-download/addons/addons').glob('*'):
if folder.is_dir(): (addons/folder.name).symlink_to(folder,target_is_directory=True)
(addons/'ERR_Core').symlink_to(source,target_is_directory=True)
profile=run/'profile/profile';profile.mkdir(parents=True)
(run/'network.py').write_text(PROBE)
config=json.loads(Path('/tmp/erri-plane-native/flight-13/profile/profile/Escapists.json').read_text())
config['factions']['enemy']='rhs_afrf'
config['mission']['planeReplacementSeconds']=30
(profile/'Escapists.json').write_text(json.dumps(config))
runtime=Path('/tmp/erri-takeover-dedicated-runtime')
engine=['/tmp/runtime/ArmaReforgerServer','-server','{C1E20667DCE324ED}Missions/ERR_Everon.conf','-addonsDir',str(addons),'-addons','2528466DE220D91C,69BAEE0D439966FE,69A8A34027DA65C5','-profile',str(run/'profile'),'-noBackend','-noSound','-bindIP','127.0.0.1','-bindPort','2001','-maxFPS','30','-logconsole','-noSplash','-noThrow','-disableCrashReporter']
cmd=['bwrap','--unshare-net','--unshare-pid','--unshare-ipc','--unshare-uts','--die-with-parent','--cap-drop','ALL','--ro-bind','/','/','--tmpfs','/tmp','--ro-bind',str(runtime),'/tmp/runtime','--ro-bind','/tmp/err-cessna-download','/tmp/err-cessna-download','--bind',str(run),str(run),'--proc','/proc','--dev','/dev','--chdir','/tmp/runtime','python',str(run/'network.py'),os.readlink('/proc/self/ns/net')]+engine
with (run/'stdout.log').open('w') as log:
p=subprocess.Popen(cmd,stdout=log,stderr=subprocess.STDOUT,start_new_session=True)
reason='timeout';start=time.monotonic()
try:
while time.monotonic()-start<360:
files=sorted((run/'profile/logs').glob('logs_*/console.log'));text=files[-1].read_text(errors='replace') if files else ''
if 'ERR PLANE COMPLETE' in text:reason='complete';break
if "Can't compile" in text:reason='compile-failed';break
if p.poll() is not None:reason='exit';break
time.sleep(.3)
finally:
if p.poll() is None:
os.killpg(p.pid,signal.SIGTERM)
try:p.wait(timeout=8)
except subprocess.TimeoutExpired:os.killpg(p.pid,signal.SIGKILL);p.wait()
(run/'result.json').write_text(json.dumps({'reason':reason,'exit':p.returncode}));print(reason)
print('\n'.join(line for line in text.splitlines() if 'PLANE' in line or 'SCRIPT (E)' in line))
@@ -0,0 +1,20 @@
21:56:17.751 SCRIPT : ERR PLANE GUARD FIXTURE ready=1 observer=<5192.76,31.895,10772>
21:56:17.754 SCRIPT : ERR PLANE GUARD samples=0 max=0 admitted=0 unsafe=0 status=Recon plane: optional Cessna not loaded
21:56:27.907 SCRIPT : ERR PLANE GUARD samples=88 max=13 admitted=0 unsafe=0 status=Recon plane: surveying an airport departure corridor
21:56:29.481 SCRIPT : ERR PLANE TEST observer moved into remaining planned guard positions
21:56:38.540 SCRIPT : ERR PLANE GUARD samples=176 max=19 admitted=0 unsafe=0 status=Recon plane: surveying an airport departure corridor
21:56:48.567 SCRIPT : ERR PLANE BLOCKED start=<4788.55,27.9125,11278.9> heading=0
21:56:48.808 SCRIPT : ERR PLANE GUARD samples=268 max=19 admitted=0 unsafe=0 status=Recon plane: injected native fixture preparation failure
21:56:58.874 SCRIPT : ERR PLANE GUARD samples=358 max=19 admitted=0 unsafe=0 status=Recon plane: injected native fixture preparation failure; replacement pending
21:57:08.873 SCRIPT : ERR PLANE GUARD samples=450 max=19 admitted=0 unsafe=0 status=Recon plane: injected native fixture preparation failure; replacement pending
21:57:18.907 SCRIPT : ERR PLANE GUARD samples=541 max=19 admitted=0 unsafe=0 status=Recon plane: injected native fixture preparation failure; replacement pending
21:57:28.907 SCRIPT : ERR PLANE GUARD samples=632 max=19 admitted=0 unsafe=0 status=Recon plane: injected native fixture preparation failure; replacement pending
21:57:38.941 SCRIPT : ERR PLANE GUARD samples=724 max=19 admitted=0 unsafe=0 status=Recon plane: injected native fixture preparation failure; replacement pending
21:57:48.940 SCRIPT : ERR PLANE GUARD samples=815 max=19 admitted=0 unsafe=0 status=Recon plane: injected native fixture preparation failure; replacement pending
21:57:58.973 SCRIPT : ERR PLANE GUARD samples=908 max=19 admitted=0 unsafe=0 status=Recon plane: three consecutive preparation failures; paused until next round
21:58:08.976 SCRIPT : ERR PLANE GUARD samples=997 max=19 admitted=0 unsafe=0 status=Recon plane: three consecutive preparation failures; paused until next round
21:58:19.007 SCRIPT : ERR PLANE GUARD samples=1089 max=19 admitted=0 unsafe=0 status=Recon plane: three consecutive preparation failures; paused until next round
21:58:29.040 SCRIPT : ERR PLANE GUARD samples=1179 max=19 admitted=0 unsafe=0 status=Recon plane: three consecutive preparation failures; paused until next round
21:58:39.072 SCRIPT : ERR PLANE GUARD samples=1273 max=19 admitted=0 unsafe=0 status=Recon plane: three consecutive preparation failures; paused until next round
21:58:48.807 SCRIPT : ERR PLANE FAULT SUMMARY guards=0 unsafe=0 slices=1362 max_ms=19 sum_ms=513 plane_airborne=0
21:58:50.840 SCRIPT : ERR PLANE COMPLETE faults birth_burst=1 moved=1 cancelled=1 setup_failures=3 callbacks_stopped=1
@@ -0,0 +1,62 @@
from pathlib import Path
import os,sys,json,shutil,subprocess,time,signal
ROOT=Path('/home/jakub/devel/escapistsrereintroduced');sys.path.insert(0,str(ROOT/'tools'))
from external_addons import policy,prepare_profile
from source_manifest import addon_manifest
from dedicated_native import PROBE
base=Path('/tmp/erri-plane-native');base.mkdir(exist_ok=True)
run=base/sys.argv[1];run.mkdir();source=run/'source';source.mkdir()
for rel in addon_manifest(ROOT):
dest=source/Path(rel).relative_to('addons/core');dest.parent.mkdir(parents=True,exist_ok=True);shutil.copy2(ROOT/rel,dest)
shutil.copy2('/tmp/erri-takeover-pair-source32/resourceDatabase.rdb',source/'resourceDatabase.rdb')
if run.name.endswith('-unfixed'): (source/'Scripts/Game/ERR/00_Core/ERR_ItemStationLifecycle.c').unlink()
shutil.copy2('/tmp/err-lag-diag.c',source/'Scripts/Game/ERR/00_Core/ERR_ZErrorsProbe.c')
p=source/'Scripts/Game/ERR/10_AI/ERR_PlaneRecon.c'
s=p.read_text().replace('if (!Clear(start, forward)) return false;', 'if (!Clear(start, forward)) { PrintFormat("ERR PLANE BLOCKED start=%1 heading=%2", start, Heading); return false; }')
p.write_text(s)
addons=run/'addons';addons.mkdir();steam=Path.home()/'.local/share/Steam'
# Private compile-only profile: use the currently installed dependency projects.
import re
installed=steam/'steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons'
required={'595F2BF2F44836FB','629B2BA37EFFD577','5E524E4FEECCA92B','65930CB4CD0237B2'}
projects={}
for project in installed.glob('*/addon.gproj'):
text=project.read_text();match=re.search(r'GUID "([A-Fa-f0-9]+)"',text)
if match: projects[match[1].upper()]=(project,re.findall(r'"([A-Fa-f0-9]{16})"',text.split('Dependencies',1)[-1]) if 'Dependencies' in text else [])
pending=list(required);seen=set()
while pending:
guid=pending.pop()
if guid in seen or guid=='58D0FB3206B6F859':continue
seen.add(guid);project,deps=projects[guid]
(addons/('Dependency_'+guid)).symlink_to(project.parent,target_is_directory=True)
pending.extend(deps)
for folder in Path('/tmp/err-cessna-download/addons/addons').glob('*'):
if folder.is_dir(): (addons/folder.name).symlink_to(folder,target_is_directory=True)
(addons/'ERR_Core').symlink_to(source,target_is_directory=True)
profile=run/'profile/profile';profile.mkdir(parents=True)
(run/'network.py').write_text(PROBE)
config=json.loads(Path('/tmp/erri-plane-native/flight-13/profile/profile/Escapists.json').read_text())
config['factions']['enemy']='rhs_afrf'
(profile/'Escapists.json').write_text(json.dumps(config))
runtime=Path('/tmp/erri-takeover-dedicated-runtime')
engine=['/tmp/runtime/ArmaReforgerServer','-server','{C1E20667DCE324ED}Missions/ERR_Everon.conf','-addonsDir',str(addons),'-addons','2528466DE220D91C,69BAEE0D439966FE,69A8A34027DA65C5','-profile',str(run/'profile'),'-noBackend','-noSound','-bindIP','127.0.0.1','-bindPort','2001','-maxFPS','30','-logconsole','-noSplash','-noThrow','-disableCrashReporter']
cmd=['bwrap','--unshare-net','--unshare-pid','--unshare-ipc','--unshare-uts','--die-with-parent','--cap-drop','ALL','--ro-bind','/','/','--tmpfs','/tmp','--ro-bind',str(runtime),'/tmp/runtime','--ro-bind','/tmp/err-cessna-download','/tmp/err-cessna-download','--bind',str(run),str(run),'--proc','/proc','--dev','/dev','--chdir','/tmp/runtime','python',str(run/'network.py'),os.readlink('/proc/self/ns/net')]+engine
with (run/'stdout.log').open('w') as log:
p=subprocess.Popen(cmd,stdout=log,stderr=subprocess.STDOUT,start_new_session=True)
reason='timeout';start=time.monotonic()
try:
while time.monotonic()-start<360:
files=sorted((run/'profile/logs').glob('logs_*/console.log'));text=files[-1].read_text(errors='replace') if files else ''
if 'ERR PLANE COMPLETE' in text:reason='complete';break
if "Can't compile" in text:reason='compile-failed';break
if p.poll() is not None:reason='exit';break
time.sleep(.3)
finally:
if p.poll() is None:
os.killpg(p.pid,signal.SIGTERM)
try:p.wait(timeout=8)
except subprocess.TimeoutExpired:os.killpg(p.pid,signal.SIGKILL);p.wait()
(run/'result.json').write_text(json.dumps({'reason':reason,'exit':p.returncode}));print(reason)
print('\n'.join(line for line in text.splitlines() if 'PLANE' in line or 'SCRIPT (E)' in line))
@@ -0,0 +1,199 @@
---------------------------------------------
Log /tmp/erri-plane-native/guard-slices-rhs-2/profile/logs/logs_2026-10-08_21-52-17/error.log started at 2026-10-08 21:52:17 (2026-10-08 19:52:17 UTC)
21:52:17.642 ENGINE : GameProject load
21:52:17.642 INIT : GameProject load project data @"/tmp/erri-plane-native/guard-slices-rhs-2/addons/Dependency_595F2BF2F44836FB/addon.gproj"
21:52:17.642 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource"
21:52:17.642 INIT : GameProject load project data @"/tmp/erri-plane-native/guard-slices-rhs-2/addons/Dependency_629B2BA37EFFD577/addon.gproj"
21:52:17.642 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource"
21:52:17.642 INIT : GameProject load project data @"/tmp/erri-plane-native/guard-slices-rhs-2/addons/Dependency_5E389BB9F58B79A6/addon.gproj"
21:52:17.642 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource"
21:52:17.642 INIT : GameProject load project data @"/tmp/erri-plane-native/guard-slices-rhs-2/addons/Dependency_5E524E4FEECCA92B/addon.gproj"
21:52:17.642 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource"
21:52:18.392 SCRIPT : Compiling Game scripts
21:52:18.392 SCRIPT (W): @"Scripts/Game/Parachutes/ParachuteDeployed.c,7": Pointer type 'Physics' can only be used with local variables
21:52:18.757 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete
21:52:18.757 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete
21:52:19.032 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,360": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
21:52:19.045 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed
21:52:19.086 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete
21:52:19.211 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete
21:52:19.211 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete
21:52:19.211 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete
21:52:19.211 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete
21:52:19.244 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead
21:52:19.305 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c,64": 'GetPlayerIdentityId' is obsolete
21:52:19.316 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete
21:52:19.316 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete
21:52:19.317 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete
21:52:19.365 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
21:52:19.365 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
21:52:19.366 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api.
21:52:19.366 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api.
21:52:19.427 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete
21:52:24.803 WORLD : Game::LoadEntities
21:52:24.803 WORLD : CreateEntities
21:52:24.803 WORLD : CreateEntities
21:52:24.803 ENTITY : Create entity @"ENTITY:610406" ('StaticModelEntity','Assets/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.xob') at <1931.796021 81.777000 5138.725098> @"{6A004A8F0571D456}Prefabs/Structures/Infrastructure/Towers/TransmitterTower_01/TransmitterTower_01_small.et"
21:52:24.803 ENTITY : CreateComponent 'ScriptedRadioComponent'
21:52:24.803 DEFAULT (W): World doesn't contain RadioManagerEntity to support any BaseRadioComponent.
21:52:29.169 ENTITY : Create entity @"ENTITY:2305843009213693956" ('Factions', SCR_FactionManager) at <0.000000 0.000000 0.000000> @"{5414041A15DC4B54}Prefabs/ERR/FactionManager.et"
21:52:29.169 RESOURCES : GetResourceObject @"{442939C9617DF228}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_FIA.et"
21:52:29.169 WORLD : Entity prefab load @"{442939C9617DF228}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_FIA.et"
21:52:29.169 RESOURCES : GetResourceObject @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
21:52:29.169 WORLD : Entity prefab load @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
21:52:29.169 RESOURCES : GetResourceObject @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
21:52:29.169 WORLD : Entity prefab load @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
21:52:29.169 WORLD (E): Unknown keyword/data 'Parent' at offset 35955(0x8c73)
21:52:29.169 WORLD (E): Unknown keyword/data 'Parent' at offset 36915(0x9033)
21:52:29.170 RESOURCES : GetResourceObject @"{B47110AA1A806556}Prefabs/Vehicles/Wheeled/BTR70/BTR70_FIA.et"
21:52:29.170 WORLD : Entity prefab load @"{B47110AA1A806556}Prefabs/Vehicles/Wheeled/BTR70/BTR70_FIA.et"
21:52:29.170 RESOURCES : GetResourceObject @"{B47110AA1A806556}Prefabs/Vehicles/Wheeled/BTR70/BTR70_FIA.et"
21:52:29.170 WORLD : Entity prefab load @"{B47110AA1A806556}Prefabs/Vehicles/Wheeled/BTR70/BTR70_FIA.et"
21:52:29.170 RESOURCES : GetResourceObject @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
21:52:29.170 WORLD : Entity prefab load @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
21:52:29.170 RESOURCES : GetResourceObject @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
21:52:29.170 WORLD : Entity prefab load @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
21:52:29.170 WORLD (E): Unknown keyword/data 'Parent' at offset 42646(0xa696)
21:52:29.170 WORLD (E): Unknown keyword/data 'Parent' at offset 43645(0xaa7d)
21:52:29.170 WORLD (E): Unknown keyword/data 'Parent' at offset 44617(0xae49)
21:52:29.170 WORLD (E): Unknown keyword/data 'Parent' at offset 45590(0xb216)
21:52:29.243 RESOURCES : GetResourceObject @"{F6B23D17D5067C11}Prefabs/Vehicles/Wheeled/M151A2/M151A2_M2HB.et"
21:52:29.243 WORLD : Entity prefab load @"{F6B23D17D5067C11}Prefabs/Vehicles/Wheeled/M151A2/M151A2_M2HB.et"
21:52:29.243 RESOURCES : GetResourceObject @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
21:52:29.243 WORLD : Entity prefab load @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
21:52:29.243 RESOURCES : GetResourceObject @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
21:52:29.243 WORLD : Entity prefab load @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
21:52:29.243 RESOURCES : GetResourceObject @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
21:52:29.243 WORLD : Entity prefab load @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
21:52:29.243 WORLD (E): Unknown keyword/data 'SlidingTrackMaterial' at offset 19441(0x4bf1)
21:52:29.588 WORLD : InitEntities 'world'
21:52:29.588 ENTITY : Init entity @"ENTITY:3" ('SCR_MapEntity1', SCR_MapEntity) at <6400.000000 0.000000 6400.000000> @"{E1B88C66BF6CA1F9}Prefabs/World/Game/Eden/MapEntity_Everon.et"
21:52:29.588 SCRIPT (W): SCR_MapEntity: Cannot get the size from terrain. Using default.
21:52:45.276 ENTITY : SpawnEntityPrefab @"{16C1F16C9B053801}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_transport.et"
21:52:45.276 ENTITY : Create entity @"ENTITY:4611686018427389500" ('Vehicle') at <5412.954102 85.243980 6299.176270> @"{16C1F16C9B053801}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_transport.et"
21:52:45.276 ENTITY : CreateComponent 'BaseRadioComponent'
21:52:45.276 DEFAULT (W): BaseRadioComponent does not have any transceiver. (Entity: @"ENTITY:4611686018427389500" ('Vehicle') at <5412.954102 85.243980 6299.176270> @"{16C1F16C9B053801}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_transport.et"). Only printing this message once. There're possibly more nodes with this requirement.
21:52:48.488 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.488 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.488 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.488 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.488 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.488 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.488 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.488 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.488 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.488 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.489 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.490 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.491 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.491 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.491 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.491 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.491 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.491 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.491 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.491 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.491 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.491 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.492 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.493 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.494 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.495 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.495 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.495 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.495 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:52:48.495 RESOURCES (E): Wrong GUID/name for resource @"{792634D9359AED21}Prefabs/ERR/CombatEpinephrine.et" in property "<missing-def>"
21:53:13.319 ENTITY : SpawnEntityPrefab @"{B05C52F642F47298}Prefabs/Vehicles/Planes/Cessna172zbq.et"
21:53:13.319 ENTITY : Create entity @"ENTITY:4611686018427390958" ('Vehicle','models/Cessna172model.xob') at <4766.761719 28.443750 11279.856445> @"{B05C52F642F47298}Prefabs/Vehicles/Planes/Cessna172zbq.et"
21:53:13.319 ENTITY : SpawnEntityPrefab @"{7813442604D1F28D}Prefabs/Vehicles/Planes/cessna172_cockpitpanel_main.et"
21:53:13.319 ENTITY : Create entity @"ENTITY:4611686018427390968" ('GenericEntity') at <4766.761719 28.443750 11279.856445>
21:53:13.319 ENTITY : EntityPrefabUse @"{7813442604D1F28D}Prefabs/Vehicles/Planes/cessna172_cockpitpanel_main.et"
21:53:13.319 ANIMATION (W): AnimationVariableInt is deprecated (variable 'IsInVehicle'), redeclare as AnimationVariable
21:53:13.319 ANIMATION (W): AnimationVariableInt is deprecated (variable 'RotorState0'), redeclare as AnimationVariable
21:53:13.319 ANIMATION (W): AnimationVariableInt is deprecated (variable 'RotorState1'), redeclare as AnimationVariable
21:53:13.319 ANIMATION (W): Variable 'FUEL' is not bound to any signal
@@ -0,0 +1,72 @@
class ERR_LagFixture
{
static vector Centre;
static vector Observer;
static bool Ready;
static int WorkCount;
static int WorkMax;
static int WorkSum;
static int Admitted;
static int Unsafe;
static bool Place(IEntity entity)
{
Centre = entity.GetOrigin(); Observer = ERR_Actors.Ground(Centre + "690 0 0"); Ready = true; return false;
}
static bool Town(IEntity entity)
{
MapDescriptorComponent d = MapDescriptorComponent.Cast(entity.FindComponent(MapDescriptorComponent));
return d && d.GetBaseType() == EMapDescriptorType.MDT_NAME_CITY;
}
}
modded class ERR_TownGarrisons
{
override protected void Players(out array<vector> positions)
{
positions.Clear(); if (ERR_LagFixture.Ready) positions.Insert(ERR_LagFixture.Observer);
}
override protected void Work(float now)
{
int start=System.GetTickCount(); super.Work(now); int elapsed=System.GetTickCount()-start;
ERR_LagFixture.WorkCount++; ERR_LagFixture.WorkMax=Math.Max(ERR_LagFixture.WorkMax,elapsed); ERR_LagFixture.WorkSum+=elapsed;
}
override protected void Admitted(ERR_TownGarrison town)
{
super.Admitted(town); ERR_LagFixture.Admitted++;
array<AIAgent> agents={};town.Group.GetAgents(agents);
foreach(AIAgent a:agents) if(vector.DistanceXZ(a.GetControlledEntity().GetOrigin(),ERR_LagFixture.Observer)<SpawnDistance()) ERR_LagFixture.Unsafe++;
}
}
modded class ArmaReforgerScripted
{
protected float m_LagStart,m_LagNext,m_LagPrint;
protected bool m_LagDone,m_LagAirborne;
override void OnUpdate(BaseWorld world,float timeslice)
{
super.OnUpdate(world,timeslice);
ERR_GameMode mode=ERR_GameMode.Get();ERR_HQ hq=ERR_HQ.Get();
if(!mode||!hq||!mode.Active()||m_LagDone)return;
float now=world.GetWorldTime();
if(m_LagStart==0)
{
m_LagStart=now;
vector low,high;GetGame().GetWorldEntity().GetWorldBounds(low,high);
world.QueryEntitiesByAABB(low,high,ERR_LagFixture.Place,ERR_LagFixture.Town,EQueryEntitiesFlags.ALL);
mode.Transition(ERR_Phase.RADIO_SEARCH);
PrintFormat("ERR PLANE GUARD FIXTURE ready=%1 observer=%2",ERR_LagFixture.Ready,ERR_LagFixture.Observer);
}
if(now>=m_LagNext){m_LagNext=now+1000;hq.Tick(now);hq.Journal().Flush();}
ERR_PlaneFlight flight=hq.PlaneRecon().Current();
if(flight&&flight.Airborne())m_LagAirborne=true;
if(now>=m_LagPrint){m_LagPrint=now+10000;PrintFormat("ERR PLANE GUARD samples=%1 max=%2 admitted=%3 unsafe=%4 status=%5",ERR_LagFixture.WorkCount,ERR_LagFixture.WorkMax,ERR_LagFixture.Admitted,ERR_LagFixture.Unsafe,hq.PlaneRecon().Status());}
if(now-m_LagStart>150000)
{
m_LagDone=true;PrintFormat("ERR PLANE COMPLETE guards=%1 unsafe=%2 slices=%3 max_ms=%4 sum_ms=%5 plane_airborne=%6",ERR_LagFixture.Admitted,ERR_LagFixture.Unsafe,ERR_LagFixture.WorkCount,ERR_LagFixture.WorkMax,ERR_LagFixture.WorkSum,m_LagAirborne);
}
}
}
// Component fixture: do not generate unrelated optional mission sites. The
// production guard discovery/placement, physics, roster and plane remain active.
modded class ERR_ScenarioComponent
{
override protected void BackgroundStep() {}
}
@@ -0,0 +1,46 @@
ERR PERF START schema=1 run=1791489150-12848 clock=wall_ms resolution_ms=1 window_ms=60000 engine_sample_ms=1000 native_ai_time=unavailable disable=-errNoPerf
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=mission_tick_ms samples=47 sum=2836 min=0 max=181 zero=6 over50=24 over100=10
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=maintenance_ms samples=47 sum=2827 min=0 max=181 zero=7 over50=24 over100=10
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=civilians_ms samples=47 sum=1 min=0 max=1 zero=46 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=forces_ms samples=47 sum=3 min=0 max=1 zero=44 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=hq_prep_ms samples=46 sum=99 min=0 max=30 zero=30 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=hq_hunters_ms samples=46 sum=205 min=0 max=111 zero=27 over50=1 over100=1
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=hq_garrisons_ms samples=46 sum=0 min=0 max=0 zero=46 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=hq_convoys_ms samples=46 sum=2 min=0 max=1 zero=44 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=hq_bodies_ms samples=46 sum=0 min=0 max=0 zero=46 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=hq_radio_index_ms samples=10 sum=28 min=0 max=4 zero=1 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=hq_reports_ms samples=46 sum=27 min=0 max=3 zero=27 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=hq_planner_ms samples=10 sum=2 min=0 max=1 zero=8 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=hq_support_ms samples=46 sum=3 min=0 max=1 zero=43 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=hq_journal_ms samples=46 sum=2 min=0 max=1 zero=44 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=update_interval_ms samples=1604 sum=56639 min=2 max=1352 zero=0 over50=39 over100=25
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=engine_sim_sample_ms samples=56 sum=307.565 min=0 max=20.9468 zero=1 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=engine_frame_sample_ms samples=56 sum=1966.81 min=28.9983 max=108.034 zero=0 over50=1 over100=1
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=engine_fps_sample samples=56 sum=1648.59 min=9.25634 max=34.4848 zero=0 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=active_ai_sample samples=56 sum=1798 min=0 max=43 zero=8 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=players_sample samples=56 sum=0 min=0 max=0 zero=56 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=hq_groups_sample samples=46 sum=257 min=0 max=7 zero=2 over50=0 over100=0
ERR PERF run=1791489150-12848 window=1 elapsed_ms=60017 final=0 phase_start=0 phase_end=2 metric=garrison_work_ms samples=417 sum=461 min=0 max=19 zero=269 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=mission_tick_ms samples=59 sum=45 min=0 max=20 zero=38 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=maintenance_ms samples=59 sum=31 min=0 max=20 zero=52 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=civilians_ms samples=59 sum=0 min=0 max=0 zero=59 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=forces_ms samples=59 sum=9 min=0 max=1 zero=50 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=hq_prep_ms samples=59 sum=79 min=0 max=7 zero=25 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=hq_hunters_ms samples=59 sum=23 min=0 max=1 zero=36 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=hq_garrisons_ms samples=59 sum=0 min=0 max=0 zero=59 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=hq_convoys_ms samples=59 sum=2 min=0 max=1 zero=57 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=hq_bodies_ms samples=59 sum=0 min=0 max=0 zero=59 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=hq_radio_index_ms samples=11 sum=39 min=3 max=4 zero=0 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=hq_reports_ms samples=59 sum=46 min=0 max=4 zero=21 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=hq_planner_ms samples=11 sum=3 min=0 max=1 zero=8 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=hq_support_ms samples=59 sum=24 min=0 max=19 zero=53 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=hq_journal_ms samples=59 sum=1 min=0 max=1 zero=58 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=update_interval_ms samples=1801 sum=60033 min=20 max=52 zero=0 over50=1 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=engine_sim_sample_ms samples=59 sum=360.722 min=5.224 max=9.5662 zero=0 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=engine_frame_sample_ms samples=59 sum=1963.32 min=30.7532 max=33.9909 zero=0 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=engine_fps_sample samples=59 sum=1773.27 min=29.4196 max=32.5169 zero=0 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=active_ai_sample samples=59 sum=2988 min=43 max=55 zero=0 over50=35 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=players_sample samples=59 sum=0 min=0 max=0 zero=59 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=hq_groups_sample samples=59 sum=487 min=7 max=9 zero=0 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=garrison_work_ms samples=544 sum=145 min=0 max=9 zero=496 over50=0 over100=0
ERR PERF run=1791489150-12848 window=2 elapsed_ms=60033 final=0 phase_start=2 phase_end=2 metric=performance_flush_ms samples=1 sum=1 min=1 max=1 zero=0 over50=0 over100=0
@@ -0,0 +1,17 @@
21:52:42.254 SCRIPT : ERR PLANE GUARD FIXTURE ready=1 observer=<5192.76,31.895,10772>
21:52:42.259 SCRIPT : ERR PLANE GUARD samples=0 max=0 admitted=0 unsafe=0 status=Recon plane: optional Cessna not loaded
21:52:52.401 SCRIPT : ERR PLANE GUARD samples=87 max=13 admitted=0 unsafe=0 status=Recon plane: surveying an airport departure corridor
21:53:03.054 SCRIPT : ERR PLANE GUARD samples=175 max=19 admitted=1 unsafe=0 status=Recon plane: surveying an airport departure corridor
21:53:13.328 SCRIPT : ERR PLANE GUARD samples=265 max=19 admitted=1 unsafe=0 status=Recon plane: preparing aircraft crew
21:53:23.301 SCRIPT : ERR PLANE GUARD samples=354 max=19 admitted=1 unsafe=0 status=Recon plane: runway takeoff
21:53:33.334 SCRIPT : ERR PLANE GUARD samples=446 max=19 admitted=1 unsafe=0 status=Recon plane: runway takeoff
21:53:43.333 SCRIPT : ERR PLANE GUARD samples=538 max=19 admitted=1 unsafe=0 status=Recon plane: patrolling island sectors
21:53:53.333 SCRIPT : ERR PLANE GUARD samples=628 max=19 admitted=1 unsafe=0 status=Recon plane: patrolling island sectors
21:54:03.366 SCRIPT : ERR PLANE GUARD samples=721 max=19 admitted=2 unsafe=0 status=Recon plane: patrolling island sectors
21:54:13.367 SCRIPT : ERR PLANE GUARD samples=812 max=19 admitted=2 unsafe=0 status=Recon plane: patrolling island sectors
21:54:23.366 SCRIPT : ERR PLANE GUARD samples=901 max=19 admitted=2 unsafe=0 status=Recon plane: patrolling island sectors
21:54:33.400 SCRIPT : ERR PLANE GUARD samples=990 max=19 admitted=2 unsafe=0 status=Recon plane: patrolling island sectors
21:54:43.433 SCRIPT : ERR PLANE GUARD samples=1080 max=19 admitted=2 unsafe=0 status=Recon plane: patrolling island sectors
21:54:53.466 SCRIPT : ERR PLANE GUARD samples=1170 max=19 admitted=2 unsafe=0 status=Recon plane: patrolling island sectors
21:55:03.500 SCRIPT : ERR PLANE GUARD samples=1260 max=19 admitted=2 unsafe=0 status=Recon plane: patrolling island sectors
21:55:13.266 SCRIPT : ERR PLANE COMPLETE guards=2 unsafe=0 slices=1349 max_ms=19 sum_ms=613 plane_airborne=1
@@ -0,0 +1,6 @@
PASS: town trigger and hard 700m exclusion for all observers, empty/invalid positions and final-check crossings
PASS: object guard split, hard 1000m exclusion / 1400m activation, footprint support, slopes, holes and invalid traces
PASS: actual fixed-post admission reserves only stationary guards from HQ retasking and tightens their defend radius
PASS: production site classification accepts structures/descriptors and excludes industrial props, fragments, flags, ruins and vehicles
PASS: actual Intel/HQ methods and one-shot qualified readiness handoff deliver late actors once; duplicate readiness, accepted spawn, pickup/drop, death and original negative rolls do not mint assignments
PASS: Workbench-only read accessor rejects unknown/nonserver identities; Chat observes all distinct ready crew before existing shell-depletion mutation
@@ -0,0 +1,37 @@
{
"engine": "1.8.0.13",
"terrain": "Everon",
"enemy": "RHS_AFRF",
"native_probe": {
"slices": 1349,
"max_ms": 19,
"sum_ms": 613,
"admitted_town_squads": 2,
"unsafe_admissions": 0,
"plane_airborne": true
},
"live_baseline": {
"directory": "logs_2026-10-08_16-41-19",
"run": "1791479403-1723610",
"scope": "20 stable populated minute windows",
"update_gap_max_ms": 981,
"hq_garrisons_max_ms": 856,
"hq_journal_max_ms": 7
},
"comparison_limit": "Different terrain, population and hardware; not a matched before/after benchmark. No claimed live FPS gain. Native component fixture suppresses unrelated procedural site generation and substitutes observer positions.",
"source_sha256": {
"addons/core/Scripts/Game/ERR/10_AI/ERR_TownGarrisons.c": "6ac46e890c6469483f2b749b6976558dba400157d0225a4da45384303985efef",
"addons/core/Scripts/Game/ERR/10_AI/ERR_NativeTownProbe.c": "28876e65f9f8a7d96d8056f446b61e12e97d9bbf1a5ac0d4c40edee44e6c4a21",
"addons/core/Scripts/Game/ERR/10_AI/ERR_PlaneFlight.c": "72d40872e7b2866d211b97db665cf821a47e83fb67da68361a36465771a6ac61",
"addons/core/Scripts/Game/ERR/10_AI/ERR_PlaneRecon.c": "5e0fa4e2121af5af11c8371457ee2c2578b62ad4aa394c832d107369ae47735b",
"addons/core/Scripts/Game/ERR/00_Core/ERR_Performance.c": "8c902913f206acaf84b9e92ceae34723126a40057fdea14c9cbc47cee5454ecb",
"tools/parse_hq_performance.py": "088301899bb8094fa1723052261242388a0f0b67709546f9423ef92b8f830ec4"
},
"fault_fixture": {
"maximum_births_per_slice": 1,
"player_moved_into_planned_positions": true,
"pending_group_cancelled_and_removed": true,
"consecutive_preparation_failures": 3,
"callbacks_stopped": true
}
}