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:
@@ -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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user