Jump to content

Mod Cleanup Case Study - Ambient Slaves 0.2b - Part 5


gregaaz

402 views

Welcome back, everyone, and thank you for your patience with the delay. This week I ran into a stubborn crash bug related to Beyond Skyrim: Bruma that I am still working on diagnosing, and which interrupted my work on this project. For now I've uninstalled BSB so I can focus on this effort and on preparing for my next playthrough

 

Last week, we went through and reviewed about half the navmesh conflicts in AS. We'll start by working on the other half, and if time permits then we'll move on to some cleanup items at the end. A quick recap of our remaining agenda items:

 

  • Complete navmesh conflict resolution
  • Complete finishing touches on navmeshes (re-finalization and cleanup, NMIM regeneration)
  • Patch statics at new Windhelm pier area
  • Assess options for achieving ESL flagging (to reduce load order footprint)

 

Navmesh Patching, Continued

We have the Navmeshes in the following zones left to work on:

 

WhiterunExterior14 -- basic record is OK but needs compatibility patches for Rigmor of Bruma and Cutting Room Floor

WhiterunExterior01 -- basic record is OK but conflicts with Cutting Room Floor

WhiterunExterior13 -- contains two navmeshes that both conflict with Rigmor of Bruma

EETC Docks -- Needs USSEP navmesh improvements forwarded. Conflicts with Midwood Island ship location patch

Markarth Exterior01 -- needs USSEP navmesh improvements forwarded. Conflicts with Sky City.

SalviusFarm -- no actual conflicts, but needs AS records forwarded to my private navmesh conflict resolution patch to facilitate edge link alignment with adjacent cells that I've modded

 

If you're following along in xEdit you may notice that I'm skipping certain zones like WhiterunExterior16 - I omitted any zones that based on pre-screening it doesn't look like I need to patch.

 

 

Whiterun Navmesh Cleanup

We'll start by finishing off Whiterun. As you can see above, we won't be doing any more patching of the main AS plugin, but we do need to create a few compatibility patches. Let's look at 14 first, record #BD7D4, since it's the most complex conflict we have. As you can see below, this is a large exterior cell that covers a lot of real estate. Right off the bat we can see that Rigmor doesn't appear to have any meaningful differences. In fact, the change is in a single vertex position. We'll patch that with a simple xEdit revision to the record, forwarding the vertex change. This probably won't have any big impact on compatibility, but it never hurts to be thorough. CRF is more extensive, making changes to the navmesh in several parts of the southern half of the map. Because it adds triangles (and because AS also adds triangles) we know we'll need to patch these in the CK if we want to keep our sanity; xEdit just doesn't have the UI features to make managing this kind of change efficient from a time and effort point of view. 

 

Finally, the AS changes to the navmesh are pretty apparent. Like with Whiterun15, these are focused on the new building the mod adds and they don't overlap the CRF edits. We'll use the same cut and weld technique used before to make the compatibility patch.

 

image.png.4848af57ee54ba2be6e5c7cb95ead92a.png

 

After a little CK surgery, we end up with this navmesh shown below. Of course, we'll need to go into xEdit and clean up, but first we also need to make some edits to the main AS file. If you look down in the bottom left corner, you can see a little diagonal yellow line. This marks the demarcation of a small subsidiary navmesh that doesn't need to be separate. Indeed, the AS-CRF patch will create a deleted navmesh here so we'll go back and merge it back into the main mesh to avoid this problem with the compatibility patch.

 

image.png.2d138f5b8b8aa04e666a15b4c8b4833f.png

 

The quickest way to do this is, first, to hide the navmesh off to the left (select the mesh and click "H") so we don't accidentally select its vertices. Then highlight each border vertex and press "q" to merge the two points. This will collapse both parts into a single new navmesh.

 

image.png.7ba35202cca60336ae89391684ba7c3e.png

 

When all's said and done with CRF, we next go to look at Rigmor. However, as you can see below, our own navmesh edits to support AS are now in direct conflict with Rigmor, and as we noted before, it's just a single vertex. We'll just let AS prevail and leave it at that.

 

image.png.80e53906595903899642eccd90d7205c.png

 

Next up is 69688, Whiterun Exterior 1. As you can see here, the only difference between AS and vanilla is edge links, so we'll just copy the CRF version into its compatibility patch. We'll go back and clean it up later, which will slot in the revised edge links. The situation is the same for the two Rigmor of Bruma conflicts in Whiterun Exterior 13, and we'll handle them the same way.

 

image.png.3546aae6e566a2f51202b4c23603fd6c.png

 

 

East Empire Company Docks, Solitude

Navmesh 58838 has a conflict similar to what we saw in Whiterun 14, where we have a couple different mods making changes to the same real estate. Let's start with a visual inspection of the four versions.

 

USSEP increases the complexity of the mesh, likely to add more natural traversal of the boardwalk and stairs. MI makes very small changes to two triangles that are untouched by USSEP or AS, likely to support the more extensive navmesh changes in the adjoining cells. Assuming we don't get a situation like last time where the triangles get edited in our patching, we'll just forward these using xEdit modifications. Finally, AS adds the entrance to the Frostbite Guild outpost and adjusts part of the boardwalk to support the new geometry.

 

image.png.22fabf28d0155eb62241c5116eb492eb.png

 

We'll patch this by welding this new area onto the USSEP navmesh. Since it's a preferred travel area, we also need to remember to reapply the yellow "preferred" shading to the boardwalk path triangles after we complete the work. Once that's done, we just finalize, save, and clean in xEdit.

 

image.png.269525b1e53c65d3a2331d603a413398.png

 

As we planned, Midwood Island ship location patch compatibility is readily accomplished in xEdit. We'll go back later to clean this up in the CK but for now this'll do.

 

image.png.08da8c16a8726d362e7aa02e004a101b.png

 

 

Markarth Gates Area

This (106501) is another four-way conflict, between vanilla, USSEP, Sky City, and AS. Let's start with out customary visual inspection.

 

image.png.a1188d9019507046dd626a69132c5a8f.png

 

In this case, USSEP's edits aren't as obvious as they were on some of the previous navmeshes we looked at. They may still contain optimizations and less obvious changes, however, so we'll still forward them as much as possible. Sky City makes a more noticeable change where it carves out some space for a statue near the gates. We'll fix this by welding it to the patched AS version we make first. In this case there aren't any obvious differences between AS and vanilla/USSEP, but we can see that AS adds new triangles (527-532), so let's see what those are before we just drag and drop USSEP into place.

 

image.png.52084b3e4aa1b9f7e6ff14962a82c1d9.png

 

The new triangles are all up in the far northeast corner. What we'll do is initially weld that nub onto the USSEP version, then we'll make the Sky City patch by welding the statuary plaza onto our patched AS navmesh.

 

 

Navmesh Cleanup

Aaaaaand with that, the Navmesh patching is complete! However, there are some finishing touches we need to do before we proceed.

 

First, we need to go through the main AS file and all the compatibility patches, and re-finalize all the navmeshes. We're going to do this by making a small change (like moving a vertex) and then using CTRL-Z to undo the change. This will still mark the navmesh as changed, so we can now click "finalize." This will make sure the edge links are up to date and also set the stage for us regenerating the Navmesh Info Map - we'll cover that next.

 

To find the navmeshes we're looking for, we are going to load up the plugin (AS first since it'll be the biggest lift) and after we select our worldspace (mostly Tamriel, but there is also a navmesh in Solitude we need to look at) we want to check the "show only active..." boxes. We're looking for NavMeshes with a * next to them.

 

image.png.0c06d2c8935eb708415348b4e7a23675.png

 

There's two things we want to do here. We do want to wiggle a vertex so we can finalize, but we also want to look out for any obvious defects such as deformed triangles. If we see this, it's a red flag that we need to give that mesh a second look. We might have messed something up :(

 

image.png.8ae55831060bc23b0818439bb63a80c3.png

 

The first one doesn't have any signs of issues, so we'll wiggle a vertex, undo the change, and then finalize. We don't need to save the file yet at this point, unless you're concerned about the CK crashing. I'm going to do all the edited navmeshes in one go. One note - I'm not going to touch any island navmeshes that come from AS, since as islands, they don't have any edge links to regenerate. I'm also not going to mess with pseudo-islands like the one below that only connect to the wider world through a door link to an AS interior cell.

 

image.png.f9b31233c539faf44aea1f65d51d1857.png

 

Riften Plankside 2 has some unexpected navmesh geometry in it. We're going to have to compare this against the original control file and possibly redo the navmesh work from earlier. For now I'm just going to make a mental note that this exists.

 

image.png.aab2eb8aada61a75bcbe49c037c33502.png

 

With these changes saved, we'll go back and do another round of cleaning in xEdit, then we'll take a look at this suspicious navmesh at Plankside 2. We'll use the xEdit "compare to" function to look at how this navmesh compares to the original 0.2b navmesh.

 

image.png.56ae2b624a9acc03bbcb98fde28e479f.png

 

Comparing the records, we can see that this is one of the deleted navmesh records that we repaired. Let's redo that repair, but this time we'll treat all non-AS records like conflicts that need patches and assess them in that light.

 

image.png.d5f8b075027ca78fcc875d4bef422f6e.png

 

First things first, let's make sure the original navmesh was in a usable condition. As we can see below, the original did not have that stray geometry. As you probably remember from the earlier installments, this navmesh gets heavily edited to allow for some new buildings. I suspect that in the process, some triangle numbers changed and seemingly simple conflict resolution resulted in a mismatch between one or more triangles and vertices. 

 

image.png.e6638222e91af8bebb036ad93d877689.png

 

Since none of these navmeshes appear to substantially deviate in the untouched portions of this cell, we don't need to do any compatibility patching, beyond just making sure the user knows that AS needs to load after. We'll re-finalize and re-clean this cell, then get back to work!

 

We're not going to repeat this step on every compatibility patch - just the ones with navmesh edits. Those are:

 

  • Cutting Room Floor
  • Prison Overhaul
  • Diabloesque Decorations
  • Honeyside
  • Rigmor of Bruma
  • Interesting NPCs
  • Midwood Island Ship Location Patch
  • Sky City

 

These are all small, routine edits - nothing exciting found within. Once again, we'll run the edge link cleanup script and clean the files for ITMs. 

 

At this point, it's time for me to merge these changes into my private navmesh patch; since we've already deconflicted everything that touches these cells, it's just a matter of dragging and dropping the patched entry - though for the final step that's coming up we'll need to also include my patch.

 

Next up, we need to go through AS and the patches to look for any hidden ITMs. xEdit is not always good at detecting ITM issues when multiple mods touch the same navmesh, so we are going to want to load up these files with only their own masters and do another round of cleaning on them. This should eliminate at least some of the lurking ITMs. We will also need to go through filtered for conflicts and look for any mods that are forwarding the vanilla record with no changes - we want to prune those out.

 

Regenerating the NavMesh Info Map

The last stop in the navmesh fixing process is to regenerate the Navmesh Info Map (NMIM) records. In xEdit, go into each file that contains navmeshes and delete the NMIM record.

 

image.png.894e755ae17058d76d32023854e3f86f.png

 

Then load up each plugin in the CK and just save them. That's it.

 

And with that, we're done with navmeshes. In the next installment of the blog, we'll loop around and fix some statics at the Windhelm docks, then we'll do a little more xEdit cleaning. Once that's all accomplished, we can finish up with seeing if we can wrestle an ESL flag onto this file.

Edited by gregaaz

0 Comments


Recommended Comments

There are no comments to display.


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use