Jump to content

2019 Skyrim LE Stability Guide


mrsrt

Recommended Posts

2 hours ago, mrsrt said:

And yes, i have tested this, infinte loading happens without safety load

And does that not suggest that you are doing something wrong? ILS is not the default state of the game and therefore needing a fix. Most users do not get ILS and then only after they have caused it.

Anyone who has to jump through as many hoops as you to get a stable game is doing something fundamentally wrong.

Link to comment
  • 4 weeks later...
On 9/7/2019 at 5:39 PM, Grey Cloud said:

And does that not suggest that you are doing something wrong? ILS is not the default state of the game and therefore needing a fix. Most users do not get ILS and then only after they have caused it.

Anyone who has to jump through as many hoops as you to get a stable game is doing something fundamentally wrong.

What exactly wrong in the guide? Step by step
1) SKSE, do you think well configured SKSE is redundant?

2) Or maybe CrashFixPlugin does nothing for the game?

3) You don't need to fix engine related bugs from BugFixPlugin? Actually, maybe, it depends on what game quality you're looking for

4) If you want to see FootIK errors on game load, ofc you're free to not install ContinueGameNoCrash. If you don't have the problem it doesn't mean the same for others.

5) Maybe you don't need the system memory expanding from ENBSeries? Well, maybe, if your game can work within default bounds. But keep it in mind, once your game meet a situation with lack of memory you'll see your beautiful wallpaper on desktop. 

6) Papyrus performance the only tricky part where you may not see any difference. We did some research in the topic about params and values, but didn't come to conclusion. I'll make this part optional.

7) If you want to see physical glitches in game, ofcourse, don't do anything written in FPS related patches. Again, it's about what quality of gamplay you expect. 

 

"If you need to do something complex, then you do something wrong" <- what a perfect logic you have, lol. I also recommend you to read the first post again, especially disclaimer. 

Link to comment

Topic update

- Added Part 0 to the giude for better explanation what this guide was created for. 

- Added missed param ReduceSystemMemoryUsage to the ENB section.

Load Game CTD Fix section was changed back to ContinueGameNoCrash due to FPS affection.

- Papyrus section now more interactive

- Safety Load section added

Link to comment

I didn't say anything remotely like the words you are trying to put in my mouth. I didn't mention any of the tools you mention there.

As Genio said, several pages ago, all that is need for a stable Skyrim is SKSE, ENBoost (or and ENB preset), SKSE Plug-In Preloader and Crash Fixes. I also use Load Game CTD Fix for the cores/threads issue. Note that this is the successor to the obsolete Continue Game No Crash.

 

None of the above tools are '2019' or 'breaking news' in any sense. they have all been around for several years. Indeed, there are no new '2019' problems with Skyrim as far as I am aware.

 

No, I don't need Bug Fix Plugin as I don't suffer from any of the specific bugs it fixes.

My Papyrus settings are all default.

I have no idea what 'physical glitches' you are referring to so needless to say I don't use FPS Related Patches, whatever they/that are/is.

 

20 hours ago, mrsrt said:

"If you need to do something complex, then you do something wrong" <- what a perfect logic you have, lol.

I didn't say anything like that either.

What I said, and what I stand by, was:

On 9/7/2019 at 3:39 PM, Grey Cloud said:

Anyone who has to jump through as many hoops as you to get a stable game is doing something fundamentally wrong.

 

Link to comment

 

2 hours ago, Grey Cloud said:

None of the above tools are '2019' or 'breaking news' in any sense. they have all been around for several years. Indeed, there are no new '2019' problems with Skyrim as far as I am aware.

2019 means nowadays actuality. I didn't see any all-in-one up-to-date guide across whole skyrim community how to make the game stable, this is why I wrote this one. Also 2019 means that your game will be able to handle actual problems that may appear with latest mods, like high-res (rly high) texture packs and other stuff that the vanilla game cannot carry normally.

 

2 hours ago, Grey Cloud said:

No, I don't need Bug Fix Plugin as I don't suffer from any of the specific bugs it fixes.

My Papyrus settings are all default.

I have no idea what 'physical glitches' you are referring to so needless to say I don't use FPS Related Patches, whatever they/that are/is.

So, if a player has these problems s(he) does something "fundamentally wrong"? Or what else you mean?

 

2 hours ago, Grey Cloud said:

I didn't say anything remotely like the words you are trying to put in my mouth. I didn't mention any of the tools you mention there.

What else this guide does except mentioning several tools?

 

It's also very funny to read this:

On 10/2/2019 at 9:55 PM, Grey Cloud said:

mrst's guide is an overly complicated waste of time.

After this:

2 hours ago, Grey Cloud said:

As Genio said, several pages ago, all that is need for a stable Skyrim is SKSE, ENBoost (or and ENB preset), SKSE Plug-In Preloader and Crash Fixes. I also use Load Game CTD Fix for the cores/threads issue.

Where you listed 5 of 8 sections from this guide. Like "it's a waste of time, but personally I use more than a half of listed there". lol.

Link to comment
8 minutes ago, mrsrt said:

Where you listed 5 of 8 sections from this guide.

No, I listed five things that have been around for years and anyone with any sense has been using.

 

Your guide offers nothing new and it is overly complicated. You hair-splitting and putting words in people's mouths wont change that.

Link to comment

You show a lot of patience.and you don't get angry.kudos.

While it is true experienced players know the bulk of these fixes you and others mentioned that are in the guide and scattered across the web in a host of how to fix pages and online postings, I think what you have done here is good idea. 

There will always be newbies who need the advice and why shouldn't it be here on LL ?

 

Of course we need one like this for SSE.

 

Good luck.

Link to comment
31 minutes ago, Grey Cloud said:

No, I listed five things that have been around for years and anyone with any sense has been using.

Can you assume that there may exist a player who don't know about these things? Or you really think everybody who decided to start modding his skyrim will instantly recieve the knowlege? I spent weeks on forums, blogs and google several years ago when started to mod my skyrim. I tried legacy mods, legacy tools, incompatible params and many other bad things with its consequences because there was no complete guide how to make it work properly. And after several years I finally came to state where my skyrim can handle anything I want and shared it here for those who want to start modding his game in 2019. Do you have any other questions about the number?

 

48 minutes ago, Grey Cloud said:

and it is overly complicated.

Oh, maybe you need third party support to understand something listed here? I can offer the help if you need, lol. 

 

49 minutes ago, Grey Cloud said:

You hair-splitting and putting words in people's mouths wont change that.

I only rephrased that you wanted to say. And you don't need to prove anything, everybody who'll read this already made their conculsions about the dialogue at this point. You came to the topic, started to blame it when you have absolutely nothing against it and continue with spreading it around the forum. Pathetic. Instead of this you could make something useful, your own guide for example, where you'd explain your way to stability, but no, better to blame existing one with "2019" and "overly complicated".

Please leave this thread and stop mention it around the forum.

Link to comment
25 minutes ago, ANGRYWOLVERINE said:

You show a lot of patience.and you don't get angry.kudos.

While it is true experienced players know the bulk of these fixes you and others mentioned that are in the guide and scattered across the web in a host of how to fix pages and online postings, I think what you have done here is good idea. 

There will always be newbies who need the advice and why shouldn't it be here on LL ?

 

Of course we need one like this for SSE.

 

Good luck.

Thank you, I almost lost hope with these grey clouds in the topic. 

About SSE, I think I'll stick with LE version, as for now I don't see much profit in porting my game. If there will appear any good SSE guide I'll definitely mention it in mine.

Link to comment
On 10/6/2019 at 1:57 AM, mrsrt said:

Thank you, I almost lost hope with these grey clouds in the topic. 

About SSE, I think I'll stick with LE version, as for now I don't see much profit in porting my game. If there will appear any good SSE guide I'll definitely mention it in mine.

thanks for posting the guide, very appreciated

i can also see that greycloud felt the need to grace yet another technical thread with his presence and absence of anything useful to say (it's a common occurence by that point)

 

 

Link to comment
1 hour ago, faky said:

i can also see that greycloud felt the need to grace yet another technical thread with his presence and absence of anything useful to say

If you have anything constructive to say about any of my posts then do so, otherwise kiss my arse you toss-pot.

Link to comment
On 9/7/2019 at 4:39 PM, Grey Cloud said:

And does that not suggest that you are doing something wrong? ILS is not the default state of the game and therefore needing a fix. Most users do not get ILS and then only after they have caused it.

Anyone who has to jump through as many hoops as you to get a stable game is doing something fundamentally wrong.

 

On 10/5/2019 at 9:39 PM, Grey Cloud said:

I didn't say anything remotely like the words you are trying to put in my mouth. I didn't mention any of the tools you mention there.

As Genio said, several pages ago, all that is need for a stable Skyrim is SKSE, ENBoost (or and ENB preset), SKSE Plug-In Preloader and Crash Fixes. I also use Load Game CTD Fix for the cores/threads issue. Note that this is the successor to the obsolete Continue Game No Crash.

 

None of the above tools are '2019' or 'breaking news' in any sense. they have all been around for several years. Indeed, there are no new '2019' problems with Skyrim as far as I am aware.

 

No, I don't need Bug Fix Plugin as I don't suffer from any of the specific bugs it fixes.

My Papyrus settings are all default.

I have no idea what 'physical glitches' you are referring to so needless to say I don't use FPS Related Patches, whatever they/that are/is.

 

I didn't say anything like that either.

What I said, and what I stand by, was:

 

 

On 10/6/2019 at 12:34 AM, Grey Cloud said:

No, I listed five things that have been around for years and anyone with any sense has been using.

 

Your guide offers nothing new and it is overly complicated. You hair-splitting and putting words in people's mouths wont change that.

 

a guy comes here with easy to follow, solid guide that consolidates and links general purpose bug and stability fixes and all you have to say is... "your game is bad and i have known about these for some time now". you have nothing to add, nothing to modify, nothing to say. you're absolutely useless here, you are the equivalent of an old hag that just plain enjoys nagging at people that dont even want to interact with her. if the ini settings are wrong then point them out with links to sources as to why they are wrong or your own data. if any of listed mods cause ctds then point it out. but you did neither, you just came here to nag at OP that tried to help others out. i guess you just do it for the attention

Link to comment
2 hours ago, faky said:

"your game is bad and i have known about these for some time now"

I have not said that and the quotes from me that you have just posted prove that. I said that all these things in the guide have been around for several years; that only SKSE, ENBoost, Crash Fixes and SKSE Pluing Preloader are needed for a stable game; that there is nothing in 2019 (or nowadays) which is any different from previous years.

There are countless tutorials and guides, video and text that have been around for years. This guide brings nothing new apart from introducing a load of nonsense, about e.g. , Papyrus.

And if you disagree with any of that then point out to me something in this whizzo new guide that is new.

How solid a guide is it when it has been edited at least twice since it was posted?

 

Link to comment
31 minutes ago, Grey Cloud said:

I have not said that and the quotes from me that you have just posted prove that. I said that all these things in the guide have been around for several years; that only SKSE, ENBoost, Crash Fixes and SKSE Pluing Preloader are needed for a stable game; that there is nothing in 2019 (or nowadays) which is any different from previous years.

There are countless tutorials and guides, video and text that have been around for years. This guide brings nothing new apart from introducing a load of nonsense, about e.g. , Papyrus.

And if you disagree with any of that then point out to me something in this whizzo new guide that is new.

How solid a guide is it when it has been edited at least twice since it was posted?

When I am looking for information, I'm looking for the most recent one, because things might've changed over the years. But even if they didn't, isn't it better to have a recent source that confirms what has been known for years? Even if it was just more readable or accessible, the benefit is still there.

 

And I don't think it's fair to measure a guide by how many times it was edited.

Link to comment
On 10/7/2019 at 4:28 PM, faky said:

a guy comes here with easy to follow, solid guide that consolidates and links general purpose bug and stability fixes and all you have to say is... "your game is bad"

On 10/7/2019 at 7:15 PM, Grey Cloud said:

I have not said that and the quotes from me that you have just posted prove that.

On 9/7/2019 at 4:39 PM, Grey Cloud said:

And does that not suggest that you are doing something wrong? Anyone who has to jump through as many hoops as you to get a stable game is doing something fundamentally wrong.

 

On 10/7/2019 at 4:28 PM, faky said:

"...and i have known about these for some time now".

On 10/6/2019 at 12:34 AM, Grey Cloud said:

No, I listed five things that have been around for years and anyone with any sense has been using.

 

 

On 10/7/2019 at 4:00 PM, Grey Cloud said:

If you have anything constructive to say

On 10/5/2019 at 9:39 PM, Grey Cloud said:

No, I don't need Bug Fix Plugin as I don't suffer from any of the specific bugs it fixes.

My Papyrus settings are all default.

I have no idea what 'physical glitches' you are referring to so needless to say I don't use FPS Related Patches, whatever they/that are/is.

 

On 10/7/2019 at 7:15 PM, Grey Cloud said:

How solid a guide is it when it has been edited at least twice since it was posted?

 

 

did you also complain under each and every one of

On 10/7/2019 at 7:15 PM, Grey Cloud said:

countless tutorials and guides, video and text that have been around for years.

that they contain older information as well or was this the better place for finding attention?

Link to comment
  • 2 weeks later...

Thread update.

- Added Part V with valuable information for modmakers about Papyrus scripting, according to tests was made in the thread.

- Added Part VI for other game-related guides on LL.

- A bit rewritten "Thread leaks detection" according to actual test info.  

Link to comment
On 8/22/2019 at 2:03 AM, mrsrt said:

As tests shown, Papyrus does not clear it's allocations at all. It means, if you create an array in some function, this array will be stored in RAM until you close the game. Papyrus just leave the allocated memory. 

FALSE. Totally false. Please, stop saying non sense things until you can demostrate it.

The Script Engine release the memory whitout any problem but only make it when are not executing scripts.

 

If you make a script that is executed in a constant way the Script Engine, of course, not release memory because the main primary objective of the Script Engine is execute scripts. When the Script Engine has nothing to do, then and only then, release the memory used by the TERMINATED scripts.

 

Of course, in normal circunstances, the Script Engine is not constanly executing script and clear the TERMINATED scripts every second, or every minute or when the Script Engine want, because is the only way for play for 2, 4 or 6 consecutive hours.

 

On 8/22/2019 at 2:03 AM, mrsrt said:

Also this memory cannot be expanded with ENB and stores in the main process, memory of which is limited due to 32bit platform. It means if your script frequently makes huge allocations, eventually free memory will end and ctd happen.

Of course, because ENB never, absolutely NEVER, can increase the limit of 3.1 GB of memory.

Simply, when you activate ReduceSystemMemoryUsage ENB put the mesh and textures in their OWN memory space alocated by EnbHost.exe and that operation FREE memory inside TESV.exe because the game not need waste memory in mesh and textures. In that way, the executable TESV.exe have more FREE memory but NEVER can go over the limit of 3.1 GB of memory.

 

On 8/22/2019 at 2:03 AM, mrsrt said:

But it touches only raw types and arrays that was allocated manually in script code. You can freely use variables and types that was made in Creation Kit. 

So, several rules can be made according to this info:

- If you can avoid raw type and use a CK variable instead -> do it.

- If you need raw types, use already existen variables, this way memory cell will be rewritten and not re-allocated

- Avoid arrays for dynamic data, use lists created by CK instead

Again, that is partially false.

When you define a variable as a Property you really are declaring a special GLOBAL variable that have exactly the same value for all the instances of the script. Really, the Script Engine only have ONE variable no mater how many instances of the script you create.

When you define a Local variable inside the script each instance of the script have their OWN variable and each instance of the script can have a DIFERENT value in that variable.

 

Is better use always properties? Not, that depend of what you want make in your script.

If you only have one instance of the script is better have local variables because consume less memory. If you have multiple instances of the script is better have some properties, if you can, for reduce the memory usage.

 

The reduction is very noticeable? NOT, only when you have hundreds and hundreds of instances of the same script you can see a noticeable diference. Normally, the normal mods with normal scripts not have hundreds and hundreds of instances. That only happend when a bad script from a bad mod go crazy.

 

On 8/22/2019 at 2:03 AM, mrsrt said:

As for many programming languages, function Utility.wait() throws the activte thread to sleep and in this thread-state the virtual core will not be released. Always better to use RegisterForSingleUpdate() in that case. 

What are you saying??? You can demostrate that in any way??

Really do you think that the game can make an active wait/sleep that really consume CPU cycles?

Every time a script execute a wait() function the script is suspended until the time elapsed. Of course, a script in suspended state not consume CPU cycles. Change wait() for RegisterForUpdate() not have any sense.

 

On 8/22/2019 at 2:03 AM, mrsrt said:

According to tests, stack frame in the Papyrus engine is not limited. It means, if you have executed a recursion it will never stop and you will not be notified about that. It's a very dangerous state that will consume at least one virtual core and eventually may lead to ctd, especially if raw allocation exist in the recursive func. 

On 8/22/2019 at 2:03 AM, mrsrt said:

All the threads Papyrus was executed stored in your game saves (to be continued after loading). If you have used an infinite loop, something went wrong and loop exit conditions became unreachable for some reason, it means this thread will never ever stop for your skyrim, until you create a new game save. The same touches recursive calls. Be careful and always try to use RegisterForSingleUpdate or event listeners instead.

To check active threads you can call "dps" in your skyrim console. After that dump stacks of all existen threads will be printed in your logs (if enabled). Usually, these dead infinite threads have unknown source execution. 

Of course, if you save your game while a script is executing, when the game load the savegame, the script continue their execution. No matter if the script is a legal and normal script, a recursive script or a infinite loop.

The Script Engine can not diferentiate it and for that ALWAYS execute all the scripts, the good scripts and the bad scripts.

 

You only can have a problem in the Script Engine when a script from a bad mod go crazy and launch hundreds and hundreds of scripts creating a real problem. Until that not happend, the Script Engine has virtually no limit.

 

Make a "dps" with the console and look the log is a waste of time because only a very small number of people can read the Stack Dump correctly. 

If you really want know how many script have your game open your savegame with ReSaver and look it.

Link to comment
16 hours ago, GenioMaestro said:

FALSE. Totally false. Please, stop saying non sense things until you can demostrate it.

The Script Engine release the memory whitout any problem but only make it when are not executing scripts.

Okay, let me demonstate it, if the test was done before is not enough. 

I'll simply take the allocator-function i did before and execute it in my quest script when next OnUpadte happen:

Event OnUpdate()
	loop()
	Utility.Wait(2)
	Stop()
	return
EndEvent
  
Function loop()
	Debug.Trace("[MEMORY TEST] loop started")
	int i = 0
	While true
		Float[] arr = new Float[128]
		i += 1
		If (i % 1000) == 0
			Debug.Trace("[MEMORY TEST] " + i + " allocations happened")
		EndIf
		If i >= 1000000
			Return
		EndIf
	EndWhile
EndFunction

And as you can see, after the allocations happened I stop the main quest just to be sure that your "make it when are not executing scripts" applies to the test. 

The gamesave will be loaded in qasmoke and i'll make teleport with "coc whiterun" just to demonstrate cell-change behaviour. 

 

Test 1 with no memory allocations

When the game just loaded the main process consumed 568-569mb in qasmoke.

After "coc whiterun" the main process consumed 904-906mb

 

Test 2 with memory allocation

When the game loaded and allocation happened the main process consumed 1.592mb. I waited about 5-7 mins just to be sure no automatic cleanup will happen. Ofc it didn't happen. I used "coc whiterun", the main process was consuming 1.864mb. Waited about 4 minutes, clicked ESC button and got instant CTD. 

 

As you can see, the code, where allocations was executed, was not working anymore, furthermore, the quest was even stopped, but no cleanup happened. And now let me explain why you have to not expect any raw types cleanup while working game. 

1) The game does not have async memory model, it means to clean memory the game engine should freeze existen memory, but no one wants to play with constant freezes caused by scripts, or some other cleanups, right? This is why the game engine cleans memory only while several events where the render thread suspended (loading between cells for example). Exaclty because there's no async memory management you also have freezes while moving through skyrim too fast (cell load and unload). And this is why don't expect any memory cleanup while you just stand at one place.

2) According to the test results, we see that cell change didn't clean up the allocated arrays too. And it means if even while loading it wasn't cleared it will never be cleared at all. The game engine and the papyrus engine was written with C/C++ with manual memory management. It means there's no magic with memory like garbade collection, it simply allocs and deallocs while several events. And, as we can see, no event cleans unused raw allocations of a stopped quest.

 

Also, take a look at that I got CTD after clicking ESC when arrays was allocated. Free memory was enough, but ctd happened. Tested twice. It means large raw allocations also brings instability. 

 

18 hours ago, GenioMaestro said:

Of course, because ENB never, absolutely NEVER, can increase the limit of 3.1 GB of memory.

Simply, when you activate ReduceSystemMemoryUsage ENB put the mesh and textures in their OWN memory space alocated by EnbHost.exe and that operation FREE memory inside TESV.exe because the game not need waste memory in mesh and textures. In that way, the executable TESV.exe have more FREE memory but NEVER can go over the limit of 3.1 GB of memory.

Сaptain Obvious is here. 

 

18 hours ago, GenioMaestro said:

When you define a variable as a Property you really are declaring a special GLOBAL variable that have exactly the same value for all the instances of the script. Really, the Script Engine only have ONE variable no mater how many instances of the script you create.

When you define a Local variable inside the script each instance of the script have their OWN variable and each instance of the script can have a DIFERENT value in that variable.

Is here for sure, lol.

We don't discuss here about global and local variables, I mean, the properties that was allocated by CK have memory management unlike raw allocations inside the script. And in the test I did, if I'd somehow allocate these arrays with CK it would be cleaned from memory if quest.stop() called.  

 

18 hours ago, GenioMaestro said:

What are you saying??? You can demostrate that in any way??

Sure, you can do it yourself with your tool, actually. Try to start several script instances with utility.wait(5) and after with registerforsingleupdate(5) and compare the results. Especially, check your favorite dump stacks. 

Link to comment
19 hours ago, mrsrt said:

<snip>

I not know how write this whitout have the risk of be censored by the Moderators. I try be clear but not agresive.

 

Your words, as i allready said, are totally false. You not have a minumun idea about how really works the game that are playing for years. If that is not enougth, you are the tipical person that think knows everything, always have the correct answer and nobody can doubth about yours words.

I'm bored of pleople as you.

 

Your idea is totally imposible and every expert player can asure it to you whitout any doubth because they play the game for hours whitout any problem. If really the game have that problem sure the main pages that suport the game(CK Wiki, STEP, Nexus...) and a lot of people say it very clear.

 

Maybe you think that you can locate a problem of that size in a game played by millons of persons?

How can have the game a problem of that magnitude and nobody discover it in 8 year?

Why the people not say everyday that the game consume more memory each minute they play?

You are crazy?

 

--------------------------

 

The first thing to learn is that Skyrim does not normally free memory. Reuse it

The game allocates memory dynamically and requests it when necessary.

But once memory has been requested, normally, they are NEVER released.

Simply, the memory is erased and used again.

 

Why request memory that has already been requested? Why free memory? To request it again?

You should know that the memory request is one of the most expensive operations.

The best use for memory is to reuse it. And that makes the game.

 

DEMOSTRATION:

Every player can make this test. Is very simply.

You only need start a new game, save the game and load it. Look how many memory use the game.

Now load your normal savegame and look how many memory use the game. More, yes?

Now load the savegame you make before and look how many memory use the game. Less? A bit less?

Load again your normal savegame. Consume more memory? NOT

Load again your empty savegame. Consume LESS memory? A bit.

Load again your normal savegame. Consume more memory? NOT

Load again your empty savegame. Consume LESS memory? Near the same. You have reached stable point.

Spoiler

memoria.png.b9c8e5f1b16de073e4afc838b3c4746d.png

 

I made exactly that and, as you can see in my screen shot, my game use 960MB when load my empty savegame but use near 1.5 or 1.6 GB when load my normal savegame whit one year of history.

When i load again my empty savegame the game not use 960MB. Use more... much more memory...

If i repeat the process some times i reach a point where when load my empty savegame the game use near 1.4 GB of memory.

 

Why the game use near 500 MB more of memory? Because has already requested it.

 

That memory is really in use? NOT... That memory has been requested and is in use by the game but really is empty memory or cleared memory ready for be asigned to any mod that need it whitout need request new memory to the operating system.

Link to comment
20 hours ago, mrsrt said:

<snip>

Now i go to teach you a bit more because you are ussing arrays and the arrays in Skyrim have special behavior.

https://www.creationkit.com/index.php?title=Arrays_(Papyrus)

 

The most important paragraph is this:

Once an array is no longer referenced, it is garbage collected (destroyed.)

 

What mean that words? Exactly that.

The only way for clear the memory used by the array is wait to be cleared by the garbage collector.

 

But how works the garbage collector? How many arrays can clear the garbage collector in one round?

How many time need for make a round? Any know?

 

Well, let me explain it.

The garbage collector clear ONE array in each frame.

 

That mean that, for example, if one script use one array that array is cleared in the next frame.

If one script use 10 arrays the garbage collector need 10 frames for clear it, at 60 fps less than 1 second.

If one script use 120 arrays the garbage collector need 120 frames or 2 seconds at 60 fps.

If one script use 1000 arrays the garbage collector need 1000 frames or 16 seconds at 60 fps.

If one script use ONE MILLON of arrays.. that need another line...

1000000/60=16666 seconds /60 = 277 minutes /60 = 4.62 hours

 

If you really play at 144 fps, as you say in your first post, you have lucky. You only need wait:

1000000/144=6944 seconds /60 = 115 minutes /60 = 1.92 hours (you save a lot of time)

 

DEMOSTRATION:

I put your source code inside one of my mods and start making test. As i know how works the game, of course, i not put ONE MILLON and make my test with 20k but after the test I add some simple lines of code like:

Spoiler

        Utility.wait(10)
        Game.SaveGame("memory_"+total_run+"_1")
        Utility.wait(10)
        Game.SaveGame("memory_"+total_run+"_2")
        Utility.wait(10)
        Game.SaveGame("memory_"+total_run+"_3")
        Utility.wait(10)
        Game.SaveGame("memory_"+total_run+"_4")
        Utility.wait(10)
        Game.SaveGame("memory_"+total_run+"_5")
        Utility.wait(10)
        Game.SaveGame("memory_"+total_run+"_6")
        Utility.wait(10)
        Game.SaveGame("memory_"+total_run+"_7")
        Utility.wait(10)
        Game.SaveGame("memory_"+total_run+"_8")
        Utility.wait(10)
        Game.SaveGame("memory_"+total_run+"_9")    

That give me a savegame each 10 seconds and everybody can open my savegames for see the data:

memory.rar

 

If you look the file size you can see each savegame have LESS size. If open the savegames and look the array count  you can see how each savegame have LESS arrays. I extract the data:

Spoiler

16134    
15544    590
14953    591
14362    591
13767    595
13174    593
12581    593
11993    588
11412    581
    590,25
    59,025
193,3418043    
3,222363405  

As you can see, in the file memory_1_1 i have 16134 arrays but in the file memory_1_2 i have 590 LESS.

As each savegame has been made each 10 seconds at 60 FPS you can see how each 10 seconds i have 590 array LESS and that is because The garbage collector clear ONE array in each frame.

In the file memory_1_9 i have 11412 and clearing 59 arrays per second i must wait 193 seconds or 3 minutes.

 

When all the arrays are cleared the memory can be released? NOT

The memory, as i already has been said, is asigned and practicaly NEVER released. The only way for know if the arrays are cleared is save the game and open the savegame with ReSaver for look the Array count.

 

The only real important information is inside the savegame. Is the only way for really know what have the game in memory because the game only save the necesary data. If half of the asigned memory have empty data the game not write it inside the savegame, only write the necesary data for restore the game.

Link to comment
1 hour ago, GenioMaestro said:

I not know how write this whitout have the risk of be censored by the Moderators. I try be clear but not agresive.

 

Your words, as i allready said, are totally false. You not have a minumun idea about how really works the game that are playing for years. If that is not enougth, you are the tipical person that think knows everything, always have the correct answer and nobody can doubth about yours words.

I'm bored of pleople as you.

 

Your idea is totally imposible and every expert player can asure it to you whitout any doubth because they play the game for hours whitout any problem. If really the game have that problem sure the main pages that suport the game(CK Wiki, STEP, Nexus...) and a lot of people say it very clear.

 

Maybe you think that you can locate a problem of that size in a game played by millons of persons?

How can have the game a problem of that magnitude and nobody discover it in 8 year?

Why the people not say everyday that the game consume more memory each minute they play?

You are crazy?

And this writing me a guy, who was making statements whole the thread about stack size until tests shown that it has no limit in papyrus, and so on this way. If I say something, I always have some ground for it, whether it tests, reverse or my dev experience. Yes, it's possible that I'm not right in some cases, or partially not right, because for example even the official wiki has wrong information in some places. And if you're pretty sure I'm not right your best action would be to show it with a proof or test instead of writing this. 

 

1 hour ago, GenioMaestro said:

The first thing to learn is that Skyrim does not normally free memory. Reuse it

The game allocates memory dynamically and requests it when necessary.

But once memory has been requested, normally, they are NEVER released.

Simply, the memory is erased and used again.

And as you didn't provide any real test I'll do it for you.

 

If memory will be reused, and, as you say, it clears every render frame, then if we wait enough reneder frames, it must not allocate anything for the second array creating call. I'll wait 5 minutes with stable 143 fps at one place, it will be 143 * 60 * 5 = 42900 frames.

The test will look like this:

Event OnUpdate()
  	loop()
	RegisterForSingleUpdate(60 * 5)
EndEvent
  
Function loop()
	Debug.Trace("[MEMORY TEST] loop started")
	int i = 0
	While true
		Float[] arr = new Float[128]
		i += 1
		If i >= 42900
			Debug.Trace("[MEMORY TEST] " + i + " allocations happened")
			Return
		EndIf
	EndWhile
EndFunction

With no arrays creating my game consumes ~560mb.

After arrays creation the game process consumes ~595mb, and after next creations the process indeed did not allocate any more memory. You're right here, and thank you for the information, I wasn't able to find it throughout the internet. 

But now think a bit about the model of this GC. Imagine a PC that gives 30-50 fps and runs dozens of script instances each allocates something (typical SL skyrim). What will happen if allocations will be more than GC can handle?

Btw, it's good that GC in the game actually exists, but mods with array allocations still can lead to memory leaks and CTDs. I'll fix the section later. 

 

2 hours ago, GenioMaestro said:

I put your source code inside one of my mods and start making test. As i know how works the game, of course, i not put ONE MILLON and make my test with 20k but after the test I add some simple lines of code like:

Your test shows only persistent cleaning, i was talking about runtime cleaning, but it doesn't matter already. 

 

2 hours ago, GenioMaestro said:

But once memory has been requested, normally, they are NEVER released.

Wrong. If you'll try to allocate for example x2 arrays of what GC can clear per time frame you'll see that the main process gradually releases it's memory. However, if there was allocated too much, probably GC breaks and no cleanup coming. It seems CTD happens because of that, and this is what first tests shown. 

Also, if you'll watch on the memory consumption of the main process, you'll see batch cleaning, after gamesave loading for example, and this is typical memory management I was talking before. 

 

If you have something real and confirmed to say just say it, don't write the bullshit you wrote above. I make finding on tests and experience, most of them are usually right, part of them ofc not. If I'm wrong and you're right with something then I'll fix my guide. If you cannot confirm your words, then sorry, I cannot make tests for every word you say, however I do it when I have doubts. I didn't ignore any real and confirmed fact in editing the guide. And you're welcome here if you'll keep constructiveness. But if you want to continue with something like "the mod doesn't affect fps because I think so" like on the previous page, my recomendation you'll find there too. 

Link to comment
On 10/5/2019 at 4:23 PM, mrsrt said:

2019 means nowadays actuality. I didn't see any all-in-one up-to-date guide across whole skyrim community how to make the game stable, this is why I wrote this one. Also 2019 means that your game will be able to handle actual problems that may appear with latest mods, like high-res (rly high) texture packs and other stuff that the vanilla game cannot carry normally.

and you have provided none of that. Your guide is literally "works for me" and nothing else, and it sure as hell isn't up to date, and you haven't bothered vetting anything across multiple platforms or builds.

 

3 hours ago, stingray1995 said:

I stopped reading at 144fps.  I've said this before, and I'll say it again:  You cannot play this game above 60 frames /second.  If you are, then that would explain some things.

 

I've talked to the author of CLAMS about this; if anyone knows Skyrim physics, it's him.  He suggests capping framerate well below 60.  Yep, the lower, the better.  I have mine capped at 45.  

Scivirus can't even weigh his meshes properly and knows jack fuck about physics other than moving sliders around in JFF. The Havok fix has been stable and works from boot to quit and has for three years on hundreds of systems on framerates up to 244 without incident. One of the two reason scripts work better on SSE is because the frametime resolves on dx11 are three times or more faster and Skyrim scripting depends on frame resolves for update and resolution. The Havok Fix introduce a similar mechanic in LE and it has very similar results. 

 

Per usual you haven't the faintest.

Link to comment
56 minutes ago, stingray1995 said:

And what do you know about Skyrim physics, exactly?  Nothing.  You're playing above 60 frames per second, and I don't see you making mods with collisions and animated vaginas anywhere.  Tell it to Scivirus, see what he says to you.  Why are you even bringing up SSE here?  Sounds to me like you're in the wrong place. 

 

Don't be waxing your nonsense to a guy who has zero crashes.

 

I guess you feel the need to have that confidence and tell yourself, "I can run Skyrim over 60 fps,"  even though you can't even see a visible difference over 60 in-game;  the engine isn't built for it.  It's all in your head, and that's saying a lot.

Even I know you can't go over 60 fps without issues with skyrim, and I don't even know how to make mods. I just have fun making textures and still a beginner here.

 

Although this post is pretty helpful in some stuff, reason why I'm following it.

Link to comment
13 hours ago, stingray1995 said:

And they're right:  It does conflict.

I had the thought, and this is why "ExpandSystemMemoryX64" I describe as an experimental option you should try first. But, logically, it shouldn't confilct, the mem patch works for the main process of the game, ExpandSystemMemoryX64 works with only enbhost process. If someone has problems with the setup, well, you tried :|

13 hours ago, stingray1995 said:

I stopped reading at 144fps.  I've said this before, and I'll say it again:  You cannot play this game above 60 frames /second.  If you are, then that would explain some things.

 

I've talked to the author of CLAMS about this; if anyone knows Skyrim physics, it's him.  He suggests capping framerate well below 60.  Yep, the lower, the better.  I have mine capped at 45.  

You have to read the written section about fps to the end. I have explained everything there.

 

13 hours ago, stingray1995 said:

Where'd you hear that one at?  Link it or I'm not buying it.  I have tons of SKSE plugin dlls; they are some of the best damn game changers out there.  No problems whatsoever.

When the dll attaches, it does some startup and reserves a bit of memory for enviroment, variables and so on. Usually, it consumes several kb, but the memory will be taken from the main process. 

Furthermore, usually dlls written on c++ which doesn't have auto memory management, and if proper clean up isn't happen memory leaks. So, be aware with dlls, but so far I didn't find any problems with mine.

 

13 hours ago, stingray1995 said:

Last thing:  Why does nobody, anywhere, mention the fact that you can install the nvac.dll to Skyrim?  Throw it in the SKSE\plugins folder, guys; it can't hurt your chances!

 

https://www.nexusmods.com/newvegas/mods/53635

Because adresses adapted for Fallout, and highly likely they're different with Skyrim

 

9 hours ago, 27X said:

and you have provided none of that. Your guide is literally "works for me" and nothing else, and it sure as hell isn't up to date, and you haven't bothered vetting anything across multiple platforms or builds.

Well, what exactly will make this guide up-to-date for you?

Ofc I didn't test it on several thousands of pc and I have not that opportunity, as 99.9% of others here. Things like this usually happens by community (one has problems -> gives feedback) and not by author. If you have something to share, then share?

 

Link to comment

Archived

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

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • 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