Jump to content

Cell Loads (How does it work?, objects, NPCs, issues)


Zzyxzz

Recommended Posts

Hello,

 

I'd like to talk about cell loads. Has someone details on how they work, what do they load exactly?

 

Right now I'm experiencing a very strange issue and I found out what it is, but I still don't get why.

My issue are cell load stutters, but! It's not related to NPCs and it's not related to previs/precombined meshes! Instead, it's related to ba2 archives.

 

I tested it with several weapons mods by DeadPool, NovaFinch, AsXas and some more. (Yes, I deactivated my whole load order in order to test that.)

 

The more weapon mods get activated, the worse it gets. When I activate about 15 weapon mods, it still works fine. When I walk over a cell border, there is no stutter. When I load more than 15, the stutter is more or less random but it's there and subtle. The more weapon mods I add, the more consistent the stutter gets and the intensity is getting stronger, till it stutters always, when I cross the cell border and the game attempts to load the new cell.

 

All weapon mods are packed into ba2. Ones that were already packed have been checked, they look ok. Correct file type and the correct compression settings. Loose files have been packed. I have also checked for NPC data, which could cause this issue, when they have the faceData missing.

 

Fun fact is, when I activate my whole load order with all texture mods and Boston Surroundings, but deactivate most of my weapons, it works very well. It's also not a specific weapon mod, that causes this issue. I tested them all. One by one. Several hours. I also tested several combinations of mods. I always end up with the same issue, no matter what.

 

 

For my understanding, the game loads only meshes/textures, references of the world(objects, npcs etc.), when they are connected to the cell. How comes, that adding weapon mods, have a effect on cell load, when they are not connected to it? The only thing, that comes to my mind are the ba2 files of the weapon mods.That the engine somehow loads them too on a cell load. I have absolutely no idea what's wrong.

 

 

 

My RIG:

R5 2600x

Vega 64

16RAM

Windows 10 on HDD

Steam + Mod Organizer 2 + Fallout 4 on SSD (EVO 750)

 

Link to comment
Share on other sites

Are those weapons, through actor/inventory hacks or level list injections, being populated on Actors within the uGridsToLoad active cells around the player ... or does the problem manifest in totally remote wilderness areas with no weaponised actors active ?

 

From Script Latency Test data logging I am suspecting that actors with their high polygon faces, backpacks, weapons and combat ponytails are being (pre)rendered when they are in the active area but not visible which adds to the downtown performance issues.

Link to comment
Share on other sites

My save, where I test this issue is near cambridge police station, the road, where you walk with Danse for the very first time to ArcJet Systems. This is a brand new save and I only did Prestons quest, after that I went straight to Cambridge Police station and accepted the quest for ArcJet. I finished the quest with danse and went back to the station. I saved right before the border. I think most of them inject into LL with one starting quest like: Raider_Auto.addForm(newWeapon,X,X)

 

I've tested now the cambridge area and downtown. The issue persists. Wild areas are a good hint. Have to check on that. But I don't know, which areas have no weaponized NPCs. In this case, this shouldn't matter anyway, I guess, as the city is walled off, by a building and everything behind the wall is not rendered anyway. Except, the object is bound to a quest/script.

 

 

From Script Latency Test data logging I am suspecting that actors with their high polygon faces, backpacks, weapons and combat ponytails are being (pre)rendered when they are in the active area but not visible which adds to the downtown performance issues.

 

This remembers me of an area, near cambridge. When you come from the starlight drive in down to cambridge. There are some raiders at a pool. This is near Lexington Appartments. There is a stone fence. You can trigger the culling there and observe what happens. Would be interesting to see, if the raiders also get culled and their weapons. Normally they should also disappear with everything related and you should only see void.

 

I guess it's not possible to see the NPCs or objects, that are loaded in the current cell.

 

I'll try your Script Latency Test, when I'm at home and see how the scripts perform. I will also try the Fallout 4 performance monitor and check what it says.

 

It's really strange. Never seen that behavior before and I thought I have seen everything. First I thought, previs/precombined meshes or facedata...as always. Which would be the easiest stuff to fix.

 

With uGridToLoad 5, the game loads 5 cells:

---x

---x

xxPxx

---x

---x

 

But what is exactly loaded in each cell?

 

As I remembered correctly, I once saw this video from you: https://www.youtube.com/watch?v=JePhwhSHzXg killing @50k distance. Which means, NPCs are loaded in each cell, so are probably scripts, quests, objects etc. LOD range is unaffected(cell objects like trees, streets, houses, which has LOD). Not so sure about cars and trucks, to they have LOD? they are probably fully rendered, like the NPCs, weapons etc.

Link to comment
Share on other sites

I don't know what exactly is loaded in each cell, I would assume all non disabled ObjectReferences. I know nothing of scenery. I do a lot of object OnLoad event logging along with distance from player and its always between 8,192 (2 cell) and 12,288 (3 cell) units. Then the question would be "what does loaded mean ?" is that the tri shape models, textures, rendered 3d, scripts, ani graphs ... dunno dunno.

 

There is a difference between uGridsToLoad which triggers ObjectReferences to load in the default radius, and unload which for actors happens around 15K units (range 13K to 20K logged with OnUnload events) with Ultra settings, managed by the following which look like thousands of game units:

 

fLODFadeOutMultObjects=30.0000
fLODFadeOutMultItems=10.0000
fLODFadeOutMultActors=15.0000
With default ultra settings and a long scope you can see actors wandering around at 15K range in rough unloaded LOD space.

I did a bunch of testing on object persistence and script running in loaded and unloaded states HERE to establish that object attached scripts do keep running even after the parent object 3d unloads.

 

For testing I use a clean vault 111 exit savegame and run to the top left corner of the map where there are no base game actors within 20K units, do you get any lagging if you sprint with [player.setav speedmult 200] around there ? Or copy my script latency spoiler test spreadsheet route [player.setav endurance 20] to run straight from V111 (stay right of the bloodbugs) following the road to Diamond City in 4 minutes.

Link to comment
Share on other sites

Here is my log of a test run with all of my mods enabled.

 


[01/13/2020 - 08:03:24PM] SKK_SLTMainScript.OnTimer, 1,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,30,ActualTime,85.767006,DeltaTime,55.767006,DeltaPercent,185,FrameRate,0
[01/13/2020 - 08:04:05PM] SKK_SLTMainScript.OnLocationChange,1,[WorldSpace ],[Cell ],[Location < (0001F3FE)>]
[01/13/2020 - 08:04:05PM] SKK_SLTMainScript.OnPlayerTeleport,1,[WorldSpace ],[Cell ],[Location < (0001F3FE)>]
[01/13/2020 - 08:04:35PM] SKK_SLTMainScript.OnTimer, 2,[WorldSpace ],[Cell ],[Location < (0001F3FE)>],TestTime,30,ActualTime,30.030998,DeltaTime,0.030998,DeltaPercent,0,FrameRate,53
[01/13/2020 - 08:05:05PM] SKK_SLTMainScript.OnTimer, 3,[WorldSpace ],[Cell ],[Location < (0001F3FE)>],TestTime,30,ActualTime,30.023010,DeltaTime,0.023010,DeltaPercent,0,FrameRate,60
[01/13/2020 - 08:05:36PM] SKK_SLTMainScript.OnTimer, 4,[WorldSpace ],[Cell ],[Location < (0001F3FE)>],TestTime,30,ActualTime,30.021011,DeltaTime,0.021011,DeltaPercent,0,FrameRate,59
[01/13/2020 - 08:06:06PM] SKK_SLTMainScript.OnTimer, 5,[WorldSpace ],[Cell ],[Location < (0001F3FE)>],TestTime,30,ActualTime,30.020004,DeltaTime,0.020004,DeltaPercent,0,FrameRate,60
[01/13/2020 - 08:11:12PM] SKK_SLTMainScript.OnTimer, 1,[WorldSpace ],[Cell ],[Location < (0001F3FE)>],TestTime,10,ActualTime,7.635010,DeltaTime,-2.364990,DeltaPercent,-23,FrameRate,60
[01/13/2020 - 08:11:23PM] SKK_SLTMainScript.OnTimer, 2,[WorldSpace ],[Cell ],[Location < (0001F3FE)>],TestTime,10,ActualTime,10.025024,DeltaTime,0.025024,DeltaPercent,0,FrameRate,57
[01/13/2020 - 08:11:26PM] SKK_SLTMainScript.OnLocationChange,2,[WorldSpace ],[Cell ],[Location < (0001F228)>]
[01/13/2020 - 08:11:33PM] SKK_SLTMainScript.OnTimer, 3,[WorldSpace ],[Cell ],[Location < (0001F228)>],TestTime,10,ActualTime,10.018982,DeltaTime,0.018982,DeltaPercent,0,FrameRate,69
[01/13/2020 - 08:11:43PM] SKK_SLTMainScript.OnTimer, 4,[WorldSpace ],[Cell ],[Location < (0001F228)>],TestTime,10,ActualTime,10.018005,DeltaTime,0.018005,DeltaPercent,0,FrameRate,71
[01/13/2020 - 08:11:53PM] SKK_SLTMainScript.OnTimer, 5,[WorldSpace ],[Cell ],[Location < (0001F228)>],TestTime,10,ActualTime,10.015991,DeltaTime,0.015991,DeltaPercent,0,FrameRate,21
[01/13/2020 - 08:12:02PM] SKK_SLTMainScript.OnLocationChange,5,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:12:03PM] SKK_SLTMainScript.OnTimer, 6,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.023010,DeltaTime,0.023010,DeltaPercent,0,FrameRate,71
[01/13/2020 - 08:12:13PM] SKK_SLTMainScript.OnTimer, 7,[WorldSpace ],[Cell ],[Location < (0001F228)>],TestTime,10,ActualTime,10.013977,DeltaTime,0.013977,DeltaPercent,0,FrameRate,71
[01/13/2020 - 08:12:13PM] SKK_SLTMainScript.OnLocationChange,7,[WorldSpace ],[Cell ],[Location < (0001F228)>]
[01/13/2020 - 08:12:18PM] SKK_SLTMainScript.OnLocationChange,7,[WorldSpace ],[Cell ],[Location < (00024FAB)>]
[01/13/2020 - 08:12:23PM] SKK_SLTMainScript.OnTimer, 8,[WorldSpace ],[Cell ],[Location < (00024FAB)>],TestTime,10,ActualTime,10.026978,DeltaTime,0.026978,DeltaPercent,0,FrameRate,63
[01/13/2020 - 08:12:29PM] SKK_SLTMainScript.OnLocationChange,8,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:12:33PM] SKK_SLTMainScript.OnTimer, 9,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.019043,DeltaTime,0.019043,DeltaPercent,0,FrameRate,69
[01/13/2020 - 08:12:36PM] SKK_SLTMainScript.OnLocationChange,9,[WorldSpace ],[Cell ],[Location < (00024FAB)>]
[01/13/2020 - 08:12:44PM] SKK_SLTMainScript.OnTimer, 10,[WorldSpace ],[Cell ],[Location < (00024FAB)>],TestTime,10,ActualTime,10.027954,DeltaTime,0.027954,DeltaPercent,0,FrameRate,68
[01/13/2020 - 08:12:52PM] SKK_SLTMainScript.OnLocationChange,10,[WorldSpace ],[Cell ],[Location < (0005FAA8)>]
[01/13/2020 - 08:12:54PM] SKK_SLTMainScript.OnTimer, 11,[WorldSpace ],[Cell ],[Location < (0005FAA8)>],TestTime,10,ActualTime,10.017029,DeltaTime,0.017029,DeltaPercent,0,FrameRate,63
[01/13/2020 - 08:12:55PM] SKK_SLTMainScript.OnLocationChange,11,[WorldSpace ],[Cell ],[Location < (00017E00)>]
[01/13/2020 - 08:13:04PM] SKK_SLTMainScript.OnTimer, 12,[WorldSpace ],[Cell ],[Location < (00017E00)>],TestTime,10,ActualTime,10.025024,DeltaTime,0.025024,DeltaPercent,0,FrameRate,71
[01/13/2020 - 08:13:14PM] SKK_SLTMainScript.OnTimer, 13,[WorldSpace ],[Cell ],[Location < (00017E00)>],TestTime,10,ActualTime,10.201965,DeltaTime,0.201965,DeltaPercent,2,FrameRate,68
[01/13/2020 - 08:13:24PM] SKK_SLTMainScript.OnTimer, 14,[WorldSpace ],[Cell ],[Location < (00017E00)>],TestTime,10,ActualTime,10.015015,DeltaTime,0.015015,DeltaPercent,0,FrameRate,71
[01/13/2020 - 08:13:34PM] SKK_SLTMainScript.OnTimer, 15,[WorldSpace ],[Cell ],[Location < (00017E00)>],TestTime,10,ActualTime,10.018982,DeltaTime,0.018982,DeltaPercent,0,FrameRate,71
[01/13/2020 - 08:13:44PM] SKK_SLTMainScript.OnLocationChange,15,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:13:44PM] SKK_SLTMainScript.OnTimer, 16,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.021973,DeltaTime,0.021973,DeltaPercent,0,FrameRate,71
[01/13/2020 - 08:13:54PM] SKK_SLTMainScript.OnTimer, 17,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.028992,DeltaTime,0.028992,DeltaPercent,0,FrameRate,59
[01/13/2020 - 08:14:00PM] SKK_SLTMainScript.OnLocationChange,17,[WorldSpace ],[Cell ],[Location < (000DC941)>]
[01/13/2020 - 08:14:04PM] SKK_SLTMainScript.OnTimer, 18,[WorldSpace ],[Cell ],[Location < (000DC941)>],TestTime,10,ActualTime,10.028015,DeltaTime,0.028015,DeltaPercent,0,FrameRate,59
[01/13/2020 - 08:14:15PM] SKK_SLTMainScript.OnTimer, 19,[WorldSpace ],[Cell ],[Location < (000DC941)>],TestTime,10,ActualTime,10.022034,DeltaTime,0.022034,DeltaPercent,0,FrameRate,61
[01/13/2020 - 08:14:16PM] SKK_SLTMainScript.OnLocationChange,19,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:14:22PM] SKK_SLTMainScript.OnLocationChange,19,[WorldSpace ],[Cell ],[Location < (000ED94E)>]
[01/13/2020 - 08:14:25PM] SKK_SLTMainScript.OnTimer, 20,[WorldSpace ],[Cell ],[Location < (000ED94E)>],TestTime,10,ActualTime,10.020996,DeltaTime,0.020996,DeltaPercent,0,FrameRate,63
[01/13/2020 - 08:14:29PM] SKK_SLTMainScript.OnLocationChange,20,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:14:35PM] SKK_SLTMainScript.OnTimer, 21,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.025024,DeltaTime,0.025024,DeltaPercent,0,FrameRate,65
[01/13/2020 - 08:14:45PM] SKK_SLTMainScript.OnTimer, 22,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.015991,DeltaTime,0.015991,DeltaPercent,0,FrameRate,60
[01/13/2020 - 08:14:55PM] SKK_SLTMainScript.OnTimer, 23,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.016968,DeltaTime,0.016968,DeltaPercent,0,FrameRate,60
[01/13/2020 - 08:14:57PM] SKK_SLTMainScript.OnLocationChange,23,[WorldSpace ],[Cell ],[Location < (000B477F)>]
[01/13/2020 - 08:15:05PM] SKK_SLTMainScript.OnTimer, 24,[WorldSpace ],[Cell ],[Location < (000B477F)>],TestTime,10,ActualTime,10.027039,DeltaTime,0.027039,DeltaPercent,0,FrameRate,63
[01/13/2020 - 08:15:13PM] SKK_SLTMainScript.OnLocationChange,24,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:15:15PM] SKK_SLTMainScript.OnTimer, 25,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.027039,DeltaTime,0.027039,DeltaPercent,0,FrameRate,63
[01/13/2020 - 08:15:25PM] SKK_SLTMainScript.OnTimer, 26,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.025024,DeltaTime,0.025024,DeltaPercent,0,FrameRate,70
[01/13/2020 - 08:15:35PM] SKK_SLTMainScript.OnTimer, 27,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.016052,DeltaTime,0.016052,DeltaPercent,0,FrameRate,70
[01/13/2020 - 08:15:39PM] SKK_SLTMainScript.OnLocationChange,27,[WorldSpace ],[Cell ],[Location < (00024F93)>]
[01/13/2020 - 08:15:45PM] SKK_SLTMainScript.OnTimer, 28,[WorldSpace ],[Cell ],[Location < (00024F93)>],TestTime,10,ActualTime,10.017944,DeltaTime,0.017944,DeltaPercent,0,FrameRate,71
[01/13/2020 - 08:15:53PM] SKK_SLTMainScript.OnLocationChange,28,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:15:55PM] SKK_SLTMainScript.OnTimer, 29,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.026001,DeltaTime,0.026001,DeltaPercent,0,FrameRate,71
[01/13/2020 - 08:16:06PM] SKK_SLTMainScript.OnTimer, 30,[WorldSpace ],[Cell ],[Location < (000517DA)>],TestTime,10,ActualTime,10.046021,DeltaTime,0.046021,DeltaPercent,0,FrameRate,70
[01/13/2020 - 08:16:06PM] SKK_SLTMainScript.OnLocationChange,29,[WorldSpace ],[Cell ],[Location < (000517DA)>]
[01/13/2020 - 08:16:15PM] SKK_SLTMainScript.OnLocationChange,30,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:16:16PM] SKK_SLTMainScript.OnTimer, 31,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.059998,DeltaTime,0.059998,DeltaPercent,0,FrameRate,70
[01/13/2020 - 08:16:19PM] SKK_SLTMainScript.OnLocationChange,31,[WorldSpace ],[Cell ],[Location < (0016C099)>]
[01/13/2020 - 08:16:26PM] SKK_SLTMainScript.OnTimer, 32,[WorldSpace ],[Cell ],[Location < (0016C099)>],TestTime,10,ActualTime,10.015015,DeltaTime,0.015015,DeltaPercent,0,FrameRate,67
[01/13/2020 - 08:16:34PM] SKK_SLTMainScript.OnLocationChange,32,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:16:36PM] SKK_SLTMainScript.OnTimer, 33,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.028992,DeltaTime,0.028992,DeltaPercent,0,FrameRate,54
[01/13/2020 - 08:16:46PM] SKK_SLTMainScript.OnTimer, 34,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.023987,DeltaTime,0.023987,DeltaPercent,0,FrameRate,63
[01/13/2020 - 08:16:56PM] SKK_SLTMainScript.OnLocationChange,34,[WorldSpace ],[Cell ],[Location < (000233C3)>]
[01/13/2020 - 08:16:56PM] SKK_SLTMainScript.OnTimer, 35,[WorldSpace ],[Cell ],[Location < (000233C3)>],TestTime,10,ActualTime,10.038025,DeltaTime,0.038025,DeltaPercent,0,FrameRate,63
[01/13/2020 - 08:17:06PM] SKK_SLTMainScript.OnTimer, 36,[WorldSpace ],[Cell ],[Location < (000233C3)>],TestTime,10,ActualTime,10.021973,DeltaTime,0.021973,DeltaPercent,0,FrameRate,60
[01/13/2020 - 08:17:14PM] SKK_SLTMainScript.OnLocationChange,36,[WorldSpace ],[Cell ],[Location < (0001FA4A)>]
[01/13/2020 - 08:17:16PM] SKK_SLTMainScript.OnTimer, 37,[WorldSpace ],[Cell ],[Location < (0001FA4A)>],TestTime,10,ActualTime,10.023987,DeltaTime,0.023987,DeltaPercent,0,FrameRate,67
[01/13/2020 - 08:17:26PM] SKK_SLTMainScript.OnLocationChange,37,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:17:26PM] SKK_SLTMainScript.OnTimer, 38,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.024048,DeltaTime,0.024048,DeltaPercent,0,FrameRate,70
[01/13/2020 - 08:17:37PM] SKK_SLTMainScript.OnTimer, 39,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.018982,DeltaTime,0.018982,DeltaPercent,0,FrameRate,70
[01/13/2020 - 08:17:41PM] SKK_SLTMainScript.OnLocationChange,39,[WorldSpace ],[Cell ],[Location < (00042B40)>]
[01/13/2020 - 08:17:42PM] SKK_SLTMainScript.OnLocationChange,39,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:17:47PM] SKK_SLTMainScript.OnTimer, 40,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.018982,DeltaTime,0.018982,DeltaPercent,0,FrameRate,71
[01/13/2020 - 08:17:57PM] SKK_SLTMainScript.OnTimer, 41,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.014038,DeltaTime,0.014038,DeltaPercent,0,FrameRate,71
[01/13/2020 - 08:18:07PM] SKK_SLTMainScript.OnTimer, 42,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.018005,DeltaTime,0.018005,DeltaPercent,0,FrameRate,71
[01/13/2020 - 08:18:17PM] SKK_SLTMainScript.OnTimer, 43,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.210022,DeltaTime,0.210022,DeltaPercent,2,FrameRate,67
[01/13/2020 - 08:18:22PM] SKK_SLTMainScript.OnLocationChange,43,[WorldSpace ],[Cell ],[Location < (0002FF7B)>]
[01/13/2020 - 08:18:27PM] SKK_SLTMainScript.OnTimer, 44,[WorldSpace ],[Cell ],[Location < (0002FF7B)>],TestTime,10,ActualTime,10.015991,DeltaTime,0.015991,DeltaPercent,0,FrameRate,64
[01/13/2020 - 08:18:36PM] SKK_SLTMainScript.OnLocationChange,44,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:18:37PM] SKK_SLTMainScript.OnTimer, 45,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.039978,DeltaTime,0.039978,DeltaPercent,0,FrameRate,54
[01/13/2020 - 08:18:47PM] SKK_SLTMainScript.OnTimer, 46,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.023010,DeltaTime,0.023010,DeltaPercent,0,FrameRate,62
[01/13/2020 - 08:18:50PM] SKK_SLTMainScript.OnLocationChange,46,[WorldSpace ],[Cell ],[Location < (001B8C53)>]
[01/13/2020 - 08:18:57PM] SKK_SLTMainScript.OnTimer, 47,[WorldSpace ],[Cell ],[Location < (001B8C53)>],TestTime,10,ActualTime,10.018982,DeltaTime,0.018982,DeltaPercent,0,FrameRate,58
[01/13/2020 - 08:19:02PM] SKK_SLTMainScript.OnLocationChange,47,[WorldSpace ],[Cell ],[Location < (00027E96)>]
[01/13/2020 - 08:19:07PM] SKK_SLTMainScript.OnLocationChange,47,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:19:08PM] SKK_SLTMainScript.OnTimer, 48,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.021057,DeltaTime,0.021057,DeltaPercent,0,FrameRate,59
[01/13/2020 - 08:19:08PM] SKK_SLTMainScript.OnLocationChange,48,[WorldSpace ],[Cell ],[Location < (00027E96)>]
[01/13/2020 - 08:19:18PM] SKK_SLTMainScript.OnTimer, 49,[WorldSpace ],[Cell ],[Location < (00027E96)>],TestTime,10,ActualTime,10.033020,DeltaTime,0.033020,DeltaPercent,0,FrameRate,59
[01/13/2020 - 08:19:20PM] SKK_SLTMainScript.OnLocationChange,49,[WorldSpace ],[Cell ],[Location < (00002CEF)>]
[01/13/2020 - 08:19:28PM] SKK_SLTMainScript.OnTimer, 50,[WorldSpace ],[Cell ],[Location < (00002CEF)>],TestTime,10,ActualTime,10.023071,DeltaTime,0.023071,DeltaPercent,0,FrameRate,52
[01/13/2020 - 08:19:38PM] SKK_SLTMainScript.OnTimer, 51,[WorldSpace ],[Cell ],[Location < (00002CEF)>],TestTime,10,ActualTime,10.016968,DeltaTime,0.016968,DeltaPercent,0,FrameRate,55
[01/13/2020 - 08:19:48PM] SKK_SLTMainScript.OnTimer, 52,[WorldSpace ],[Cell ],[Location < (00002CEF)>],TestTime,10,ActualTime,10.020020,DeltaTime,0.020020,DeltaPercent,0,FrameRate,60
[01/13/2020 - 08:19:58PM] SKK_SLTMainScript.OnTimer, 53,[WorldSpace ],[Cell ],[Location < (00002CEF)>],TestTime,10,ActualTime,10.020996,DeltaTime,0.020996,DeltaPercent,0,FrameRate,61
[01/13/2020 - 08:20:08PM] SKK_SLTMainScript.OnTimer, 54,[WorldSpace ],[Cell ],[Location < (00002CEF)>],TestTime,10,ActualTime,10.024902,DeltaTime,0.024902,DeltaPercent,0,FrameRate,57
[01/13/2020 - 08:20:10PM] SKK_SLTMainScript.OnLocationChange,54,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:20:18PM] SKK_SLTMainScript.OnTimer, 55,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.054077,DeltaTime,0.054077,DeltaPercent,0,FrameRate,60
[01/13/2020 - 08:20:28PM] SKK_SLTMainScript.OnTimer, 56,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.021973,DeltaTime,0.021973,DeltaPercent,0,FrameRate,56
[01/13/2020 - 08:20:39PM] SKK_SLTMainScript.OnTimer, 57,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.031006,DeltaTime,0.031006,DeltaPercent,0,FrameRate,56
[01/13/2020 - 08:20:47PM] SKK_SLTMainScript.OnLocationChange,57,[WorldSpace ],[Cell ],[Location < (00090848)>]
[01/13/2020 - 08:20:48PM] SKK_SLTMainScript.OnLocationChange,57,[WorldSpace ],[Cell ],[Location < (0001DAF7)>]
[01/13/2020 - 08:20:49PM] SKK_SLTMainScript.OnTimer, 58,[WorldSpace ],[Cell ],[Location < (0001DAF7)>],TestTime,10,ActualTime,10.020020,DeltaTime,0.020020,DeltaPercent,0,FrameRate,49
[01/13/2020 - 08:20:59PM] SKK_SLTMainScript.OnTimer, 59,[WorldSpace ],[Cell ],[Location < (0001DAF7)>],TestTime,10,ActualTime,10.024048,DeltaTime,0.024048,DeltaPercent,0,FrameRate,48
[01/13/2020 - 08:21:07PM] SKK_SLTMainScript.OnLocationChange,59,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:21:09PM] SKK_SLTMainScript.OnTimer, 60,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.024048,DeltaTime,0.024048,DeltaPercent,0,FrameRate,55
[01/13/2020 - 08:21:09PM] SKK_SLTMainScript.OnLocationChange,60,[WorldSpace ],[Cell ],[Location < (00045610)>]
[01/13/2020 - 08:21:19PM] SKK_SLTMainScript.OnTimer, 61,[WorldSpace ],[Cell ],[Location < (00045610)>],TestTime,10,ActualTime,10.033936,DeltaTime,0.033936,DeltaPercent,0,FrameRate,43
[01/13/2020 - 08:21:21PM] SKK_SLTMainScript.OnLocationChange,61,[WorldSpace ],[Cell ],[Location < (0003B16D)>]
[01/13/2020 - 08:21:27PM] SKK_SLTMainScript.OnLocationChange,61,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:21:29PM] SKK_SLTMainScript.OnTimer, 62,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.067993,DeltaTime,0.067993,DeltaPercent,0,FrameRate,49
[01/13/2020 - 08:21:35PM] SKK_SLTMainScript.OnLocationChange,62,[WorldSpace ],[Cell ],[Location < (0001905B)>]
[01/13/2020 - 08:21:39PM] SKK_SLTMainScript.OnTimer, 63,[WorldSpace ],[Cell ],[Location < (0001905B)>],TestTime,10,ActualTime,10.024048,DeltaTime,0.024048,DeltaPercent,0,FrameRate,49
[01/13/2020 - 08:21:41PM] SKK_SLTMainScript.OnLocationChange,63,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:21:49PM] SKK_SLTMainScript.OnTimer, 64,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.023926,DeltaTime,0.023926,DeltaPercent,0,FrameRate,23
[01/13/2020 - 08:21:55PM] SKK_SLTMainScript.OnLocationChange,64,[WorldSpace ],[Cell ],[Location < (00042904)>]
[01/13/2020 - 08:21:58PM] SKK_SLTMainScript.OnLocationChange,64,[WorldSpace ],[Cell ],[Location < (00002CF0)>]
[01/13/2020 - 08:21:59PM] SKK_SLTMainScript.OnTimer, 65,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.026001,DeltaTime,0.026001,DeltaPercent,0,FrameRate,47
[01/13/2020 - 08:22:10PM] SKK_SLTMainScript.OnTimer, 66,[WorldSpace ],[Cell ],[Location < (00002CF0)>],TestTime,10,ActualTime,10.023926,DeltaTime,0.023926,DeltaPercent,0,FrameRate,47
[01/13/2020 - 08:22:11PM] SKK_SLTMainScript.OnLocationChange,66,[WorldSpace ],[Cell ],[Location < (00022610)>]
[01/13/2020 - 08:22:20PM] SKK_SLTMainScript.OnTimer, 67,[WorldSpace ],[Cell ],[Location < (00022610)>],TestTime,10,ActualTime,10.030884,DeltaTime,0.030884,DeltaPercent,0,FrameRate,46
[01/13/2020 - 08:22:25PM] SKK_SLTMainScript.OnLocationChange,67,[WorldSpace ],[Cell ],[Location < (00084A6E)>]

 

 

Which looks actually very okay. My auto save script had an impact with 2%, every time it saved. I'm quite surprised that my scripts perform that well. My mod Better Locational Damage mod spreads a script on NPCs via a cloak. There were also some gun fights here and there and I didnt see any impact of that. Maybe in a bigger fire fight, there could be some impact, but I guess that will be barely noticeably. I wrote the scripts to be very fast and I bind objects for a short time only.

 

Your test with persistent objects is also very interesting. I wonder, what is the most stuff from Sim Settlement that "bloats" a save file. With Sim Settlements a save file can get very fast, very big.

 

 

Regarding the issue I found. I'm still not sure, but the worst place is Cambridge, when going to the police station. It's really strange. When I walk to the Weston water treatment plant the issue is barely noticeable or not noticeable at all. Tried also walking along the side of Vault 111 down to the pond and I had not a single stutter. Still I wonder, what does trigger it near Cambridge. Something in the cell makes it really hard to load the area.

Link to comment
Share on other sites

Cambridge around College Square has a tonne of raider/feral actors both live and corpses with a tiny but detectable stutters/spikes even a vanilla game. Here is the interesting bit if I do a baseline sprint through the middle, then console [ KAH ] and do the run again I get the same tiny but detectable stutters/spikes. That suggests its not the Actor AI but rendering the actor polygons generating the observed load. This is not broken precombines and visual whatnot, as if all the actors are disabled/moved to a remote holding cell the detectable stutters/spikes disappear.

 

Probably why there is a specific iRemoveExcessDeadComplexCount (3) in addition to in addition to the basic iRemoveExcessDeadCount (15) ... rendering actors live or dead takes effort.

 

Which loops back to your weapons, it may be that those quality hi poly models are populating on your actors with drawn weapons (or using backpacks/holsters to show 'em off ?) and being rendered in the active area even though the actor is not visible.

Link to comment
Share on other sites

Have to test that on a new save. A new game without any weapons loaded,visit the area, trigger all spawns and then enable the mods. This could explain the issue and would mean:

 

On cell load, objects are loaded into memory / rendered but not drawn. As soon, as you look around the corner, the objects are drawn. I have experienced the same with Sim Settlements. As soon as I enter a heavy crowded settlement area, although nothing is drawn, you notice that something gets loaded in the background. I always thought, that objects are only loaded, right before they are drawn.

 

So if you have an area that is culled with many complex objects, they are still getting loaded, even when you don't see them and impact performance for the calculations. Once the engine is done loading them, the loading process aka "stutter" ends. Further impact is then only, when they are drawn to the area.

 

Have to keep that in my mind, when I'm going to create some "exploration mods".

 

I wonder how it looks like with interiors.When you bind objects within an interior, is the cell persistent too? Like for example you apply a "timed bomb"-script to an actor in an interior cell and the timer runs out, when you left the interior. The actor probably dies, but the explosion won't affect anything, as nothing else is loaded. Except, when you are probably in combat. Enemies in combat still chase you through doors.

Link to comment
Share on other sites

Uncompressing BA2s (assets are still in BA2s but without compression) should improve loading a bit since Fallout 4 still uses slow zlib.

 

Thanks for that hint. Will try that too. The only reason that compression is used, is then probably space?

Link to comment
Share on other sites

Scripts and AI travel packages attached to non persistent actors still tick when they are unloaded, so if they are set to travel their XYZ is updated and they may pop into the active area to load, render and attack the player. Most of my combat spawning mods avoid this to manage the spawn counts (plus RPG players don't like it).

 

Just for fun spawned an actor with a script and travel package at Sanctuary with a target of Spectacle. The script timer keeps ticking to generate Debug.Trace output and the actor object XYZ is moved off screen when unloaded and non persistent: Debug.Trace Run Data Forcing the actor into a quest alias to make persistent has no measurable impact except that +9 byte increase on the save game VM.
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...