Jump to content

Player House Research


Khettienna

Recommended Posts

Started a new thread for this since it seemed worthy of discussion. From the other thread:

 

I added stuff to the house, and then pointed each object to whatever the stuff around it was using as a parent object. I.e., I added another dining room chair, so for the object's parent I chose the same thing all the other chairs used so it would all come packaged together when the player bought furniture for the house.

 

It worked okay when I added a few things. It did not work okay when I added a bunch of things. Now only half of what I added shows up in-game, even though it shows fine in the CS, and all the objects, missing or present, point to the same parent.Having the same problem again in Benirus Manor - added a few things and pointed them to the same reference as the post-quest parent, and it was fine. Added a lot, and half of them disappeared.

 

Is there a set limit on how many objects can be linked to one parent? Can I daisy-chain them onto another? Like, Parent ---> x number of children, one of those children could be parent for x number of more children, etc... or is there some other factor I'm missing?

 

 

The parenting only works if the related scripting is in place. Since you need to make stuff persistant anyway, you're really best off just using a quest script to enable things individually.

 

I have been working on tweaking the vanilla player houses to my liking. It was very important to me to keep the immersion - I didn't want to just throw in a bunch of stuff and disregard the purchasable house upgrade system. So everything I added, I referenced the nearest parent object. For example, if I added some bottles of wine to the table, I made sure those bottles of wine didn't appear till the player had purchased whatever house upgrade contained the table and/or the objects nearest to it. In Benirus manor, I didn't want to spoil the pre-quest mood by having the stuff I added show before the quest was complete. So I tied it all to the same parent reference that everything else in the post-quest house uses. As you can see by the above, it didn't go well.

 

I did some testing and learned some things.

 

I started looking for other player house mods, ones that were based on the existing vanilla houses. Surprisingly, there aren't many. The ones that do exist either skip all the scripts related to purchasing furniture upgrades, or they simply build around what is there with no regard for what the house looks like if the player hasn't purchased any/all of the house upgrades. This made me sad, because I was totally going to cheat by just looking at how someone else made it all work.

 

It also made me sad because that makes you (you = the general house modding community) a bunch of lazy buggers. Sloppy, sloppy. But on to my research!

 

I read some comments left by users of some of these mods, and a light bulb went off when I read a complaint from a user that not all the objects were appearing after installing the mod. Furniture was clearly missing - not just missing textures, but objects simply not loading. This was denoted by vases without tables under them, some place settings full of food but half missing spoons, etc... similar to what I was seeing with my mod. The mod author, despite being guilty of the aforementioned charge of sloppiness, noted something about having to purchase the upgrades *after* installing the mod, and that would solve the problem.

 

So I loaded in a blank saved game - you know, still in the sewers, saved with no mods, etc. with only my house mod loaded for testing. This character had never entered any of the cells related to my mod, or purchased anything for any of the houses, etc. I snuck into Benirus Manor, and the house looked its default spooky self. I proceeded to console hack my way through the quest line. And lo and behold, when I exited the basement and entered the main house again, everything was perfect.

 

Some of the items in the cell were changed from the original using search & replace and some were added in by hand. In a game where the player had already completed the questline and entered the Benirus Manor cell a few times, the ones changed with search & replace were present and appeared when they were supposed to (after the quest; or in other houses, after that furniture set was purchased); the ones added in by hand did not load at all.

 

This teaches me that the culprit for this problem is somewhere in the save file for the character and not the mod. I suspect the number of children a parent object has is cached in the save file, either when the script runs to generate those objects/change the state of those objects, or when the player enters the cell containing them. If anyone knows any elegant solutions to this, *please* let me know. I would hate to start my games over just because that's the only way to get such mods to work fully.

 

So far, the only thing I have thought of is to create a separate buyable upgrade containing only my changes for each house - but it just seems off-beat when the changes themselves are really just tweaks to what is already there. Breaks the immersion for me.

 

And for the record, not setting parent references so that the stuff is just there all the time before the player has purchased the furniture upgrades is not an elegant solution. >.<

Link to comment
Share on other sites

Any chance you can sum up what the question is?

 

Scenario:

Player1 buys Vanilla House X and upgrades for a total of 100 children references in the cell, visits the cell, and saves the game.

Player1 installs my mod, which assigns 101 children references to that cell.

Player1 loads game and one object is missing.

 

Player2 installs my mod and starts new game.

Player2 buys Vanilla House X and upgrades, and all 101 are present and acounted for.

 

Theory:

Number of children objects is stored in a save file, therefore a mod that adds more to an existing parent won't work if a player has already visited the cell.

 

How do I get around this?

Link to comment
Share on other sites

How do I get around this?

Dunno, either mention that it only works if you havn't bought the house yet. Or only link your own added objects together, and use additional scriptng to check if something which was already enabled in those cases where you have one thing dependant on another. Or rebuild an entirely seperate interior, use scripting to move over containers, and base everything within that second interior on both the detection for those house upgrades and whatever you're trying to use. Or just don't do anything that complicated with the standard player houses.

 

Most of the standard houses are either fine as they are, or are fairly boring. Adding a few pieces of clutter here and there won't make those boring ones any better. And there's already been a few people who have released changes to the standard houses. http://princess.elricm.net/Oblivion.htm#I

 

Point is that most people who use house mods are wanting something new, not some little minor change. The advantage of a new house is that this isn't an issue since the player never visited before, and it gives them a new location to store stuff, usually with several features that Bethsoft never really cared to include.

 

And your parenting issue might be happening because of something else.

Link to comment
Share on other sites

Or only link your own added objects together, and use additional scriptng to check if something which was already enabled in those cases where you have one thing dependant on another.

 

I did some toying with this idea, and I found it to be exactly what I needed. Thank you *so* much.

 

I took it one step further, as well - when making grand changes, if I re-link everything (original and new) to new parent objects and point the scripts to the new objects, then it doesn't matter if the player has entered the cell or even altered it in-game (picking up items etc), everything will appear as I designed it. It seems nearly fail-proof in my testing thus far. For just player housing tweaks I'll stick with your method for the sake of simplicity. I wouldn't have considered this without your direction, I really owe you one.

 

Most of the standard houses are either fine as they are, or are fairly boring. Adding a few pieces of clutter here and there won't make those boring ones any better. And there's already been a few people who have released changes to the standard houses.

 

Well, the first mod I had trouble with was just for me anyways, wasn't interested in the popularity of it. But then I started working on a bigger project (for Benirus Manor, actually extending the quest line a good bit and incorporating other characters and lore into it), and started seeing the same issues on occasion, and so I wanted to be sure I knew a clean way to deal with it when I encountered it again.

 

And sadly, I have found that just because a user ignores the "don't install this mod if/until" warnings doesn't mean they won't get cross with you when it doesn't work. >.< So I wanted to see if I could make these things assimilate into the world without too much error regardless of the state of a save file.

 

Vagrant is my hero. <3

Link to comment
Share on other sites

It also turns out that liberal use of the copy/delete/paste-in-place method goes a long way towards guaranteeing things are in the right place. A bit bloaty, but maybe worth it where one has to be sure.

 

 

control + D works wonders too, and also helps solve issues in regards to collision not updating after rescaling a static. Such as the rocks for example.

 

Now with your child references, are you setting them as "persistent references?" The reason why I'm asking this is because the behavior you're describing with the child references being stored in saved games is a very similar behavior to persistence references.

Link to comment
Share on other sites

control + D works wonders too, and also helps solve issues in regards to collision not updating after rescaling a static. Such as the rocks for example.

 

Now with your child references, are you setting them as "persistent references?" The reason why I'm asking this is because the behavior you're describing with the child references being stored in saved games is a very similar behavior to persistence references.

 

ctrl + D works too, but cut & paste in place means I can literally just replace objects where they sit, forcing the game to load new references even though the objects are the same, thus overriding whatever is cached in the save game. No positioning needed.

 

And no, not setting the children as persistent objects, that could get very bloaty also I think. Just a guess - I am basically learning by copying how the originals are set up, and almost none of them are persistent except for parent and script/quest related references, etc.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

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