Jump to content

Modding Case Study: Grroott's Solitude (Part 9 - Navmesh)


Welcome back everyone, and thanks for your patience while I focused on a small side project for a little bit. The truth is, I had to take a break from this for a little bit because I was very frustrated about some lost work that happened (because of an error on my part) when I upgraded to the new version. Fortunately, second-to-last versions of both deleted mods were in my xEdit backup folder, which will help us get back on our feed pretty quickly. Let this be a lesson to all of you - save those xEdit backups!!

 

image.png.0cab0cd2be5862d5022c525c658958cb.png

 

Let's take a look at the Solitude doors and assess what residual work, if any, I need to do. Since this is a backup, there are going to be at least some changes that didn't make it in (the last set of changes to the file). Incidentally, the reason why the Groot Solitude file has a different name is so that I can load it side by side with the new version to compare records. Conceivably I could also do this with the "compare file" function, but this is way involves a few less steps to accomplish.

 

ScreenShot1606.png.f4d3dc1e09a1fc3e3376bd59b91defc4.png

 

I couldn't have asked for a better outcome. It appears that all my changes survived in this backup, so all I need to do is copy them into my conflict resolution patch and I should be good to go!

 

A Rare Treat

While I was starting up to check out Solitude Doors, my game crashed. I was delighted. Why, you ask? Because it crashed when I encountered a transient bug I've been trying to trace for a while. However, almost always this manifests by causing a CPU race condition that hard freezes the game and doesn't return a crash log. This time, the game crashed to desktop and generated a log. The log revealed that the crash occured while it generated the autosave that happens when you leave RaceMenu for the first time. 

 

I've suspected that the new-game autosave was related to these race conditions for a while, but this is the first evidence I've received that pointed to it clearly. Based on that, I've gone into Skyrim.ini and added the following parameter:

 

[SaveGame]

bDisableAutoSave=1

 

I'll be watching with interest to see if the crashes stop after making this change, which would confirm that the autosave was the problem.

 

Restoring Navmesh Fixes

In the very first session, we repaired 9 deleted navmeshes and also corrected a tenth navmesh that had defects on it (deleted edge links). Unfortunately, those edits were partially lost when I accidentally overwrote the master file with the new version. Today we're going to load it up in xEdit along with my last backup of the old version and restore those edits. This will put us in a much better position to rebuild the navmeshes for several parts of Solitude, since we won't be fighting with the old, defective meshes at the same time we try to make adjustments for the new content. 

 

We'll start by loading up the new version and filtering it down to just the navmesh. 

 

image.png.3894e4c6f5babd0cdbb961bbff6a31ba.png

 

With that done, we'll go through and copy over any data that comes from the older file. We'll also remove entirely any NAVMs that don't have a corresponding record in the old file - those will be the 9 that I renamed to match the deleted entries. Unfortunately, as you can see this backup did not include 100% of the fixes, so I'll still need to go in and re-repair at least one mesh.

 

image.png.f58b8273daa0d6b764df5ccfcab2c064.png

 

Disappointingly, it wasn't just one deletion. This backup doesn't cover any of the repaired navmeshes, so I'll have to fix all 9 of them by hand. Well, no point in delay - let's put together a matrix of our problem cells and fix them up.

 

image.png.fc530ec3f7811aa3df7736d8d5cbd456.png

 

OK, so those are all set. There's also a couple of type 2 deletions where we need to go into the CK and drop the stub of the merged mesh below the Z level of the ground.

 

image.png.de32a0584a0a130428e41567b528aca3.png

 

Here's 37F7B. This is a new one that wasn't present in the earlier version of this mod. The green mesh is the footprint of the vanilla version.

 

image.png.5c46bcc26f219b692d2bd05ad983f581.png

 

Viewed from a different angle, you can see that this is the entrance to the Dragonborn Gallery from LOTD.

 

image.png.c514cce797c8a57ccd47f3dc266465bd.png

 

So let's go back and scrutinize this in xEdit before we start cutting. By the way, the vanilla mesh that's overlapping most of this stuff is ECFFC. The vanilla version of this mesh is a one-record island, so just like with the battlements one from the original version, we're going to restore the deleted record using the data that's stored in ECFFC, then go back, restore vanilla ECFFC, and then drop that one triangle into the ground.

 

image.png.c71be8b0cd83aec4777244bf5883b197.png

 

Oddly enough, here's the vanilla version of ECFFC below. It's off in the middle of nowhere and it isn't overlapping with anything. So... let's just leave it right where it is.

 

image.png.87515f96c0ebbde22c4be17eb3cc0b66.png

 

 

Resolving Navmesh Conflicts

That should be all the navmesh deletions. Next we need to identify which navmeshes from Groot's are conflicted. In general what we're looking for it:

 

  • Top Level Cell Data conflicts against any mod except Legacy of the Dragonborn (which is explicitly patched into Groot's already) - for the purpose of adding masters so the reference geometry spawns right
  • Navmesh conflicts for mods that we know make substantial additions (e.g., Books of Solitude) for the purpose of welding
  • Navmesh conflicts for mods that add doors

 

 

We need to copy these conflicts to a working file so we can address them in a controlled environment without further messing with the main file. We'll simplify our search by filtering the plugin to only show navmesh.

 

image.png.9a783dd3650bb9dd9fc4009fdff8ef4a.png

 

None of the interior navmesh has any conflicts, so we can skip over that whole section. Now here's our punchlist for the worldspace cells below. By and large, I'm not expecting big problems here. The main labor input is going to be making the punch outs for the stalls I moved and for the sundials. I'll also need to fill in the old hole for the wine merchant.

 

image.png.7b11381d82aa3a3331ca8be70bd6654f.png

 

Here's the punchouts for the market stalls in the town square:

 

image.png.163446c0f6a7ed93aa95b8dd8ec6ed1c.png

 

Added preferred pathing to the new street:

 

image.png.c78eaeebdfd02faae6a4f0790951be8c.png

 

Sundial punched out

 

image.png.cf72cdd601bf5702109343ce408a933c.png

 

Revised B3256 so mesh is limited to the doorway; should reduce issues with NPCs getting stuck on the wall

 

image.png.275e512500d53163498264d0ba0b6e5c.png

 

I'll leave this alone for now but I'm tempted to go back and remove the preferred pathing flag from the route through Castle Dour - that should reduce traffic jams on the switchback stairs.

 

image.png.d4089009e212ce61d81013a22f4e8b6e.png

 

For now though, I've got everything patched up, so it's time to do another round of cleaning on my working file, then copy over the revised records. The last step after that will be to go into the Navmesh conflict resolution patch, delete its Navmesh Information Map, and go back to the CK to regenerate it.

 

Walking Through Town

And with that, we're done integrating the navmeshes for this mod with the rest of the mod stack. Let's take a tour through the city just to make sure we don't see any citizens getting stuck on terrain. It was a rainy day, but you can see everything is looking good, including actors using the new street for their walking routes and also actors avoiding the punch-outs that they were getting stuck on previously. The only issue seems to be that I need to extend the navmesh for CAD79 so the two slaves can reach the entry points for their cages. 

 

ScreenShot1615.png.b496a625d48bca245ed032bd7a9904c9.png

ScreenShot1613.png.ed0500372f765f4956465d1c2ea828c4.png

ScreenShot1617.png.5ca271c2e31d7d413cca63443ca36799.pngScreenShot1616.png.5239361ea6bf91783eea012abe4feb24.pngScreenShot1614.png.18f0dfe2507c9ddd87f69c6a6d6462e2.pngScreenShot1612.png.c0c9cf63f4007ba1b550f98d55a20d46.pngScreenShot1611.png.91f772ae9bed1cc0a370d6994026e31c.pngScreenShot1610.png.8ba14cf6147142fa8961ed0304fc2161.pngScreenShot1609.png.3c71f99fdb101e8f7a959dd0bff06b13.pngScreenShot1608.png.75725b2b0c6cc505ab7f2f2c547d9cc3.pngScreenShot1607.png.74182040edcc9a3333a304e6dc913830.png

 

Now that we've got the navmesh completed, we're almost done! Tomorrow we'll be going through and touching up a couple of areas in the landscape that have small problems, then cutting up the plugin into a couple of parts to support ESL flagging. Then we'll create facegen for the NPCs.

 

 

 

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