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,248 @@
---------------------------------------------
Log /tmp/erri-terrain-lookup-native/fixed/profile/logs/logs_2026-10-04_20-36-48/console.log started at 2026-10-04 20:36:48 (2026-10-04 18:36:48 UTC)
20:36:48.554 ENGINE : FileSystem: Adding relative directory '/tmp/erri-terrain-lookup-native/fixed/profile/logs/logs_2026-10-04_20-36-48' to filesystem under name logs
20:36:48.554 ENGINE : FileSystem: Adding relative directory '/tmp/erri-terrain-lookup-native/fixed/profile/profile' to filesystem under name profile
20:36:48.554 ENGINE : FileSystem: Current working directory: '/tmp/runtime/'
20:36:48.555 ENGINE : Initializing engine, version 192142
20:36:48.555 ENGINE : CLI Params: -server {469880DFE1B48F95}Missions/Nogova_TerrainTest.conf -addonsDir /tmp/erri-terrain-lookup-native/fixed/addons -addons 2528466DE220D91C,70C981A53E02B64F -profile /tmp/erri-terrain-lookup-native/fixed/profile -noBackend -noSound -bindIP 127.0.0.1 -bindPort 2001 -maxFPS 30 -logconsole -noSplash -noThrow -disableCrashReporter
20:36:48.559 ENGINE : Addon dirs:
20:36:48.559 ENGINE : dir: '/tmp/erri-terrain-lookup-native/fixed/addons'
20:36:48.559 ENGINE : dir: './addons'
20:36:48.559 ENGINE : dir: '/tmp/erri-terrain-lookup-native/fixed/profile/addons'
20:36:48.559 ENGINE : Available addons:
20:36:48.559 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/Nogova/addon.gproj' guid: '70C981A53E02B64F'
20:36:48.559 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERR_Core/addon.gproj' guid: '2528466DE220D91C'
20:36:48.559 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E' (packed)
20:36:48.559 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_65930CB4CD0237B2/addon.gproj' guid: '65930CB4CD0237B2' (packed)
20:36:48.559 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577' (packed)
20:36:48.559 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B' (packed)
20:36:48.559 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6' (packed)
20:36:48.559 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB' (packed)
20:36:48.559 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF' (packed)
20:36:48.559 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C' (packed)
20:36:48.559 ENGINE : gproj: './addons/data/ArmaReforger.gproj' guid: '58D0FB3206B6F859' (packed)
20:36:48.559 ENGINE : FileSystem: Adding relative directory '/home/jakub/devel/gabreta/addons/NogovaReforger' to filesystem under name NogovaReforger
20:36:48.559 ENGINE : FileSystem: Adding relative directory '/tmp/erri-terrain-lookup-native/fixed/source' to filesystem under name ERR_Core
20:36:48.559 ENGINE : FileSystem: Adding package '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_65930CB4CD0237B2/' (pak count: 1) to filesystem under name Parachutes
20:36:48.559 ENGINE : FileSystem: Adding package '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_5E524E4FEECCA92B/' (pak count: 1) to filesystem under name WCS_BMP-1
20:36:48.560 ENGINE : FileSystem: Adding package '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_5E389BB9F58B79A6/' (pak count: 1) to filesystem under name WCS_SpaceCore
20:36:48.561 ENGINE : FileSystem: Adding package '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_629B2BA37EFFD577/' (pak count: 1) to filesystem under name WCS_Armaments
20:36:48.566 ENGINE : FileSystem: Adding package '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_595F2BF2F44836FB/' (pak count: 1) to filesystem under name RHS_Core
20:36:48.567 ENGINE : FileSystem: Adding package '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_BADC0DEDABBEDA5E/' (pak count: 2) to filesystem under name RHS_Content_02
20:36:48.570 ENGINE : FileSystem: Adding package '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_1337C0DE5DABBEEF/' (pak count: 4) to filesystem under name RHS_Content_01
20:36:48.678 ENGINE : FileSystem: Adding package './addons/data/' (pak count: 14) to filesystem under name ArmaReforger
20:36:48.680 ENGINE : FileSystem: Adding package './addons/core/' (pak count: 2) to filesystem under name core
20:36:48.680 ENGINE : CPU vendor : AuthenticAMD
20:36:48.680 ENGINE : CPU type : 2
20:36:48.680 ENGINE : CPU name : AMD Ryzen 7 3800XT 8-Core Processor
20:36:48.680 ENGINE : CPU cache info : Unknown cache
20:36:48.680 ENGINE : CPU count logical : 16
20:36:48.680 ENGINE : CPU count physical : 8
20:36:48.680 ENGINE : CPU features : mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 popcnt aesni pclmulqdq osxsave avx sha avx2
20:36:48.680 RESOURCES : ResourceDB: loading cache (id=0 name=NogovaReforger path=/home/jakub/devel/gabreta/addons/NogovaReforger/resourceDatabase.rdb)
20:36:48.692 RESOURCES : ResourceDB: loading cache (id=1 name=ERR_Core path=/tmp/erri-terrain-lookup-native/fixed/source/resourceDatabase.rdb)
20:36:48.692 RESOURCES : ResourceDB: loading cache (id=2 name=Parachutes path=/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_65930CB4CD0237B2/resourceDatabase.rdb)
20:36:48.692 RESOURCES : ResourceDB: loading cache (id=3 name=WCS_BMP-1 path=/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_5E524E4FEECCA92B/resourceDatabase.rdb)
20:36:48.692 RESOURCES : ResourceDB: loading cache (id=4 name=WCS_SpaceCore path=/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_5E389BB9F58B79A6/resourceDatabase.rdb)
20:36:48.693 RESOURCES : ResourceDB: loading cache (id=5 name=WCS_Armaments path=/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_629B2BA37EFFD577/resourceDatabase.rdb)
20:36:48.694 RESOURCES : ResourceDB: loading cache (id=6 name=RHS_Core path=/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_595F2BF2F44836FB/resourceDatabase.rdb)
20:36:48.705 RESOURCES : ResourceDB: loading cache (id=7 name=RHS_Content_02 path=/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_BADC0DEDABBEDA5E/resourceDatabase.rdb)
20:36:48.707 RESOURCES : ResourceDB: loading cache (id=8 name=RHS_Content_01 path=/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_1337C0DE5DABBEEF/resourceDatabase.rdb)
20:36:48.713 RESOURCES : ResourceDB: loading cache (id=9 name=ArmaReforger path=./addons/data/resourceDatabase.rdb)
20:36:48.855 RESOURCES : ResourceDB: loading cache (id=10 name=core path=./addons/core/resourceDatabase.rdb)
20:36:48.856 RESOURCES : ResourceDB: loading cache (id=11 name=profile path=/tmp/erri-terrain-lookup-native/fixed/profile/profile/resourceDatabase.rdb)
20:36:48.856 RESOURCES : ResourceDB: loading cache (id=12 name=logs path=/tmp/erri-terrain-lookup-native/fixed/profile/logs/logs_2026-10-04_20-36-48/resourceDatabase.rdb)
20:36:49.066 ENGINE : GameProject load
20:36:49.066 ENGINE : Loaded addons:
20:36:49.066 ENGINE : gproj: './addons/core/core.gproj' guid: '5614BBCCBB55ED1C'
20:36:49.066 ENGINE : gproj: './addons/data/ArmaReforger.gproj' guid: '58D0FB3206B6F859'
20:36:49.066 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_1337C0DE5DABBEEF/addon.gproj' guid: '1337C0DE5DABBEEF'
20:36:49.066 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_BADC0DEDABBEDA5E/addon.gproj' guid: 'BADC0DEDABBEDA5E'
20:36:49.066 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_595F2BF2F44836FB/addon.gproj' guid: '595F2BF2F44836FB'
20:36:49.066 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_629B2BA37EFFD577/addon.gproj' guid: '629B2BA37EFFD577'
20:36:49.066 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_5E389BB9F58B79A6/addon.gproj' guid: '5E389BB9F58B79A6'
20:36:49.066 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_5E524E4FEECCA92B/addon.gproj' guid: '5E524E4FEECCA92B'
20:36:49.066 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_65930CB4CD0237B2/addon.gproj' guid: '65930CB4CD0237B2'
20:36:49.066 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/ERR_Core/addon.gproj' guid: '2528466DE220D91C'
20:36:49.066 ENGINE : gproj: '/tmp/erri-terrain-lookup-native/fixed/addons/Nogova/addon.gproj' guid: '70C981A53E02B64F'
20:36:49.067 ENGINE : GameProject load
20:36:49.067 INIT : GameProject load project data @"/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_595F2BF2F44836FB/addon.gproj"
20:36:49.067 RESOURCES (E): Wrong GUID/name for resource @"{0AFDD005CD669892}Language/rhs_localization.st" in property "StringTableSource"
20:36:49.067 INIT : GameProject load project data @"/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_629B2BA37EFFD577/addon.gproj"
20:36:49.067 RESOURCES (E): Wrong GUID/name for resource @"{41FA2A08B6971D4C}Language/wcs_armament_localization.st" in property "StringTableSource"
20:36:49.067 INIT : GameProject load project data @"/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_5E389BB9F58B79A6/addon.gproj"
20:36:49.067 RESOURCES (E): Wrong GUID/name for resource @"{84270E09F7A4A7A0}Language/wcs_spacecore_localization.st" in property "StringTableSource"
20:36:49.067 INIT : GameProject load project data @"/tmp/erri-terrain-lookup-native/fixed/addons/ERRI_5E524E4FEECCA92B/addon.gproj"
20:36:49.067 RESOURCES (E): Wrong GUID/name for resource @"{E50E557B468C7073}Language/wcs_bmp1_localization.st" in property "StringTableSource"
20:36:49.067 ENGINE : Loading custom engine user config '$profile:.save/settings/ReforgerEngineSettings.conf'
20:36:49.067 ENGINE : No Enfusion settings file loaded. Continuing with defaults
20:36:49.067 RENDER : Basic screen setup:
20:36:49.067 RENDER : Back buffer width x height: 0x0
20:36:49.067 RENDER : Back buffer format : TEXFMT_UNKNOWN (0)
20:36:49.067 RENDER : MSAA : none
20:36:49.067 RENDER : GPU_DUMMY (0xFFFF) (Enfusion dummy render) with 1 GPU detected, VRAM 128MB (fast 128MB), shared 128MB, driver version Unknown version
20:36:49.067 RENDER : Detected output devices:
20:36:49.067 RENDER : * 1 device/s connected to Dummy:
20:36:49.067 RENDER : Dummy output (Dummy device for our dummy render.), 1920x1080 (offset 0x0), 60Hz
20:36:49.067 RENDER : Concurrent frames limit 2
20:36:49.067 ENGINE : Job system settings: coreCount=16, shortJobContextCount=16, shortJobThreadCount=15, longJobThreadCount=7
20:36:49.081 PROFILING : Settings changed took: 0.024000 ms
20:36:49.083 ENGINE : Initializing inputs.
20:36:49.091 NETWORK : Initializing networking.
20:36:49.091 NETWORK : Using new GameRplScheduler.
20:36:49.091 SCRIPT : SCRIPT : Initializing scripts
20:36:49.091 SCRIPT : SCRIPT : ScriptProjectManager init
20:36:49.091 PROFILING : ScriptProjectManager init took: 0.015000 ms
20:36:49.112 PROFILING : Initializing scripts took: 20.342000 ms
20:36:49.112 BACKEND : Backend Services are disabled.
20:36:49.112 ENGINE : Enfusion engine successfully created.
20:36:49.114 GUI : Using default language (en_us)
20:36:49.114 GUI : Loading 'en_us' localization file.
20:36:49.114 INIT : INIT : Loading StringTable
20:36:49.140 PROFILING : Loading StringTable took: 26.237000 ms
20:36:49.140 SCRIPT : SCRIPT : Compiling GameLib scripts
20:36:49.172 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
20:36:49.172 PROFILING : Compiling GameLib scripts took: 32.109000 ms
20:36:49.172 SCRIPT : SCRIPT : Compiling Game scripts
20:36:49.832 SCRIPT : Compiling Game scripts
20:36:49.832 SCRIPT (W): @"Scripts/Game/Parachutes/ParachuteDeployed.c,7": Pointer type 'Physics' can only be used with local variables
20:36:50.283 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,785": 'GetPlayerPlatformKind' is obsolete
20:36:50.283 SCRIPT (W): @"Scripts/Game/Editor/Components/EditableEntity/SCR_EditableEntityComponent.c,786": 'GetPlayerPlatformId' is obsolete
20:36:50.626 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SiteService.c,359": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
20:36:50.641 SCRIPT (W): @"Scripts/Game/Workshop/SCR_AddonManager.c,876": 'GetRefCount' is obsolete: Will be removed
20:36:50.678 SCRIPT (W): @"Scripts/Game/Campaign/SCR_PlayerProfileManagerComponent.c,142": 'PlayerData' is obsolete
20:36:50.854 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,159": 'GetDSSession' is obsolete
20:36:50.854 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,162": 'RoomID' is obsolete
20:36:50.854 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,197": 'GetDSSession' is obsolete
20:36:50.854 SCRIPT (W): @"Scripts/Game/UI/Backend/CareerBackend.c,201": 'RoomID' is obsolete
20:36:50.898 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_CasualtyGroundSupport.c,21": 'GetBoneIndex' is obsolete: Use GetAnimation().GetBoneIndex() instead
20:36:50.962 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_SpawnLogic.c,64": 'GetPlayerIdentityId' is obsolete
20:36:50.973 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,481": 'GetStorage' is obsolete
20:36:50.973 SCRIPT (W): @"Scripts/Game/DataCollection/SCR_DataCollectorComponent.c,483": 'GetOnlineWritePrivilege' is obsolete
20:36:50.975 SCRIPT (W): @"Scripts/Game/Utilities/SCR_PlayerIdentityUtils.c,20": 'GetPlayerIdentityId' is obsolete
20:36:51.029 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,45": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
20:36:51.029 SCRIPT (W): @"Scripts/Game/ERR/00_Core/ERR_ExtractionService.c,56": 'GetCompartmentType' is obsolete: Use GetType() on the compartment instance directly.
20:36:51.031 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,643": 'GetNotifyCount' is obsolete: Will be substitued by Notification Api.
20:36:51.031 SCRIPT (W): @"Scripts/Game/UI/Menu/MainMenuUI.c,645": 'GetNotifyItem' is obsolete: Will be substitued by Notification Api.
20:36:51.093 SCRIPT (W): @"Scripts/Game/DataCollection/PlayerData/SCR_PlayerData.c,210": 'PlayerData' is obsolete
20:36:51.315 SCRIPT : Module: Game; loaded 6648x files; 13304x classes; used 32776K 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: a85bda0c
20:36:51.338 PROFILING : Compiling Game scripts took: 2165.573000 ms
20:36:51.338 INIT : Creating game instance(ArmaReforgerScripted), version 1.8.0.13 built 2026-08-21 14:30:18 UTC.
20:36:51.368 ENGINE : Game successfully created.
20:36:51.395 PLATFORM : Save data from container 'settings' have been loaded
20:36:51.494 PLATFORM : Save data from container 'sessions' have been loaded
20:36:51.494 PLATFORM : System language differs from the saved one - using new language {new: 'en_us'; old: ''}
20:36:51.494 PLATFORM : Save data transaction to 'settings' started.
20:36:51.494 NETWORK : Starting local multiplayer server using command line args.
20:36:51.593 DEFAULT : [SaveGameManager] Starting new playthrough nr.0 '' for mission '{469880DFE1B48F95}Missions/Nogova_TerrainTest.conf'.
20:36:51.594 WORLD : WORLD : Entities load '$NogovaReforger:Worlds/Nogova/Nogova_Test.ent'
20:36:52.010 PROFILING : Entities load took: 415.624000 ms
20:36:56.632 WORLD : WORLD : Game::LoadEntities
20:36:56.632 WORLD : WORLD : Initializing world systems
20:36:56.633 NETWORK : Enabled lag compensation, 29 frames with 100 FPS and 280 ms rewind limits.
20:36:56.633 WORLD : WORLD : CreateEntities
20:36:56.633 WORLD : WORLD : CreateEntities
20:36:56.633 WORLD : WORLD : NotifyBeforeEntitiesCreated
20:36:56.636 RESOURCES : Loaded mission headers from 11 addon(s)!
20:36:56.636 PROFILING : NotifyBeforeEntitiesCreated took: 2.288000 ms
20:36:56.636 WORLD : WORLD : Wait for preloading data
20:36:56.636 PROFILING : Wait for preloading data took: 0.001000 ms
20:36:56.637 ENTITY : Create entity @"ENTITY:2" ('Nogova', GenericTerrainEntity) at <0.000000 0.000000 0.000000> @"{221ABC927C672E4E}Prefabs/World/DefaultWorld/GenericTerrain_Default.et"
20:36:56.637 PROFILING : PROFILING : Terrain load
20:36:56.645 PROFILING : Terrain load took: 7.957000 ms
20:37:02.984 WORLD : Game::LoadEntities
20:37:02.984 WORLD : CreateEntities
20:37:02.984 WORLD : CreateEntities
20:37:02.984 ENTITY : Create entity @"ENTITY:2305843009213693954" ('NGR_Factions', SCR_FactionManager) at <0.000000 0.000000 0.000000> @"{589540B35EBA8CDC}Prefabs/MP/Managers/Factions/FactionManager_USxUSSR.et"
20:37:02.984 RESOURCES : GetResourceObject @"{5168FEA3054D6D15}Prefabs/Vehicles/Wheeled/M151A2/M151A2_M2HB_MERDC.et"
20:37:02.984 WORLD : Entity prefab load @"{5168FEA3054D6D15}Prefabs/Vehicles/Wheeled/M151A2/M151A2_M2HB_MERDC.et"
20:37:02.984 RESOURCES : GetResourceObject @"{F6B23D17D5067C11}Prefabs/Vehicles/Wheeled/M151A2/M151A2_M2HB.et"
20:37:02.985 WORLD : Entity prefab load @"{F6B23D17D5067C11}Prefabs/Vehicles/Wheeled/M151A2/M151A2_M2HB.et"
20:37:02.985 RESOURCES : GetResourceObject @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
20:37:02.985 WORLD : Entity prefab load @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
20:37:02.985 RESOURCES : GetResourceObject @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
20:37:02.985 WORLD : Entity prefab load @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
20:37:02.985 RESOURCES : GetResourceObject @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
20:37:02.985 WORLD : Entity prefab load @"{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et"
20:37:02.985 WORLD (E): Unknown keyword/data 'SlidingTrackMaterial' at offset 19441(0x4bf1)
20:37:03.095 RESOURCES : GetResourceObject @"{F7B9B434FCFF00B3}Prefabs/Vehicles/Wheeled/Conflict_Variants/BRDM2_Conflict.et"
20:37:03.095 WORLD : Entity prefab load @"{F7B9B434FCFF00B3}Prefabs/Vehicles/Wheeled/Conflict_Variants/BRDM2_Conflict.et"
20:37:03.095 RESOURCES : GetResourceObject @"{254289B9C09904AB}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2.et"
20:37:03.095 WORLD : Entity prefab load @"{254289B9C09904AB}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2.et"
20:37:03.095 RESOURCES : GetResourceObject @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
20:37:03.095 WORLD : Entity prefab load @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
20:37:03.095 RESOURCES : GetResourceObject @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
20:37:03.095 WORLD : Entity prefab load @"{532B5F3CF8496E59}Prefabs/Vehicles/Wheeled/BRDM2/BRDM2_base.et"
20:37:03.095 WORLD (E): Unknown keyword/data 'Parent' at offset 35955(0x8c73)
20:37:03.095 WORLD (E): Unknown keyword/data 'Parent' at offset 36915(0x9033)
20:37:03.097 RESOURCES : GetResourceObject @"{BD75A18920BD1278}Prefabs/Vehicles/Wheeled/Conflict_Variants/BTR70_Conflict.et"
20:37:03.097 WORLD : Entity prefab load @"{BD75A18920BD1278}Prefabs/Vehicles/Wheeled/Conflict_Variants/BTR70_Conflict.et"
20:37:03.097 RESOURCES : GetResourceObject @"{C012BB3488BEA0C2}Prefabs/Vehicles/Wheeled/BTR70/BTR70.et"
20:37:03.097 WORLD : Entity prefab load @"{C012BB3488BEA0C2}Prefabs/Vehicles/Wheeled/BTR70/BTR70.et"
20:37:03.097 RESOURCES : GetResourceObject @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
20:37:03.097 WORLD : Entity prefab load @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
20:37:03.097 RESOURCES : GetResourceObject @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
20:37:03.097 WORLD : Entity prefab load @"{1C5FE7B7FF49BB8D}Prefabs/Vehicles/Wheeled/BTR70/BTR70_Base.et"
20:37:03.097 WORLD (E): Unknown keyword/data 'Parent' at offset 42646(0xa696)
20:37:03.097 WORLD (E): Unknown keyword/data 'Parent' at offset 43645(0xaa7d)
20:37:03.097 WORLD (E): Unknown keyword/data 'Parent' at offset 44617(0xae49)
20:37:03.097 WORLD (E): Unknown keyword/data 'Parent' at offset 45590(0xb216)
20:37:03.180 WORLD : WORLD : NotifyBeforeEntitiesInitialized
20:37:03.180 PROFILING : NotifyBeforeEntitiesInitialized took: 0.031000 ms
20:37:03.180 WORLD : InitEntities 'world'
20:37:03.180 ENTITY : Init entity @"ENTITY:18" ('NGR_Map', SCR_MapEntity) at <6400.000000 0.000000 6400.000000> @"{731564B66F91B107}Prefabs/World/Game/MapEntity.et"
20:37:03.180 SCRIPT (W): SCR_MapEntity: Cannot get the size from terrain. Using default.
20:37:03.184 ENTITY : Init entity @"ENTITY:2305843009213693953" ('NGR_TestMode', NGR_TestGameMode) at <0.000000 0.000000 0.000000> @"{592F3093A2B876C1}Prefabs/NGR/TestGameMode.et"
20:37:03.184 SCRIPT (W): SCR_PerceivedFactionManagerComponent trying to set fall back faction 'CIV' but this faction could not be found so it is null instead.
20:37:03.184 WORLD : WORLD : NotifyEntitiesInitialized
20:37:03.184 TERRAIN : TERRAIN : Initializing road networks...
20:37:03.184 PROFILING : Initializing road networks... took: 0.153000 ms
20:37:03.187 SCRIPT : Reintroduced [config]: using $profile:Escapists.json; legacy files retained but no longer used.
20:37:03.252 SCRIPT : Reintroduced [terrain selection]: discovered 46 playable scenario headers; truncated=0
20:37:03.262 SCRIPT : Reintroduced [terrain takeover]: enabled; configured airports=0
20:37:03.262 DEFAULT : DEFAULT : WorldVolumesCollection
20:37:03.271 PROFILING : WorldVolumesCollection took: 9.185000 ms
20:37:03.271 PROFILING : NotifyEntitiesInitialized took: 86.897000 ms
20:37:03.271 PROFILING : CreateEntities took: 6637.706000 ms
20:37:03.271 PROFILING : CreateEntities took: 6637.713000 ms
20:37:03.271 WORLD : WORLD : EOnActivate
20:37:03.277 PROFILING : EOnActivate took: 6.054000 ms
20:37:03.277 PROFILING : Game::LoadEntities took: 6645.308000 ms
20:37:03.339 NETWORK : Starting RPL server, listening on address 0.0.0.0:2001, fastValidation=false
20:37:03.663 DEFAULT : Entered online game state.
20:37:03.738 PROFILING : Settings changed took: 0.629000 ms
20:37:04.366 SCRIPT : Map load time: 29ms
20:37:04.377 WORLD : Frame start
20:37:04.377 SCRIPT : ScenarioFramework: Available tasks are empty, no new tasks will be generated.
20:37:04.379 WORLD : UpdateEntities
20:37:04.379 WORLD : Frame
20:37:04.379 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME
20:37:04.642 SCRIPT : Reintroduced [terrain takeover]: stopping original scenario; preserving radio manager
20:37:04.643 SCRIPT : Reintroduced [terrain takeover]: native registrations cleared
20:37:04.900 SCRIPT : Reintroduced [terrain takeover]: Game Master player and admin events attached to Escape
20:37:04.900 RESOURCES (E): Wrong GUID/name for resource @"{0000000000000000}Worlds/Nogova/Nogova.ent" in property "<missing-def>"
20:37:04.900 SCRIPT (W): Can't open config file "Worlds/Nogova/Nogova.ent"
20:37:04.900 SCRIPT : Reintroduced [terrain presentation]: mission=Co10 Escape Reintroduced - Nogova; source scenario={469880DFE1B48F95}Missions/Nogova_TerrainTest.conf
20:37:04.900 SCRIPT : Reintroduced [terrain takeover]: Escape started on selected scenario
20:37:04.900 WORLD : UpdateEntities
20:37:04.900 WORLD : Frame
20:37:04.900 SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME
20:37:04.901 WORLD : UpdateEntities
20:37:04.901 DEFAULT (E): Previously set BaseChatEntity doesn't match the one that is getting unregistered!
20:37:04.901 DEFAULT (E): oldEntity: @"ENTITY:4611686018427387913" ('Chat', ScriptedChatEntity) at <-318.967010 54.514000 1.838000> @"Chat"
20:37:04.901 DEFAULT (E): newEntity: @"ENTITY:2305843009213693958" ('NGR_Chat', ScriptedChatEntity) at <-318.967010 54.514000 1.838000> @"{F69BC912AC8236F9}Prefabs/MP/ScriptedChatEntity.et"
20:37:04.901 DEFAULT (E): Previously set PerceptionManager doesn't match the one that is getting unregistered!
20:37:04.901 DEFAULT (E): oldEntity: @"ENTITY:4611686018427387910" ('Perception', PerceptionManager) at <1893.353027 387.072998 5056.824219> @"Perception"
20:37:04.901 DEFAULT (E): newEntity: @"ENTITY:2305843009213693956" ('NGR_Perception', PerceptionManager) at <1893.353027 387.072998 5056.824219> @"{028DAEAD63E056BE}Prefabs/World/Game/PerceptionManager.et"
20:37:04.901 DEFAULT (E): Previously set FactionManager doesn't match the one that is getting unregistered!
20:37:04.901 DEFAULT (E): oldEntity: @"ENTITY:4611686018427387911" ('Factions', SCR_FactionManager) at <0.000000 0.000000 0.000000> @"Factions"
20:37:04.901 DEFAULT (E): newEntity: @"ENTITY:2305843009213693954" ('NGR_Factions', SCR_FactionManager) at <0.000000 0.000000 0.000000> @"{589540B35EBA8CDC}Prefabs/MP/Managers/Factions/FactionManager_USxUSSR.et"
20:37:04.901 SCRIPT : Reintroduced [terrain takeover]: completed original loadout unregister
20:37:04.901 DEFAULT (E): Previously set BaseGameMode doesn't match the one that is getting unregistered!
20:37:04.901 DEFAULT (E): oldEntity: @"ENTITY:4611686018427387909" ('ERR_TerrainTakeoverMode') at <0.000000 0.000000 0.000000> @"{9D182739ABEF405C}Prefabs/ERR/TerrainTakeover.et"
20:37:04.901 DEFAULT (E): newEntity: @"ENTITY:2305843009213693953" ('NGR_TestMode', NGR_TestGameMode) at <0.000000 0.000000 0.000000> @"{592F3093A2B876C1}Prefabs/NGR/TestGameMode.et"
20:37:06.243 SCRIPT : Co10 Escape Reintroduced factions: players=US enemy=USSR independent=FIA
20:37:06.455 SCRIPT : Reintroduced [terrain]: bounds=<-2000,-500,-2000>..<14800,2000,14800> spacing=600 sites=16; native terrain/navmesh placement, no authored fallback
20:37:06.777 SCRIPT : ERR TERRAIN LOOKUP WARM: title=Co10 Escape Reintroduced - Nogova; world=$NogovaReforger:Worlds/Nogova/Nogova_Test.ent
20:37:26.809 SCRIPT : ERR TERRAIN LOOKUP COMPLETE: unchanged=1 correct=1 resource=1 frames=601 elapsed=20.0324
@@ -0,0 +1,219 @@
// Resolve from the scenario header even before a world exists: the backend asks
// for its mission name during startup. Child scenario filenames are not terrains.
class ERR_TerrainDisplayName
{
// GetWorldFile() returns a path, often $Addon:Worlds/..., not a GUID resource.
// ResourceName.GetPath() asks the resource system to resolve it and logs a
// zero-GUID warning on every call. Compare/display paths without that lookup.
static string Path(string world)
{
if (world.Length() >= 18 && world.Substring(0, 1) == "{" && world.Substring(17, 1) == "}")
return world.Substring(18, world.Length() - 18);
return world;
}
static string Label(string world)
{
if (world.IsEmpty()) return "";
string name = FilePath.StripPath(Path(world));
int extension = name.IndexOf(".");
if (extension >= 0) name = name.Substring(0, extension);
// Packed worlds may hide their parent container before native world loading.
// Strip conventional scenario wrappers for that early callback fallback.
string lower = name; lower.ToLower();
foreach (string prefix : {"gm_", "err_", "conflict_", "combatops_", "campaign_"})
{
if (lower.IndexOf(prefix) != 0) continue;
name = name.Substring(prefix.Length(), name.Length() - prefix.Length());
lower = name; lower.ToLower(); break;
}
foreach (string suffix : {"_test", "_gm", "_exploration", "_conflict", "_combatops"})
{
int start = lower.Length() - suffix.Length();
if (start < 0 || lower.Substring(start, suffix.Length()) != suffix) continue;
name = name.Substring(0, start); lower = name; lower.ToLower(); break;
}
if (lower == "eden") return "Everon";
name.Replace("_", " "); name.Replace("\n", " "); name.Replace("\r", " ");
name = name.Trim();
if (name.Length() > 80) name = name.Substring(0, 80);
if (!name.IsEmpty()) { string first = name.Substring(0, 1); first.ToUpper(); name = first + name.Substring(1, name.Length() - 1); }
return name;
}
static string Resolve(ResourceName world)
{
array<ResourceName> seen = {};
for (int depth = 0; depth < 16 && !world.IsEmpty(); depth++)
{
if (seen.Contains(world)) break;
seen.Insert(world);
Resource resource = BaseContainerTools.LoadContainer(world);
if (!resource || !resource.IsValid()) break;
BaseContainer container = resource.GetResource().ToBaseContainer();
if (!container) break;
ResourceName parent;
if (!container.Get("Parent", parent) || parent.IsEmpty() || seen.Contains(parent)) break;
world = parent;
}
return Label(world);
}
}
// Scenario selection still loads the terrain's header. Advertise the configured
// Escape mode through the native DS name callback, then update local metadata
// only when the authority actually starts Escape or its bootstrap reaches a client.
modded class ArmaReforgerScripted
{
protected ref SCR_MissionHeader m_ERRPresentedTerrainHeader;
protected string m_ERROriginalTerrainTitle;
protected string m_ERROriginalTerrainGameMode;
protected string m_ERRAppliedTerrainTitle;
protected string m_ERRTitleWorld;
protected string m_ERRTerrainLabel;
protected BaseWorld m_ERRPresentedTerrainWorld;
protected bool m_ERRTitleLoaded;
protected float m_ERRTerrainPresentationWait;
string ERR_TerrainMissionTitle(SCR_MissionHeader header)
{
string world = header.GetWorldResourceName();
string loadedWorld = GetWorldFile();
// After the actual Escape bootstrap, the running world wins over a stale
// source header. Before that, do not label an incoming scenario with the
// outgoing world's terrain. A saved next-round selection is never consulted.
bool confirmed = m_ERRPresentedTerrainHeader == header && m_ERRPresentedTerrainWorld && m_ERRPresentedTerrainWorld == GetWorld();
if (confirmed && !loadedWorld.IsEmpty()) world = loadedWorld;
bool loaded = GetWorld() && GetWorld().GetNumSubScenes() > 0 && !world.IsEmpty() && ERR_TerrainDisplayName.Path(loadedWorld) == ERR_TerrainDisplayName.Path(world);
if (loaded)
world = GetWorld().GetSubSceneName(0);
if (world != m_ERRTitleWorld || loaded != m_ERRTitleLoaded)
{
m_ERRTitleWorld = world; m_ERRTitleLoaded = loaded;
m_ERRTerrainLabel = ERR_TerrainDisplayName.Resolve(world);
}
string title = "Co10 Escape Reintroduced";
if (!m_ERRTerrainLabel.IsEmpty()) title += " - " + m_ERRTerrainLabel;
return title;
}
override string GetMissionName()
{
SCR_MissionHeader header = SCR_MissionHeader.Cast(GetMissionHeader());
// Our own presentation has already set GameMode=Escape. It still needs to
// follow the running terrain when the root scene becomes available later.
if (header && header == m_ERRPresentedTerrainHeader)
{
ERR_RefreshTerrainPresentation();
return header.m_sName;
}
// The engine requests this before the dedicated world has loaded. Preserve
// authored Escape names and explicit opt-outs; do not change the scenario ID.
if (Replication.IsServer() && header && header.m_sGameMode != "Escape" && m_ERRTerrainStage != ERR_TerrainTakeoverStage.FAILED && ERR_TerrainTakeoverSettings.Enabled())
return ERR_TerrainMissionTitle(header);
return super.GetMissionName();
}
void ERR_PresentTerrainTakeover()
{
SCR_MissionHeader header = SCR_MissionHeader.Cast(GetMissionHeader());
if (!header || SCR_Global.IsEditMode()) return;
if (m_ERRPresentedTerrainHeader == header && m_ERRPresentedTerrainWorld == GetWorld())
{ ERR_RefreshTerrainPresentation(); return; }
ERR_RestoreTerrainPresentation();
m_ERRPresentedTerrainHeader = header;
m_ERRPresentedTerrainWorld = GetWorld();
m_ERROriginalTerrainTitle = header.m_sName;
m_ERROriginalTerrainGameMode = header.m_sGameMode;
m_ERRAppliedTerrainTitle = ERR_TerrainMissionTitle(header);
header.m_sName = m_ERRAppliedTerrainTitle;
header.m_sGameMode = "Escape";
PrintFormat("Reintroduced [terrain presentation]: mission=%1; source scenario=%2", header.m_sName, header.GetHeaderResourceName());
}
void ERR_RefreshTerrainPresentation()
{
SCR_MissionHeader header = SCR_MissionHeader.Cast(GetMissionHeader());
if (!header || header != m_ERRPresentedTerrainHeader || SCR_Global.IsEditMode()) return;
if (m_ERRPresentedTerrainWorld != GetWorld() || header.m_sName != m_ERRAppliedTerrainTitle) return;
string title = ERR_TerrainMissionTitle(header);
if (title == m_ERRAppliedTerrainTitle) return;
m_ERRAppliedTerrainTitle = title; header.m_sName = title;
PrintFormat("Reintroduced [terrain presentation]: refreshed mission=%1; loaded world=%2", title, GetWorldFile());
}
string ERR_TerrainLoadingTitle(SCR_MissionHeader requested)
{
if (!requested) return "";
SCR_MissionHeader header = SCR_MissionHeader.Cast(GetMissionHeader());
// The loading screen can hold a separate copy of the same scenario header.
// Never replace another incoming scenario's title with the outgoing world.
if (!header || header != m_ERRPresentedTerrainHeader || m_ERRPresentedTerrainWorld != GetWorld()) return requested.m_sName;
if (requested != header && (requested.GetHeaderResourceName().IsEmpty() || requested.GetHeaderResourceName() != header.GetHeaderResourceName())) return requested.m_sName;
ERR_RefreshTerrainPresentation();
return header.m_sName;
}
override void OnUpdate(BaseWorld world, float timeslice)
{
super.OnUpdate(world, timeslice);
if (!m_ERRPresentedTerrainHeader) return;
m_ERRTerrainPresentationWait += timeslice;
if (m_ERRTerrainPresentationWait < 0.5) return;
m_ERRTerrainPresentationWait = 0;
ERR_RefreshTerrainPresentation();
}
protected void ERR_RestoreTerrainPresentation()
{
if (m_ERRPresentedTerrainHeader)
{
// A later change by another system belongs to that system.
if (m_ERRPresentedTerrainHeader.m_sName == m_ERRAppliedTerrainTitle) m_ERRPresentedTerrainHeader.m_sName = m_ERROriginalTerrainTitle;
if (m_ERRPresentedTerrainHeader.m_sGameMode == "Escape") m_ERRPresentedTerrainHeader.m_sGameMode = m_ERROriginalTerrainGameMode;
}
m_ERRPresentedTerrainHeader = null;
m_ERRPresentedTerrainWorld = null;
m_ERROriginalTerrainTitle = "";
m_ERROriginalTerrainGameMode = "";
m_ERRAppliedTerrainTitle = "";
}
override protected void OnBeforeWorldCleanup()
{
ERR_RestoreTerrainPresentation();
m_ERRTitleWorld = ""; m_ERRTerrainLabel = ""; m_ERRTitleLoaded = false; m_ERRTerrainPresentationWait = 0;
super.OnBeforeWorldCleanup();
}
}
// Vanilla copies the header title once, before the replicated Escape bootstrap
// may arrive. Refresh only the title; do not recreate loading widgets/hints.
modded class SCR_LoadingScreenComponent
{
protected ref SCR_MissionHeader m_ERRLoadingTerrainHeader;
protected string m_ERRLoadingTerrainTitle;
protected float m_ERRLoadingTerrainWait;
override void OnMissionDataRetrieved(SCR_MissionHeader header)
{
super.OnMissionDataRetrieved(header);
m_ERRLoadingTerrainHeader = header;
m_ERRLoadingTerrainTitle = ""; m_ERRLoadingTerrainWait = 0;
ERR_RefreshLoadingTerrainTitle();
}
protected void ERR_RefreshLoadingTerrainTitle()
{
if (!m_ERRLoadingTerrainHeader || !m_Widgets || !m_Widgets.m_wTitle || !GetGame()) return;
string title = GetGame().ERR_TerrainLoadingTitle(m_ERRLoadingTerrainHeader);
if (title == m_ERRLoadingTerrainTitle) return;
m_ERRLoadingTerrainTitle = title;
m_Widgets.m_wTitle.SetText(title);
}
override void Update(float timeSlice, float progress = 0, float minDurationRatio = 0)
{
super.Update(timeSlice, progress, minDurationRatio);
m_ERRLoadingTerrainWait += timeSlice;
if (m_ERRLoadingTerrainWait < 0.5) return;
m_ERRLoadingTerrainWait = 0;
ERR_RefreshLoadingTerrainTitle();
}
}
@@ -0,0 +1,30 @@
// Private fixture: observe the ordinary half-second presentation updates.
modded class ArmaReforgerScripted
{
protected float m_ERRLookupProbeTime;
protected int m_ERRLookupProbeTicks;
protected bool m_ERRLookupProbeWarm;
protected bool m_ERRLookupProbeDone;
protected string m_ERRLookupProbeTitle;
override void OnUpdate(BaseWorld world, float timeslice)
{
super.OnUpdate(world, timeslice);
if (m_ERRLookupProbeDone || !m_ERRPresentedTerrainHeader) return;
m_ERRLookupProbeTime += timeslice;
if (!m_ERRLookupProbeWarm)
{
if (m_ERRLookupProbeTime < 2) return;
m_ERRLookupProbeWarm = true; m_ERRLookupProbeTime = 0;
m_ERRLookupProbeTitle = GetMissionName();
PrintFormat("ERR TERRAIN LOOKUP WARM: title=%1; world=%2", m_ERRLookupProbeTitle, GetWorldFile());
return;
}
m_ERRLookupProbeTicks++;
if (m_ERRLookupProbeTime < 20) return;
m_ERRLookupProbeDone = true;
bool unchanged = GetMissionName() == m_ERRLookupProbeTitle;
bool correct = GetMissionName() == "Co10 Escape Reintroduced - Nogova";
bool resource = GetMissionHeader().GetHeaderResourceName() == "{469880DFE1B48F95}Missions/Nogova_TerrainTest.conf";
PrintFormat("ERR TERRAIN LOOKUP COMPLETE: unchanged=%1 correct=%2 resource=%3 frames=%4 elapsed=%5", unchanged, correct, resource, m_ERRLookupProbeTicks, m_ERRLookupProbeTime);
}
}
@@ -0,0 +1 @@
{"reason": "complete", "exit": -15}