noodles1976 Posted October 15, 2015 Posted October 15, 2015 Hi LL...just out of curiosity, has anyone here used the Dynamic Distant Objects LOD utility? http://www.nexusmods.com/skyrim/mods/59721/?tab=1&navtag=http%3A%2F%2Fwww.nexusmods.com%2Fskyrim%2Fajax%2Fmoddescription%2F%3Fid%3D59721%26preview%3D&pUp=1 I'm considering using it to improve my LODs, as that has always been something that has stuck out to me like a swore thumb. I'm looking for pros and cons to using it, from people with experience with it. I'm not keen to try other options at this point, such as editing uGridstoload or other LOD mods...I'm essentially 'shopping' at this point. Any help / insight would be greatly appreciated! N~dles
Guest Posted October 15, 2015 Posted October 15, 2015 I don't use it because I found it gave me quite a hefty performance loss on my hobo pc. The original TESLODGen requires a lot less knob twiddling from me to get a decent result with negligible if any fps loss so I've stuck with that instead. Yeah it really is worth it. I've spent literally years trying to make my game look pretty on a budget and distant trees always made me feel like I was wasting my time. These mods sort that right out. They'll also make a lot more architecture, clutter and landmarks visible without having to raise ugrids.
27X Posted October 15, 2015 Posted October 15, 2015 It's essentially the Book of Secrets for terrain. If you don't use it, you probably won't miss it. Once you do use it, it will be very very hard to go back to vanilla or equivalent.
Guest Posted October 15, 2015 Posted October 15, 2015 Yes its worth it. DynDoLOD is "the" mod to use. It takes a lil bit of legwork but it is the most performance friendly, customizable and compatible option, especially if you dont want to edit ugrids.
noodles1976 Posted October 16, 2015 Author Posted October 16, 2015 Thanks for the replies so far! Really appreciate it I don't use it because I found it gave me quite a hefty performance loss on my hobo pc. The original TESLODGen requires a lot less knob twiddling from me to get a decent result with negligible if any fps loss so I've stuck with that instead. Yeah it really is worth it. I've spent literally years trying to make my game look pretty on a budget and distant trees always made me feel like I was wasting my time. These mods sort that right out. They'll also make a lot more architecture, clutter and landmarks visible without having to raise ugrids. It's essentially the Book of Secrets for terrain. If you don't use it, you probably won't miss it. Once you do use it, it will be very very hard to go back to vanilla or equivalent. Yes its worth it. DynDoLOD is "the" mod to use. It takes a lil bit of legwork but it is the most performance friendly, customizable and compatible option, especially if you dont want to edit ugrids. So, the only negative mentioned so far is a performance hit...Do you all think it would be better to run TES5LODGen first and see what kind of impact it has on my system? Thanks again for the insight / advice so far! N~dles
shadowlord445 Posted October 16, 2015 Posted October 16, 2015 Yes, I think it is totally worth it. I used the high settings, but I checked my memblocks log, and it shot up to like 400 something, so I went down to medium settings
Saviorsrd Posted October 16, 2015 Posted October 16, 2015 ...and, strangely enough, one weird thing I've found is that, while there's a performance hit and no mistake, once I started using it my stability actually improved. Go figure.
Guest Posted October 16, 2015 Posted October 16, 2015 Last time I used that thing it made my game completely unplayable. Infinite loading screens every time I went outdoors, crashes every time I opened menus when indoors... Then again I have a toaster with 1GB of vram so...
noodles1976 Posted October 16, 2015 Author Posted October 16, 2015 Thanks for the replies everybody...really appreciate it Yes, I think it is totally worth it. I used the high settings, but I checked my memblocks log, and it shot up to like 400 something, so I went down to medium settings ...and, strangely enough, one weird thing I've found is that, while there's a performance hit and no mistake, once I started using it my stability actually improved. Go figure. Last time I used that thing it made my game completely unplayable. Infinite loading screens every time I went outdoors, crashes every time I opened menus when indoors... Then again I have a toaster with 1GB of vram so... If you don't use it, you probably won't miss it. Once you do use it, it will be very very hard to go back to vanilla or equivalent. not that hard had a ctd in winterhold thanks to those scripts one of them didn't survive a stack dump probably so they were killed Thanks for the info Yatol...I was hoping that you would post in this thread I ran TES5LODGen last night and did some testing to see how my system would react and there was zero performance impact. I'm edging towards running the DynDoLOD utility, as having LODs built from my load order is just too tempting. I double checked and I don't have anything installed that is not compatible with DynDoLOD according to the main page on the Nexus, so it should be just fine to run. The only concern I have now is with what you just posted...CTDs due to script issues. Just out of curiosity, have you encountered any other CTD's with DynDoLOD? I see you were able to fix it, so I may be referencing your post as a guide if I encounter the same trouble. Thanks! N~dles
Dutchbat Posted October 16, 2015 Posted October 16, 2015 You should try aswell http://www.nexusmods.com/skyrim/mods/68782/? makes full use of dyndolods and it's fucking awesome. Pair that up with enb's that brings cloud shadowing to landscapes like NLA or any other that uses that plugin. Gives abit of this effect tho i suck at this
27X Posted October 16, 2015 Posted October 16, 2015 If you don't use it, you probably won't miss it. Once you do use it, it will be very very hard to go back to vanilla or equivalent. not that hard had a ctd in winterhold thanks to those scripts one of them didn't survive a stack dump probably so they were killed You realize I'm talking about the visual quality and not whether it can be nuked or not, right? right.
yatol Posted October 17, 2015 Posted October 17, 2015 You realize I'm talking about the visual quality and not whether it can be nuked or not, right? right. you realize if you don't check that option that mod don't add the lods with scripts (the others don't need a script, why those ones need one?) before after don't see much difference and i don't use dof, that thing is to hide lods or distant terrain but i still have fog to hide some
noodles1976 Posted October 17, 2015 Author Posted October 17, 2015 Yeah, not so keen on scripts being needed for the LODs to load either...script lag, Skyrim being Skyrim and Papyrus being "sensitive" could cause CTDs or save file bloat in a worst case scenario. TES5LODGen doesn't seem to have these issues as far as I can tell in testing it out, and it essentially does the same thing... What do you think Yatol? Am I better off using TES5LODGen in your opinion? N~dles
sheson Posted October 18, 2015 Posted October 18, 2015 Scripts are bad and cause cooties. Best to delete the scripts folder. A script instance however... This forum needs a facepalm emoticon please.
yatol Posted October 18, 2015 Posted October 18, 2015 Scripts are bad and cause cooties. Best to delete the scripts folder. A script instance however... This forum needs a facepalm emoticon please. facepalm if you want i don't give a shit this is what i check everytime i add a mod now mod 3b that's japan lodge that mod have a lof of dirty edits, it was renaming some buildings to german, a dawnguard quest to german too, and other things from skyrim esm that was removing whatever i put in tamriel reload btt 16 automaticlight scrips in update 2? what is that? oh, no psc ;/ Decompiled by Champollion V1.0.1 Source : AutomaticLightSwitchScript.psc Modified : 2012-04-10 23:15:05 Compiled : 2012-04-10 23:25:24 User : M3rvin Computer : PIPBOY /; scriptName AutomaticLightSwitchScript extends ObjectReference {Controls a set of lights with a master enable parent marker with this script attached to turn on and off at the times of the day specified by the properties LightsOffTime and LightsOnTime} ;-- Properties -------------------------------------- float property LightsOffTime = 7.00000 auto {The time at which lights should be turned off} float property LightsOnTime = 18.0000 auto {The time at which lights should be turned on} ;-- Variables --------------------------------------- ;-- Functions --------------------------------------- float function GetCurrentHourOfDay() global {Returns the current time of day in hours since midnight} float Time = utility.GetCurrentGameTime() Time -= math.Floor(Time) as float Time *= 24 as float return Time endFunction ; Skipped compiler generated GotoState ; Skipped compiler generated GetState function OnInit() if AutomaticLightSwitchScript.GetCurrentHourOfDay() > LightsOffTime self.GotoState("LightsOff") else self.GotoState("LightsOn") endIf endFunction function RegisterForSingleUpdateGameTimeAt(float GameTime) {Registers for a single UpdateGameTime event at the next occurrence of the specified GameTime (in hours since midnight)} float CurrentTime = AutomaticLightSwitchScript.GetCurrentHourOfDay() if GameTime < CurrentTime GameTime += 24 as float endIf self.RegisterForSingleUpdateGameTime(GameTime - CurrentTime) endFunction ;-- State ------------------------------------------- state lightson function OnBeginState() self.Enable(false) self.RegisterForSingleUpdateGameTimeAt(LightsOffTime) endFunction function OnUpdateGameTime() self.GotoState("LightsOff") endFunction endState ;-- State ------------------------------------------- state lightsoff function OnBeginState() self.Disable(false) self.RegisterForSingleUpdateGameTimeAt(LightsOnTime) endFunction function OnUpdateGameTime() self.GotoState("LightsOn") endFunction endState so that thing turn on or off light, even if i am in solstheim don't know why he didn't used an hour check on onload(), that load a registerforsingleupdate one hour later, and is unregisterforupdate on onunload() you don't need mods to get that kind of fail script qf_dialogcity that's the script to check if it's time to replace a jarl swapjobalias is from hearthfire, another useless waste of cpu ressource and dunyngolglow... is from yngol barrow, if the fast exist door don't open, you may have damaged your save, go back to an earlier save and kill that script before trying again but it's faster to break your save by adding more of that crap if you have autoloot, with some scripts of sofia, ssassisttools, bedroll, requiem... it won't be long to have problems your script don't survive stack dumps, and when the game load a broken script -either it skip it -either you ctd -either you freeze (script wait for event 4 to be load, game don't have any problem with that, but event 4 will never come since you are at event 8 now)
sheson Posted October 18, 2015 Posted October 18, 2015 Fix the cause of stack dumbs? This is like saying cars also don't fly after crashing into a wall and blame the constructors of the road. If you are knowledgeable about papyrus, have a look at the scripts and let me know what part doesn't survives a stack dumb.
yatol Posted October 18, 2015 Posted October 18, 2015 If you are knowledgeable about papyrus, have a look at the scripts and let me know what part doesn't survives a stack dumb. i am not knowledgeable about papyrus but i know enought to understand if oncellattach do its stuff but oncelldetach don't do its stuff, or if ontriggerenter do its stuff but ontriggerleave don't do its stuff, that can be troubles Scriptname SHESON_DynDOLOD_Firstborn extends ObjectReference ;speedrunning is bad mmmkay ObjectReference MyMaster = None ObjectReference MyBrother = None ObjectReference MyBrotherMinion = None String MyWorld = "None" String MyImportFileName = "None" String MyModName = "DynDOLOD.esp" String MyFormID = "None" String MyFirstbornList = "None" String MyMinionList = "None" Bool MyMasterEnable = FALSE Bool MyObjectEnable = FALSE Event onTriggerEnter(objectReference triggerRef) if (triggerRef == Game.GetPLayer()) if (Game.GetPlayer().GetActorValue("SpeedMult") <= 500) if (SKSE.GetVersion() > 0) if (PapyrusUtil.GetVersion() >= 26) MyWorld = StringUtil.Substring(self.GetWorldspace() as string, 13, StringUtil.Find(self.GetWorldspace() as string, "(") - 14) if (JsonUtil.GetStringValue("DynDOLOD_Worlds", MyWorld, 0) as bool) MyImportFileName = "DynDOLOD_" + JsonUtil.GetStringValue("DynDOLOD_Worlds", MyWorld, "None") as string if (MyImportFileName == "DynDOLOD_None") Debug.Notification("DynDOLOD can not read data from DynDOLOD_Worlds.json") StorageUtil.SetStringValue(None, "DynDOLOD_Last_Message", "Can not read data from DynDOLOD_Worlds.json") else MyFormID = Math.LogicalAnd(0x00FFFFFF, self.GetFormID()) as string if (JsonUtil.StringListGet(MyImportFileName, MyFormID, 0) as bool) MyFirstbornList = JsonUtil.StringListGet(MyImportFileName, MyFormID, 0) MyMinionList = JsonUtil.StringListGet(MyImportFileName, MyFormID, 1) MyMaster = Game.GetFormFromFile(JsonUtil.IntListGet(MyImportFileName, "master", 0), MyModName) As ObjectReference if (MyMaster != None) if (!MyMasterEnable) && (StorageUtil.GetIntValue(MyMaster, "DynDOLOD_Active", 1) == 1) StorageUtil.SetFormValue(MyMaster, "DynDOLOD_MyCurrentFirstborn", self) (MyMaster as SHESON_DynDOLOD_Master).IBowToThee(self, MyFirstbornList, MyMinionList, TRUE) MyMasterEnable = TRUE endIf else Debug.Notification("DynDOLOD can not find master data in " + MyImportFileName + ".json") StorageUtil.SetStringValue(None, "DynDOLOD_Last_Message", "Can not find master data in " + MyImportFileName + ".json") endIf else Debug.Notification("DynDOLOD can not read data from " + MyImportFileName + ".json") StorageUtil.SetStringValue(None, "DynDOLOD_Last_Message", "Can not read data from " + MyImportFileName + ".json") endIf endIf else Debug.Notification("DynDOLOD can not read data from DynDOLOD_Worlds.json") StorageUtil.SetStringValue(None, "DynDOLOD_Last_Message", "Can not read data from DynDOLOD_Worlds.json") endIf else Debug.MessageBox("DynDOLOD requires PapyrusUtil") endIf else Debug.MessageBox("DynDOLOD requires SKSE") endIf endIf endIf endEvent Event onTriggerLeave(objectReference triggerRef) if (triggerRef == Game.GetPLayer()) && (MyMasterEnable) MyMasterEnable = FALSE MyWorld = StringUtil.Substring(self.GetWorldspace() as string, 13, StringUtil.Find(self.GetWorldspace() as string, "(") - 14) MyImportFileName = "DynDOLOD_" + JsonUtil.GetStringValue("DynDOLOD_Worlds", MyWorld, MyWorld) MyFormID = Math.LogicalAnd(0x00FFFFFF, self.GetFormID()) as string MyFirstbornList = JsonUtil.StringListGet(MyImportFileName, MyFormID, 0) MyMinionList = JsonUtil.StringListGet(MyImportFileName, MyFormID, 1) MyMaster = Game.GetFormFromFile(JsonUtil.IntListGet(MyImportFileName, "master", 0), MyModName) As ObjectReference if (MyMaster != None) if (StorageUtil.GetFormValue(MyMaster, "DynDOLOD_MyActiveFirstborn", None) == self) Utility.Wait(3) endIf if (StorageUtil.GetFormValue(MyMaster, "DynDOLOD_MyActiveFirstborn", None) == self) ; cell attach can happen because of wait if (self.GetParentCell()) if (!self.GetParentCell().IsAttached()) (MyMaster as SHESON_DynDOLOD_Master).IBowToThee(self, MyFirstbornList, MyMinionList, FALSE) endIf else (MyMaster as SHESON_DynDOLOD_Master).IBowToThee(self, MyFirstbornList, MyMinionList, FALSE) endIf endIf endIf endIf endEvent Event OnCellAttach() StorageUtil.SetIntValue(self, "CellState", 1) if (Game.GetPlayer().GetActorValue("SpeedMult") <= 500) MyWorld = StringUtil.Substring(self.GetWorldspace() as string, 13, StringUtil.Find(self.GetWorldspace() as string, "(") - 14) MyImportFileName = "DynDOLOD_" + JsonUtil.GetStringValue("DynDOLOD_Worlds", MyWorld, MyWorld) MyFormID = Math.LogicalAnd(0x00FFFFFF, self.GetFormID()) as string MyMaster = Game.GetFormFromFile(JsonUtil.IntListGet(MyImportFileName, "master", 0), MyModName) As ObjectReference if (MyMaster != None) MyBrother = Game.GetFormFromFile(JsonUtil.IntListGet(MyImportFileName, MyFormID, 0), MyModName) As ObjectReference MyBrotherMinion = Game.GetFormFromFile(JsonUtil.IntListGet(MyImportFileName, MyFormID, 1), MyModName) As ObjectReference if (StorageUtil.GetIntValue(MyMaster, "DynDOLOD_Active", 1) == 1) if (MyBrother == None) Activate(self) else StorageUtil.SetIntValue(MyBrother, "CellState", 1) MyBrother.Activate(self) endIf if (MyBrotherMinion != None) StorageUtil.SetIntValue(MyBrotherMinion, "CellState", 1) MyBrotherMinion.Activate(self) endIf MyObjectEnable = TRUE endIf endIf endIf endEvent Event OnCellDetach() StorageUtil.SetIntValue(self, "CellState", 0) if (MyObjectEnable) MyWorld = StringUtil.Substring(self.GetWorldspace() as string, 13, StringUtil.Find(self.GetWorldspace() as string, "(") - 14) MyImportFileName = "DynDOLOD_" + JsonUtil.GetStringValue("DynDOLOD_Worlds", MyWorld, MyWorld) MyFormID = Math.LogicalAnd(0x00FFFFFF, self.GetFormID()) as string MyBrother = Game.GetFormFromFile(JsonUtil.IntListGet(MyImportFileName, MyFormID, 0), MyModName) As ObjectReference MyBrotherMinion = Game.GetFormFromFile(JsonUtil.IntListGet(MyImportFileName, MyFormID, 1), MyModName) As ObjectReference if (MyBrother == None) Activate(self) else StorageUtil.SetIntValue(MyBrother, "CellState", 0) MyBrother.Activate(self) endIf if (MyBrotherMinion != None) StorageUtil.SetIntValue(MyBrotherMinion, "CellState", 0) MyBrotherMinion.Activate(self) endIf MyObjectEnable = FALSE endIf if (MyMasterEnable) MyMasterEnable = FALSE MyWorld = StringUtil.Substring(self.GetWorldspace() as string, 13, StringUtil.Find(self.GetWorldspace() as string, "(") - 14) MyImportFileName = "DynDOLOD_" + JsonUtil.GetStringValue("DynDOLOD_Worlds", MyWorld, MyWorld) MyFormID = Math.LogicalAnd(0x00FFFFFF, self.GetFormID()) as string MyFirstbornList = JsonUtil.StringListGet(MyImportFileName, MyFormID, 0) MyMinionList = JsonUtil.StringListGet(MyImportFileName, MyFormID, 1) MyMaster = Game.GetFormFromFile(JsonUtil.IntListGet(MyImportFileName, "master", 0), MyModName) As ObjectReference if (MyMaster != None) if (StorageUtil.GetFormValue(MyMaster, "DynDOLOD_MyActiveFirstborn", None) == self) Utility.Wait(3) endIf if (StorageUtil.GetFormValue(MyMaster, "DynDOLOD_MyActiveFirstborn", None) == self) ; cell attach can happen because of wait if (self.GetParentCell()) if (!self.GetParentCell().IsAttached()) (MyMaster as SHESON_DynDOLOD_Master).IBowToThee(self, MyFirstbornList, MyMinionList, FALSE) endIf else (MyMaster as SHESON_DynDOLOD_Master).IBowToThee(self, MyFirstbornList, MyMinionList, FALSE) endIf endIf endIf endIf endEvent what's the purpose of that thing anyway? you get in los, game load a lod you get close to the lod, game replace it with whatever it is why replace that with something that don't work?
sheson Posted October 18, 2015 Posted October 18, 2015 The scripts are mostly if then else, do this. So by looking at it realistically, if a section can not complete for whatever reason you may end up with dynamic LOD in the wrong enabled/disabled state. Which fixes itself next time the if then else do this complete successfully. I am not sure I understand the question? The scripts enables/disables objects that have isFullLOD flag set. By disabling them at times they don't need to be enabled, resources are released and the engine has more time for other things. If internal games data is corrupted by stack dumps, that is somewhat out of the scope of what papyrus scripts themselves can influence I guess. However, each section of my scripts checks variables are defined, so it tries to always have a defined state and only work with valid data/objects.
yatol Posted October 18, 2015 Posted October 18, 2015 I am not sure I understand the question? a question? where? had a ctd in winterhold thanks to those scriptsone of them didn't survive a stack dump probably so they were killed that's a fact you don't need to be einstein to understand if a problem disappear when you remove something, problem is that something don't have random ctd, when i ctd, i will ctd again, and again, and again, until the problem is taken care of (but when the problem is gone, it's gone)
sheson Posted October 18, 2015 Posted October 18, 2015 If you ever want to get serious, I suggest double checking heap memory and maybe check for missing/invalid nifs causing problems. Since your CTD isn't random, it should be possible to actually find the cause , For a second I thought we could dig into some understanding of papyrus and how it deals with data - not something as simple as reproducible CTD. Sorry my mistake.
yatol Posted October 18, 2015 Posted October 18, 2015 If you ever want to get serious, I suggest double checking heap memory and maybe check for missing/invalid nifs causing problems. Since your CTD isn't random, it should be possible to actually find the cause , nice joke, checking heap memory for what? don't even know what that is checking my nif? for what? everything is done if i had a broken nif, i would have seen it (and fix it) like i saw some nifs with a fail uv map, there's a mod on nexus for most of them (but not all of them) and i already said that ctd was because of your script, have delete it, that ctd can no longer happen
sheson Posted October 18, 2015 Posted October 18, 2015 Is this some kind of joke I am not getting? Again, sorry my mistake, I can see the basic requirements for using DynDOLOD were not met. I really thought for second there is knowledge here - nice bait. I had a nice laugh
yatol Posted October 18, 2015 Posted October 18, 2015 I can see the basic requirements for using DynDOLOD were not met and how are you supposed to check that? trying to make others believe i am too stupid to install your mod right? it took me some months to get a ctd with your script because i check my logs when i quit the game if i see a dump, after taking care of the problem, i restart from a save before it (the dump is a list of all scripts that were load, it's easy to fix, you look for the useless ones, and you delete them) few do that, and that was not enought, i didn't saw the dump that broke that lod script
sheson Posted October 18, 2015 Posted October 18, 2015 I won't fall for obvious troll any more. You had me once, not gong to happen again
merryMalfunctioning Posted October 19, 2015 Posted October 19, 2015 I installed DynDoLod, and it's pretty great. However I did run into one bit of weirdness -- it kept crashing (the dyndolod scripts in Tes5Edit, that is) when my hard disk was fragmented. After a thorough defrag, it ran fine and now Skyrim looks pretty. My hard disk is fine, I did a thorough scan of it (since this kind of thing can be warning sign of hard disk failure). I can only assume that the DynDoLod scripts have some kind of race condition in them that falls apart when hard disk lag gets really high.
Recommended Posts
Archived
This topic is now archived and is closed to further replies.