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,257 @@
---------------------------------------------
Log /tmp/erri-editor-native/run4/profile/logs/logs_2026-10-03_19-30-27/console.log started at 2026-10-03 19:30:27 (2026-10-03 17:30:27 UTC)
19:30:27.695 ENGINE : FileSystem: Adding relative directory '/tmp/erri-editor-native/run4/profile/logs/logs_2026-10-03_19-30-27' to filesystem under name logs
19:30:27.695 ENGINE : FileSystem: Adding relative directory '/tmp/erri-editor-native/run4/profile/profile' to filesystem under name profile
19:30:27.695 ENGINE : FileSystem: Current working directory: '/tmp/runtime/'
19:30:27.696 ENGINE : Initializing engine, version 192142
19:30:27.696 ENGINE : CLI Params: -server {469880DFE1B48F95}Missions/Nogova_TerrainTest.conf -addonsDir /tmp/erri-editor-native/run4/addons -addons 2528466DE220D91C,70C981A53E02B64F -profile /tmp/erri-editor-native/run4/profile -noBackend -noSound -bindIP 127.0.0.1 -bindPort 2001 -maxFPS 30 -logconsole -noSplash -noThrow -disableCrashReporter
19:30:27.699 ENGINE : Addon dirs:
19:30:27.699 ENGINE : dir: '/tmp/erri-editor-native/run4/addons'
19:30:27.699 ENGINE : dir: './addons'
19:30:27.699 ENGINE : dir: '/tmp/erri-editor-native/run4/profile/addons'
19:30:27.699 ENGINE : Available addons:
19:30:27.699 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/Nogova/addon.gproj' guid: '70C981A53E02B64F'
19:30:27.699 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERR_Core/addon.gproj' guid: '2528466DE220D91C'
19:30:27.699 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' (packed)
19:30:27.699 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERRI_65930CB4CD0237B2/addon.gproj' guid: '65930CB4CD0237B2' (packed)
19:30:27.699 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' (packed)
19:30:27.699 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' (packed)
19:30:27.699 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' (packed)
19:30:27.699 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' (packed)
19:30:27.699 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' (packed)
19:30:27.699 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' (packed)
19:30:27.699 ENGINE : gproj: './addons/data/ArmaReforger.gproj' guid: '58D0FB3206B6F859' (packed)
19:30:27.699 ENGINE : FileSystem: Adding relative directory '/home/jakub/devel/gabreta/addons/NogovaReforger' to filesystem under name NogovaReforger
19:30:27.699 ENGINE : FileSystem: Adding relative directory '/tmp/erri-editor-native/run4/source' to filesystem under name ERR_Core
19:30:27.699 ENGINE : FileSystem: Adding package '/tmp/erri-editor-native/run4/addons/ERRI_65930CB4CD0237B2/' (pak count: 1) to filesystem under name Parachutes
19:30:27.699 ENGINE : FileSystem: Adding package '/tmp/erri-editor-native/run4/addons/ERRI_5E524E4FEECCA92B/' (pak count: 1) to filesystem under name WCS_BMP-1
19:30:27.699 ENGINE : FileSystem: Adding package '/tmp/erri-editor-native/run4/addons/ERRI_5E389BB9F58B79A6/' (pak count: 1) to filesystem under name WCS_SpaceCore
19:30:27.700 ENGINE : FileSystem: Adding package '/tmp/erri-editor-native/run4/addons/ERRI_629B2BA37EFFD577/' (pak count: 1) to filesystem under name WCS_Armaments
19:30:27.704 ENGINE : FileSystem: Adding package '/tmp/erri-editor-native/run4/addons/ERRI_595F2BF2F44836FB/' (pak count: 1) to filesystem under name RHS_Core
19:30:27.705 ENGINE : FileSystem: Adding package '/tmp/erri-editor-native/run4/addons/ERRI_BADC0DEDABBEDA5E/' (pak count: 2) to filesystem under name RHS_Content_02
19:30:27.708 ENGINE : FileSystem: Adding package '/tmp/erri-editor-native/run4/addons/ERRI_1337C0DE5DABBEEF/' (pak count: 4) to filesystem under name RHS_Content_01
19:30:27.806 ENGINE : FileSystem: Adding package './addons/data/' (pak count: 14) to filesystem under name ArmaReforger
19:30:27.808 ENGINE : FileSystem: Adding package './addons/core/' (pak count: 2) to filesystem under name core
19:30:27.808 ENGINE : CPU vendor : AuthenticAMD
19:30:27.808 ENGINE : CPU type : 2
19:30:27.808 ENGINE : CPU name : AMD Ryzen 7 3800XT 8-Core Processor
19:30:27.808 ENGINE : CPU cache info : Unknown cache
19:30:27.808 ENGINE : CPU count logical : 16
19:30:27.808 ENGINE : CPU count physical : 8
19:30:27.808 ENGINE : CPU features : mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcnt aesni pclmulqdq osxsave avx sha avx2
19:30:27.808 RESOURCES : ResourceDB: loading cache (id=0 name=NogovaReforger path=/home/jakub/devel/gabreta/addons/NogovaReforger/resourceDatabase.rdb)
19:30:27.818 RESOURCES : ResourceDB: loading cache (id=1 name=ERR_Core path=/tmp/erri-editor-native/run4/source/resourceDatabase.rdb)
19:30:27.818 RESOURCES : ResourceDB: loading cache (id=2 name=Parachutes path=/tmp/erri-editor-native/run4/addons/ERRI_65930CB4CD0237B2/resourceDatabase.rdb)
19:30:27.818 RESOURCES : ResourceDB: loading cache (id=3 name=WCS_BMP-1 path=/tmp/erri-editor-native/run4/addons/ERRI_5E524E4FEECCA92B/resourceDatabase.rdb)
19:30:27.818 RESOURCES : ResourceDB: loading cache (id=4 name=WCS_SpaceCore path=/tmp/erri-editor-native/run4/addons/ERRI_5E389BB9F58B79A6/resourceDatabase.rdb)
19:30:27.819 RESOURCES : ResourceDB: loading cache (id=5 name=WCS_Armaments path=/tmp/erri-editor-native/run4/addons/ERRI_629B2BA37EFFD577/resourceDatabase.rdb)
19:30:27.820 RESOURCES : ResourceDB: loading cache (id=6 name=RHS_Core path=/tmp/erri-editor-native/run4/addons/ERRI_595F2BF2F44836FB/resourceDatabase.rdb)
19:30:27.830 RESOURCES : ResourceDB: loading cache (id=7 name=RHS_Content_02 path=/tmp/erri-editor-native/run4/addons/ERRI_BADC0DEDABBEDA5E/resourceDatabase.rdb)
19:30:27.831 RESOURCES : ResourceDB: loading cache (id=8 name=RHS_Content_01 path=/tmp/erri-editor-native/run4/addons/ERRI_1337C0DE5DABBEEF/resourceDatabase.rdb)
19:30:27.836 RESOURCES : ResourceDB: loading cache (id=9 name=ArmaReforger path=./addons/data/resourceDatabase.rdb)
19:30:27.954 RESOURCES : ResourceDB: loading cache (id=10 name=core path=./addons/core/resourceDatabase.rdb)
19:30:27.955 RESOURCES : ResourceDB: loading cache (id=11 name=profile path=/tmp/erri-editor-native/run4/profile/profile/resourceDatabase.rdb)
19:30:27.955 RESOURCES : ResourceDB: loading cache (id=12 name=logs path=/tmp/erri-editor-native/run4/profile/logs/logs_2026-10-03_19-30-27/resourceDatabase.rdb)
19:30:28.124 ENGINE : GameProject load
19:30:28.124 ENGINE : Loaded addons:
19:30:28.124 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C'
19:30:28.124 ENGINE : gproj: './addons/data/ArmaReforger.gproj' guid: '58D0FB3206B6F859'
19:30:28.124 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF'
19:30:28.124 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E'
19:30:28.124 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB'
19:30:28.124 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577'
19:30:28.124 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6'
19:30:28.124 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B'
19:30:28.124 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERRI_65930CB4CD0237B2/addon.gproj' guid: '65930CB4CD0237B2'
19:30:28.124 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/ERR_Core/addon.gproj' guid: '2528466DE220D91C'
19:30:28.124 ENGINE : gproj: '/tmp/erri-editor-native/run4/addons/Nogova/addon.gproj' guid: '70C981A53E02B64F'
19:30:28.124 ENGINE : GameProject load
19:30:28.124 INIT : GameProject load project data @"/tmp/erri-editor-native/run4/addons/ERRI_595F2BF2F44836FB/addon.gproj"
19:30:28.124 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource"
19:30:28.124 INIT : GameProject load project data @"/tmp/erri-editor-native/run4/addons/ERRI_629B2BA37EFFD577/addon.gproj"
19:30:28.124 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource"
19:30:28.124 INIT : GameProject load project data @"/tmp/erri-editor-native/run4/addons/ERRI_5E389BB9F58B79A6/addon.gproj"
19:30:28.124 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource"
19:30:28.124 INIT : GameProject load project data @"/tmp/erri-editor-native/run4/addons/ERRI_5E524E4FEECCA92B/addon.gproj"
19:30:28.124 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource"
19:30:28.125 ENGINE : Loading custom engine user config '$profile:.save/settings/ReforgerEngineSettings.conf'
19:30:28.125 ENGINE : No Enfusion settings file loaded. Continuing with defaults
19:30:28.125 RENDER : Basic screen setup:
19:30:28.125 RENDER : Back buffer width x height: 0x0
19:30:28.125 RENDER : Back buffer format : TEXFMT_UNKNOWN (0)
19:30:28.125 RENDER : MSAA : none
19:30:28.125 RENDER : GPU_DUMMY (0xFFFF) (Enfusion dummy render) with 1 GPU detected, VRAM 128MB (fast 128MB), shared 128MB, driver version Unknown version
19:30:28.125 RENDER : Detected output devices:
19:30:28.125 RENDER : * 1 device/s connected to Dummy:
19:30:28.125 RENDER : Dummy output (Dummy device for our dummy render.), 1920x1080 (offset 0x0), 60Hz
19:30:28.125 RENDER : Concurrent frames limit 2
19:30:28.125 ENGINE : Job system settings: coreCount=16, shortJobContextCount=16, shortJobThreadCount=15, longJobThreadCount=7
19:30:28.137 PROFILING : Settings changed took: 0.020000 ms
19:30:28.139 ENGINE : Initializing inputs.
19:30:28.145 NETWORK : Initializing networking.
19:30:28.145 NETWORK : Using new GameRplScheduler.
19:30:28.146 SCRIPT : SCRIPT : Initializing scripts
19:30:28.146 SCRIPT : SCRIPT : ScriptProjectManager init
19:30:28.146 PROFILING : ScriptProjectManager init took: 0.008000 ms
19:30:28.162 PROFILING : Initializing scripts took: 16.699000 ms
19:30:28.162 BACKEND : Backend Services are disabled.
19:30:28.162 ENGINE : Enfusion engine successfully created.
19:30:28.164 GUI : Using default language (en_us)
19:30:28.164 GUI : Loading 'en_us' localization file.
19:30:28.164 INIT : INIT : Loading StringTable
19:30:28.188 PROFILING : Loading StringTable took: 23.748000 ms
19:30:28.188 SCRIPT : SCRIPT : Compiling GameLib scripts
19:30:28.215 SCRIPT : Module: GameLib; loaded 466x files; 608x classes; used 654K of static memory; defines: "PLATFORM_LINUX,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE"; CRC32: d66caacb
19:30:28.215 PROFILING : Compiling GameLib scripts took: 27.027000 ms
19:30:28.215 SCRIPT : SCRIPT : Compiling Game scripts
19:30:28.773 SCRIPT : Compiling Game scripts
19:30:28.773 SCRIPT (W): @"Scripts/Game/Parachutes/ParachuteDeployed.c,7": Pointer type 'Physics' can only be used with local variables
19:30:29.121 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete
19:30:29.121 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete
19:30:29.415 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,359": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
19:30:29.430 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed
19:30:29.460 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete
19:30:29.603 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete
19:30:29.603 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete
19:30:29.603 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete
19:30:29.603 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete
19:30:29.635 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead
19:30:29.685 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c,64": 'GetPlayerIdentityId' is obsolete
19:30:29.694 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete
19:30:29.694 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete
19:30:29.696 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete
19:30:29.736 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
19:30:29.736 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
19:30:29.737 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api.
19:30:29.737 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api.
19:30:29.789 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete
19:30:29.963 SCRIPT : Module: Game; loaded 6643x files; 13283x classes; used 32671K of static memory; defines: "PLATFORM_LINUX,ENF_ENABLE_VHC_OVERRIDE,ENF_ENABLE_RPLCOMPONENT_IN_GAMECODE,ENABLE_BASE_DESTRUCTION,BUDGET_OPTIMIZATION_CHECKS,DEBUG,RESPAWN_TIMER_COMPONENT_DEBUG,DEBUG_CONFIGURABLE_DIALOGS,DISABLE_WEAPON_SWITCHING,SCRIPTED_AIM_MODIFIER_DEBUG,WCS_DEFINES_ARMAMENTS"; CRC32: 5b60af8d
19:30:29.982 PROFILING : Compiling Game scripts took: 1766.679000 ms
19:30:29.982 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC.
19:30:30.013 ENGINE : Game successfully created.
19:30:30.047 PLATFORM : Save data from container 'settings' have been loaded
19:30:30.147 PLATFORM : Save data from container 'sessions' have been loaded
19:30:30.147 PLATFORM : System language differs from the saved one - using new language {new: 'en_us'; old: ''}
19:30:30.147 PLATFORM : Save data transaction to 'settings' started.
19:30:30.147 NETWORK : Starting local multiplayer server using command line args.
19:30:30.246 DEFAULT : [SaveGameManager] Starting new playthrough nr.0 '' for mission '{469880DFE1B48F95}Missions/Nogova_TerrainTest.conf'.
19:30:30.247 WORLD : WORLD : Entities load '$NogovaReforger:Worlds/Nogova/Nogova_Test.ent'
19:30:30.639 PROFILING : Entities load took: 391.893000 ms
19:30:34.532 WORLD : WORLD : Game::LoadEntities
19:30:34.532 WORLD : WORLD : Initializing world systems
19:30:34.533 NETWORK : Enabled lag compensation, 29 frames with 100 FPS and 280 ms rewind limits.
19:30:34.533 WORLD : WORLD : CreateEntities
19:30:34.533 WORLD : WORLD : CreateEntities
19:30:34.533 WORLD : WORLD : NotifyBeforeEntitiesCreated
19:30:34.534 RESOURCES : Loaded mission headers from 11 addon(s)!
19:30:34.534 PROFILING : NotifyBeforeEntitiesCreated took: 1.328000 ms
19:30:34.534 WORLD : WORLD : Wait for preloading data
19:30:34.534 PROFILING : Wait for preloading data took: 0.000000 ms
19:30:34.535 ENTITY : Create entity @"ENTITY:2" ('Nogova', GenericTerrainEntity) at <0.000000 0.000000 0.000000> @"{221ABC927C672E4E}Prefabs/World/DefaultWorld/GenericTerrain_Default.et"
19:30:34.535 PROFILING : PROFILING : Terrain load
19:30:34.542 PROFILING : Terrain load took: 7.001000 ms
19:30:40.195 WORLD : Game::LoadEntities
19:30:40.195 WORLD : CreateEntities
19:30:40.195 WORLD : CreateEntities
19:30:40.195 ENTITY : Create entity @"ENTITY:2305843009213693954" ('NGR_Factions', SCR_FactionManager) at <0.000000 0.000000 0.000000> @"{589540B35EBA8CDC}Prefabs/MP/Managers/Factions/FactionManager_USxUSSR.et"
19:30:40.195 RESOURCES : GetResourceObject @"{5168FEA3054D6D15}Prefabs/Vehicles/Wheeled/M151A2/M151A2_M2HB_MERDC.et"
19:30:40.195 WORLD : Entity prefab load @"{5168FEA3054D6D15}Prefabs/Vehicles/Wheeled/M151A2/M151A2_M2HB_MERDC.et"
19:30:40.195 RESOURCES : GetResourceObject @"{F6B23D17D5067C11}Prefabs/Vehicles/Wheeled/M151A2/M151A2_M2HB.et"
19:30:40.195 WORLD : Entity prefab load @"{F6B23D17D5067C11}Prefabs/Vehicles/Wheeled/M151A2/M151A2_M2HB.et"
19:30:40.195 RESOURCES : GetResourceObject @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
19:30:40.195 WORLD : Entity prefab load @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
19:30:40.195 RESOURCES : GetResourceObject @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
19:30:40.195 WORLD : Entity prefab load @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
19:30:40.195 RESOURCES : GetResourceObject @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
19:30:40.195 WORLD : Entity prefab load @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
19:30:40.195 WORLD (E): Unknown keyword/data 'SlidingTrackMaterial' at offset 19441(0x4bf1)
19:30:40.276 RESOURCES : GetResourceObject @"{F7B9B434FCFF00B3}Prefabs/Vehicles/Wheeled/Conflict_Variants/BRDM2_Conflict.et"
19:30:40.276 WORLD : Entity prefab load @"{F7B9B434FCFF00B3}Prefabs/Vehicles/Wheeled/Conflict_Variants/BRDM2_Conflict.et"
19:30:40.276 RESOURCES : GetResourceObject @"{254289B9C09904AB}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2.et"
19:30:40.276 WORLD : Entity prefab load @"{254289B9C09904AB}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2.et"
19:30:40.276 RESOURCES : GetResourceObject @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
19:30:40.276 WORLD : Entity prefab load @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
19:30:40.276 RESOURCES : GetResourceObject @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
19:30:40.276 WORLD : Entity prefab load @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
19:30:40.276 WORLD (E): Unknown keyword/data 'Parent' at offset 35955(0x8c73)
19:30:40.276 WORLD (E): Unknown keyword/data 'Parent' at offset 36915(0x9033)
19:30:40.277 RESOURCES : GetResourceObject @"{BD75A18920BD1278}Prefabs/Vehicles/Wheeled/Conflict_Variants/BTR70_Conflict.et"
19:30:40.277 WORLD : Entity prefab load @"{BD75A18920BD1278}Prefabs/Vehicles/Wheeled/Conflict_Variants/BTR70_Conflict.et"
19:30:40.277 RESOURCES : GetResourceObject @"{C012BB3488BEA0C2}Prefabs/Vehicles/Wheeled/BTR70/BTR70.et"
19:30:40.277 WORLD : Entity prefab load @"{C012BB3488BEA0C2}Prefabs/Vehicles/Wheeled/BTR70/BTR70.et"
19:30:40.277 RESOURCES : GetResourceObject @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
19:30:40.277 WORLD : Entity prefab load @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
19:30:40.277 RESOURCES : GetResourceObject @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
19:30:40.277 WORLD : Entity prefab load @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
19:30:40.277 WORLD (E): Unknown keyword/data 'Parent' at offset 42646(0xa696)
19:30:40.277 WORLD (E): Unknown keyword/data 'Parent' at offset 43645(0xaa7d)
19:30:40.277 WORLD (E): Unknown keyword/data 'Parent' at offset 44617(0xae49)
19:30:40.277 WORLD (E): Unknown keyword/data 'Parent' at offset 45590(0xb216)
19:30:40.345 WORLD : WORLD : NotifyBeforeEntitiesInitialized
19:30:40.345 PROFILING : NotifyBeforeEntitiesInitialized took: 0.031000 ms
19:30:40.345 WORLD : InitEntities 'world'
19:30:40.345 ENTITY : Init entity @"ENTITY:18" ('NGR_Map', SCR_MapEntity) at <6400.000000 0.000000 6400.000000> @"{731564B66F91B107}Prefabs/World/Game/MapEntity.et"
19:30:40.345 SCRIPT (W): SCR_MapEntity: Cannot get the size from terrain. Using default.
19:30:40.348 ENTITY : Init entity @"ENTITY:2305843009213693953" ('NGR_TestMode', NGR_TestGameMode) at <0.000000 0.000000 0.000000> @"{592F3093A2B876C1}Prefabs/NGR/TestGameMode.et"
19:30:40.348 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead.
19:30:40.348 WORLD : WORLD : NotifyEntitiesInitialized
19:30:40.348 TERRAIN : TERRAIN : Initializing road networks...
19:30:40.349 PROFILING : Initializing road networks... took: 0.087000 ms
19:30:40.350 SCRIPT : Reintroduced [config]: using $profile:Escapists.json; legacy files retained but no longer used.
19:30:40.398 SCRIPT : Reintroduced [terrain selection]: discovered 46 playable scenario headers; truncated=0
19:30:40.406 SCRIPT : Reintroduced [terrain takeover]: enabled; configured airports=0
19:30:40.406 DEFAULT : DEFAULT : WorldVolumesCollection
19:30:40.413 PROFILING : WorldVolumesCollection took: 7.255000 ms
19:30:40.413 PROFILING : NotifyEntitiesInitialized took: 64.648000 ms
19:30:40.413 PROFILING : CreateEntities took: 5880.346000 ms
19:30:40.413 PROFILING : CreateEntities took: 5880.354000 ms
19:30:40.413 WORLD : WORLD : EOnActivate
19:30:40.418 PROFILING : EOnActivate took: 4.805000 ms
19:30:40.418 PROFILING : Game::LoadEntities took: 5886.355000 ms
19:30:40.461 NETWORK : Starting RPL server, listening on address 0.0.0.0:2001, fastValidation=false
19:30:40.784 DEFAULT : Entered online game state.
19:30:40.858 PROFILING : Settings changed took: 0.143000 ms
19:30:41.380 SCRIPT : Map load time: 29ms
19:30:41.389 WORLD : Frame start
19:30:41.389 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated.
19:30:41.394 WORLD : UpdateEntities
19:30:41.394 WORLD : Frame
19:30:41.394 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME
19:30:41.651 SCRIPT : Reintroduced [terrain takeover]: stopping original scenario; preserving radio manager
19:30:41.652 SCRIPT : Reintroduced [terrain takeover]: native registrations cleared
19:30:41.871 ENTITY : SpawnEntityPrefab @"{9D182739ABEF405C}Prefabs/ERR/TerrainTakeover.et"
19:30:41.871 WORLD : InitEntities 'world'
19:30:41.871 ENTITY : Init entity @"ENTITY:4611686018427387909" ('ERR_TerrainTakeoverMode') at <0.000000 0.000000 0.000000> @"{9D182739ABEF405C}Prefabs/ERR/TerrainTakeover.et"
19:30:41.871 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead.
19:30:41.876 SCRIPT : Reintroduced [terrain takeover]: Game Master player and admin events attached to Escape
19:30:41.877 RESOURCES (E): Wrong GUID/name for resource @"{0000000000000000}$NogovaReforger:Worlds/Nogova/Nogova_Test.ent" in property "<missing-def>"
19:30:41.877 SCRIPT (W): Can't open config file "Worlds/Nogova/Nogova_Test.ent"
19:30:41.877 SCRIPT : Reintroduced [terrain presentation]: mission=Co10 Escape Reintroduced - Nogova; source scenario={469880DFE1B48F95}Missions/Nogova_TerrainTest.conf
19:30:41.877 SCRIPT : Reintroduced [terrain takeover]: Escape started on selected scenario
19:30:41.877 WORLD : UpdateEntities
19:30:41.877 WORLD : Frame
19:30:41.877 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME
19:30:41.877 WORLD : UpdateEntities
19:30:41.877 DEFAULT (E): Previously set BaseChatEntity doesn't match the one that is getting unregistered!
19:30:41.877 DEFAULT (E): oldEntity: @"ENTITY:4611686018427387913" ('Chat', ScriptedChatEntity) at <-318.967010 54.514000 1.838000> @"Chat"
19:30:41.877 DEFAULT (E): newEntity: @"ENTITY:2305843009213693958" ('NGR_Chat', ScriptedChatEntity) at <-318.967010 54.514000 1.838000> @"{F69BC912AC8236F9}Prefabs/MP/ScriptedChatEntity.et"
19:30:41.877 DEFAULT (E): Previously set PerceptionManager doesn't match the one that is getting unregistered!
19:30:41.877 DEFAULT (E): oldEntity: @"ENTITY:4611686018427387910" ('Perception', PerceptionManager) at <1893.353027 387.072998 5056.824219> @"Perception"
19:30:41.877 DEFAULT (E): newEntity: @"ENTITY:2305843009213693956" ('NGR_Perception', PerceptionManager) at <1893.353027 387.072998 5056.824219> @"{028DAEAD63E056BE}Prefabs/World/Game/PerceptionManager.et"
19:30:41.877 DEFAULT (E): Previously set FactionManager doesn't match the one that is getting unregistered!
19:30:41.877 DEFAULT (E): oldEntity: @"ENTITY:4611686018427387911" ('Factions', SCR_FactionManager) at <0.000000 0.000000 0.000000> @"Factions"
19:30:41.877 DEFAULT (E): newEntity: @"ENTITY:2305843009213693954" ('NGR_Factions', SCR_FactionManager) at <0.000000 0.000000 0.000000> @"{589540B35EBA8CDC}Prefabs/MP/Managers/Factions/FactionManager_USxUSSR.et"
19:30:41.877 SCRIPT : Reintroduced [terrain takeover]: completed original loadout unregister
19:30:41.877 DEFAULT (E): Previously set BaseGameMode doesn't match the one that is getting unregistered!
19:30:41.877 DEFAULT (E): oldEntity: @"ENTITY:4611686018427387909" ('ERR_TerrainTakeoverMode') at <0.000000 0.000000 0.000000> @"{9D182739ABEF405C}Prefabs/ERR/TerrainTakeover.et"
19:30:41.877 DEFAULT (E): newEntity: @"ENTITY:2305843009213693953" ('NGR_TestMode', NGR_TestGameMode) at <0.000000 0.000000 0.000000> @"{592F3093A2B876C1}Prefabs/NGR/TestGameMode.et"
19:30:42.718 SCRIPT : ERR EDITOR PASS: automatic Nogova takeover calls editor handover
19:30:42.718 SCRIPT : Reintroduced [terrain takeover]: Game Master player and admin events attached to Escape
19:30:42.718 SCRIPT : ERR EDITOR PASS: all six native editor event subscriptions deliver
19:30:42.718 SCRIPT : Reintroduced [terrain takeover]: Game Master player and admin events attached to Escape
19:30:42.718 SCRIPT : ERR EDITOR PASS: repeat attach does not duplicate editor listeners
19:30:42.718 SCRIPT : ERR EDITOR PASS: replacement can detach for lifecycle cleanup
19:30:42.718 SCRIPT : Reintroduced [terrain takeover]: Game Master player and admin events attached to Escape
19:30:42.718 SCRIPT : ERR EDITOR PASS: reattach restores normal editor lifecycle
19:30:42.718 SCRIPT : ERR EDITOR COMPLETE
@@ -0,0 +1,78 @@
// Private native fixture: sentinel events exercise real invokers without fake players.
[BaseContainerProps(configRoot: true)]
modded class SCR_EditorManagerCore
{
protected int m_ERRProbeEvents;
protected bool m_ERRProbeComplete;
protected override void OnPlayerRegistered(int playerID)
{
if (playerID == -919) { m_ERRProbeEvents++; return; }
super.OnPlayerRegistered(playerID);
}
protected override void OnPlayerDisconnected(int playerID)
{
if (playerID == -919) { m_ERRProbeEvents++; return; }
super.OnPlayerDisconnected(playerID);
}
[Friend(SCR_ReconnectComponent)]
protected override void OnPlayerSpawn(int playerID, IEntity controlledEntity)
{
if (playerID == -919) { m_ERRProbeEvents++; return; }
super.OnPlayerSpawn(playerID, controlledEntity);
}
protected override void OnPlayerKilled(notnull SCR_InstigatorContextData instigatorContextData)
{
if (instigatorContextData.GetVictimPlayerID() == -919) { m_ERRProbeEvents++; return; }
super.OnPlayerKilled(instigatorContextData);
}
protected override void OnPlayerDeleted(int playerID, IEntity player)
{
if (playerID == -919) { m_ERRProbeEvents++; return; }
super.OnPlayerDeleted(playerID, player);
}
protected override void OnPlayerRoleChange(int playerId, EPlayerRole roleFlags)
{
if (playerId == -919) { m_ERRProbeEvents++; return; }
super.OnPlayerRoleChange(playerId, roleFlags);
}
protected void ERR_ProbeEvents(SCR_BaseGameMode mode, int expected, string label)
{
m_ERRProbeEvents = 0;
mode.GetOnPlayerRegistered().Invoke(-919);
mode.GetOnPostCompPlayerDisconnected().Invoke(-919, 0, 0);
mode.GetOnPlayerSpawned().Invoke(-919, null);
mode.GetOnPlayerKilled().Invoke(new SCR_InstigatorContextData(-919, null, null, Instigator.CreateInstigatorGM(), true));
mode.GetOnPlayerDeleted().Invoke(-919, null);
mode.GetOnPlayerRoleChange().Invoke(-919, 0);
if (m_ERRProbeEvents == expected) Print("ERR EDITOR PASS: " + label);
else PrintFormat("ERR EDITOR FAIL: %1 expected=%2 actual=%3", label, expected, m_ERRProbeEvents);
}
override void ERR_SetTerrainModeEvents(SCR_BaseGameMode mode, bool attach)
{
super.ERR_SetTerrainModeEvents(mode, attach);
if (attach) GetGame().GetCallqueue().CallLater(ERR_ProbeAttached, 1000, false, mode);
}
protected void ERR_ProbeAttached(SCR_BaseGameMode mode)
{
if (m_ERRProbeComplete) return;
m_ERRProbeComplete = true;
Print("ERR EDITOR PASS: automatic Nogova takeover calls editor handover");
// Keep fake player events away from unrelated game systems. Only this private
// playerless fixture clears listeners, then tests the actual production bind.
mode.GetOnPlayerRegistered().Clear();
mode.GetOnPostCompPlayerDisconnected().Clear();
mode.GetOnPlayerSpawned().Clear();
mode.GetOnPlayerKilled().Clear();
mode.GetOnPlayerDeleted().Clear();
mode.GetOnPlayerRoleChange().Clear();
super.ERR_SetTerrainModeEvents(mode, true);
ERR_ProbeEvents(mode, 6, "all six native editor event subscriptions deliver");
super.ERR_SetTerrainModeEvents(mode, true);
ERR_ProbeEvents(mode, 6, "repeat attach does not duplicate editor listeners");
super.ERR_SetTerrainModeEvents(mode, false);
ERR_ProbeEvents(mode, 0, "replacement can detach for lifecycle cleanup");
super.ERR_SetTerrainModeEvents(mode, true);
ERR_ProbeEvents(mode, 6, "reattach restores normal editor lifecycle");
Print("ERR EDITOR COMPLETE");
}
}
@@ -0,0 +1,37 @@
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-editor-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')
shutil.copy2('/tmp/erri-editor-probe.c',source/'Scripts/Game/ERR/00_Core/ERR_ZProfileProbe.c')
addons=run/'addons';addons.mkdir();steam=Path.home()/'.local/share/Steam'
prepare_profile(addons,steam/'steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons',policy(ROOT),run/'external-cache.json');(addons/'ERR_Core').symlink_to(source,target_is_directory=True)
(addons/'Nogova').symlink_to('/home/jakub/devel/gabreta/addons/NogovaReforger',target_is_directory=True)
profile=run/'profile/profile';profile.mkdir(parents=True)
(run/'network.py').write_text(PROBE)
runtime=Path('/tmp/erri-takeover-dedicated-runtime')
engine=['/tmp/runtime/ArmaReforgerServer','-server','{469880DFE1B48F95}Missions/Nogova_TerrainTest.conf','-addonsDir',str(addons),'-addons','2528466DE220D91C,70C981A53E02B64F','-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','--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<340:
files=sorted((run/'profile/logs').glob('logs_*/console.log'));text=files[-1].read_text(errors='replace') if files else ''
if 'ERR EDITOR 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 'ERR EDITOR' in line or 'SCRIPT (E)' in line))
@@ -0,0 +1,32 @@
{
"problem": "Terrain takeover deleted the game mode to which SCR_EditorManagerCore attached its player and admin event listeners. The persistent core never subscribed to the replacement.",
"change": "Detach all six native editor callbacks before old mode deletion; attach idempotently to Escape before startup and admission replay. Preserve native core container registration, per-player managers and role authorization.",
"tests": [
"python3 tests/test_terrain_editor.py",
"python3 tests/test_terrain_takeover.py"
],
"native": {
"scenario": "{469880DFE1B48F95}Missions/Nogova_TerrainTest.conf",
"result": {
"reason": "complete",
"exit": -15
},
"pass": 5,
"fail": 0,
"script_errors": 0,
"source_sha256": {
"Scripts/Game/ERR/00_Core/ERR_TerrainTakeover.c": "e4585f70f193878169a3f0566d03610143ecb94682d78c9a91cfd816c64be6fd",
"Scripts/Game/ERR/00_Core/ERR_TerrainTakeoverManagers.c": "64cbad8fada3630132d3fc6ee5ad63d698e6ef204c3ca7199a9c51d870ac4a19"
}
},
"limits": [
"Native test has no connected players. After observing automatic handover, the private fixture clears unrelated invoker listeners to safely inject sentinel player events and counts delivery at editor-core callbacks. It does not click the pause-menu button or perform a real admin login.",
"Existing resource GUID/name and delayed original-manager unregister diagnostics remain in the log.",
"No Workshop publication, live-server update or restart performed."
],
"exploratory_runs": [
"run1: private probe argument names did not match native callback prototypes; corrected.",
"run2: private override needed the native Friend annotation for SCR_ReconnectComponent; corrected.",
"run3: missing BaseContainerProps on modded editor core caused config registration failure; added to production and fixture; private run stopped and reaped."
]
}