Jump to content

Fallout 4 Optimization and Performance Systems Explained


Recommended Posts

I do both, regular and precombined, i think there is 2 options for a reason. Performance is definitely nice with both.

 

What's the point for that? 'precombined visibility' already includes 'visibility'. This CK Wiki mentions it: Previs builds a visibility graph of which non-mobile uncombined references and combined geometries are visible from different points… Proof of this is the fact that the 'precombined visibility' generates visibility for statics with scrap recipes as well (which are excluded from the precombined geometry generation). I didn't bother to test this, but I assume precombined visibility will overwrite visibility files.

I've seen this recommended a few times, and I wonder why..

Link to comment
Share on other sites

  • 1 month later...

So an Interesting thing I've noticed (and if this is know and I'm stating the obvious then I'm sorry) is that "Initially Disabled" statics will also get used in the Pre-Combined Meshes and Visibility.

 

I've been working on a full Optimization Patch for Beantown and I had some WIP buildings that were disabled while generating Pre-Combined. When doing a building I normally disable the original building and stack my open world version right on top of it. This way I can easily get all my building lined up in xEdit.

 

I then went to test my patch and by accident was running my WIP version in game instead of my current released version and the doors were open with full viability and without any culling. I then tested on my Released version and the doors were blocked as expended.

 

Next I opened a new building and with the vanilla building disabled and my open window version enabled, I went to it in game and again the building was blocked by the patch.

 

Also all of my compatibility setting still work with the patch and that also uses an enable parent on two buildings.

 

Maybe I'm just a bit slow here but I assumed the "Initially Disabled" objects would not be included in the process.

Link to comment
Share on other sites

That can't be right man, some things up. I have tested this myself, although when I fixed up Greekrages Starlight mod, I had seen performance gains in disabling a lot of stuff he had left enabled, but the draw call count still seems high, too high, for the building he has. But then I think about the occlusion box in Monsignor in vanilla, disabling this allows generating around there to work as normal, where as it borks your gen if it's enabled.

 

Are you positive you have removed all the No Previs flags from you WIP file? And confirmed tpc is showing as enabled in your test area in game?

Link to comment
Share on other sites

 

Are you positive you have removed all the No Previs flags from you WIP file? And confirmed tpc is showing as enabled in your test area in game?

 

I am sure I have removed the no PreVis from my patch. It did seem odd to me but I think it's how it works if you think about places like Boston Airport for example that change depending on player actions all that extra disabled junk would need to be in a pre-combined because they are not switching cells or anything it's all done through enable parents.

Link to comment
Share on other sites

Mmm this leads me back to darker territory. Thicket Excavations. If anyone recalls there is still a cell reset bug present, it happens for me here after the little mission and the water is drained.

 

Anyway, I don't think it makes sense for the precombined to have a disabled object even considering the airport etc, how does/would the game know to switch the precombined mesh in? Or not load the material? And also considering modifying a cell and loading an esp that refers back to the vanilla data causing original precombined to appear on top...

 

I'm not putting anything past it, something still doesn't seem right. Do you happen to be using the new ck version 1.10? Cos I'm seeing some strange behaviour with my stuff as well. Namely patches I generate, they work but then later crash the game, or outright crash the game now.

Link to comment
Share on other sites

  • 4 weeks later...

Looks pretty good.

 

To sum up what became a bit rambling:

  1. Both detection methods you noted seem to be a result of the placed references being edited (via material swaps or something similar) to use a different material than the one they had been assigned when the precombined meshes in that cell were generated
  2. Another detection method (only usable in settlements) is losing the ability to place most things (beds for sure, among many others) on a surface. This is because precombineds seem to automatically have the "treat as ground" property applied to them, and as a result Bethesda didn't bother adding it to a lot of base records that really should have it
  3. xEdit puts brackets around the "Placed Object" descriptor on the lefthand side :tongue:.

 

In more detail (with tangents), spoilered because holy s#*! did I ramble:

 

 

1) One thing I'll add (not particularly important to the overall guide, but an explanation of something you noticed): that is, material changes not applying when the precombineds are active. Having looked at some precombined meshes in nifskope when I was trying to figure them out*, I noticed that materials are defined in the precombined mesh. So those SCOLs that look different in the CK than they do in a precombined mesh were likely the result of someone changing them after the precombineds were made, and not realizing that the changes weren't applied. In fact, because nifskope was updated a while back to let you look at vanilla precombineds, someone could actually make a mod that "fixes" those instances without any performance impact by manually editing the precombineds manually to point at a different material. From my time spent making new precombineds for the Mechanist's Lair and Vault 88, it seems loose precombineds are loaded over those in ba2s, just like with everything else.

 

As far as those alpha cut-offs you noticed go, that might be due to the same thing, assuming the alpha cut-offs were made using a different material the base painting material (i.e. the precombineds were made before the paintings were "distressed", and they saved the "distressed" versions as a different material than the one used in the precombineds). You or I would have to look at the records/meshes and their associated precombineds to be sure either way, but your comment about different materials with different alpha cutoffs is a good indicator.

 

There is also the possibility that the method used for the automatic generation of precombineds can't factor in material swaps, but I'm fairly certain I've seen evidence against that (can't remember any specific ones off the top of my head though).

 

 

2) Another method of detecting broken precombineds (also tangentially related to SCOLs): precombineds seems to automatically add the "treat as ground" property**, and as a result Bethesda didn't bother adding it to a lot of statics that should have it. So in settlements, if you are suddenly unable to place beds/couches/etc... on a surface you could before installing a mod (or a game update, I still don't understand how updates to the game would randomly [both in terms of location and in terms of who it affected] break Spring Cleaning's use of the same system your tester used to break precombineds***). This relates to SCOLs because you can't add properties to SCOLs. This means that the "treat as ground" property cannot be applied to non-precombined SCOLs, and even if the component statics have the property the SCOL won't. So if you know of an SCOL in an cell you're concerned about it's a better test, as a Static might have that property applied to it (either by the base game [like rugs] or by a mod) but an SCOL can't.

 

*I'm pretty sure I mentioned my discovery of how to manually remove at least the visible parts of an object from a vanilla precombined mesh‎⁺‎⁺ earlier in this thread. The collision meshes are another story, since with a few exceptions (and I haven't been able to find enough/spent enough time on it to figure out a pattern) all the precombined collision meshes for any given cell are packed together into a single CELLID_physics.nif file (not referenced in the cell record itself, but still used, which means you can't choose to not use it), and last I checked we can still only edit collision meshes by moving their parent NiNodes (for translation/rotation of the collision mesh, but sadly not scaling) or with the 3ds Max 2013 and Bethesda's plugin.

 

 

3) And a third way of detecting broken precombineds without the CK is to use xEdit, and check for any placed object record shown as [Placed Object] instead of just Placed Object. You never said it had be usable in-game :teehee:. But it seriously might be useful to mention in that post, since you are mentioning xEdit anyway and if someone is new to it they might not realize (or even notice) what those brackets mean. I only figured it out when I was trying to figure out why reducing the ITMs for my Spring Cleaning patch to a single record per cell didn't seem to work for all cells.

 

 

‎⁺‎⁺On that note, does anyone know if jonwd7 has made any progress on decoding CK-created precombineds?

 

**at least for most, I'm not 100% it adds it to every precombined mesh. It's possible that Bethesda's dev tools let them manually choose to add the property. I used to think they had a much better way of excluding things from being included in precombineds that wasn't included in the precombined generator we have access to (the completely different format and much larger size of CK-made precombineds makes it obvious that there are some significant differences to that particular tool), but the things you are using as a detector point to precombineds being made before at least some of the detail work was done. And they might have done something similar to what I did - i.e. temporarily "delete" things I want scrappable, generate precombineds, then use xEdit to remove those deleted records from the plugin entirely (rather than using undelete and disable, since I don't want them actually removed until someone scraps them themselves).

 

***Trying to figure out that system°° is what led me to figuring out what I have - including realizing that it was specifically precombined placed references that triggered it and releasing my Spring Cleaning/general scrap mod patch a few weeks before the dev comment explaining the system, something I used (together with figuring out how to add new, non-replacer customization options a few weeks before the release of the CK, though it was admittedly after zilav updated xEdit to mention the associated precombineds in the FormID section of a REFR record) a few months ago in a non-gaming related job interview to demonstrate my problem-solving abilities (and yes, I got the job :smile:). That said, my attempts to describe xEdit as the tool I used in figuring those things out made it sound much more impressive than it might otherwise seem :laugh:.

 

°°partially to get Spring Cleaning working again for those afflicted by the issue, mainly to reduce the number of dirty edits needed. Spring Cleaning has an excessive number of them because when Nverjos last updated it we understood far less about what triggered Bethesda's automated "disable precombineds/previs for this cell if a plugin edits a precombined record without making new precombineds" system (which we didn't officially learn about until someone got a response about it from one of the Devs. Nverjos's understanding of it seemed to be limited to the fact that Placed Object ITMs could trigger it (I'm kind of curious how he figured that out, to be honest).

 

 

And on a final note: auto-save drafts for posts are wonderful, amazing things. I accidentally refreshed the page when I was almost done with this post, and when I was trying decide if I should bother rewriting the whole thing (versus just the TLDR version at the top) I noticed "View Auto Saved Content" at the bottom of the post window. Not sure why the Nexus doesn't have a dedicated "Save draft" icon like some other forums, or why it doesn't automatically restore the saved draft when you do something stupid like I did and leave/refresh the page without posting, but at least I finally realized it does save drafts.

Link to comment
Share on other sites

Something I noticed when trying to locate the thread where the Dev talks about the precombined auto-disable system* was that xEdit has a scripting function that checks whether a record has a precombined mesh, presumably what it uses to determine which "Placed Object" records need brackets. So someone who properly knows how to make pascal scripts for use with xEdit** could make an xEdit script that detects if a given mod will break precombineds (and possibly lists either the offending records, or the cells they are in). It would need to check the VISI and PCMB fields of the containing cells and compare them to the vanilla values (and the ones from DLC, where relevant***) to avoid giving false positives (i.e. saying it will break precombineds, when the mod rebuilt precombineds to account for the edits).

 

The wiki page where I found these functions: https://www.creationkit.com/index.php?title=TES5Edit_Scripting_Functions

 

*The link in the first post doesn't seem to work, I guess as a result of one of the changes they made when they redid their community forums system, so I tried to find the wiki page on Precombineds that is essentially just a repost of that Dev response

**rather than someone like me, who can either 1) beat my head against a script someone else made that does something similar to what I want until it works (my formlist/recipe script), or 2) interest zilav enough that he makes it for me while I just act as a tester (my Precombined Data editor script)

***might want to have it check against a stored list of those values, in order to not give a false positive just because the mod doesn't require a DLC to load, but the value in those fields is from the DLC and not the base game

Link to comment
Share on other sites

  • Recently Browsing   0 members

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