Jump to content

[LE] Memory Limits and Cell Complexity / Large Number of Static Models


bluemarvin

Recommended Posts

Just wondering what everyone's experience is with respect to cell complexities and memory limits.

 

To explain: Any thoughts on a good way to determine if a cell you're building out is going to cause problems on a lot of machines to do size, number of different models used in the cell, etc?

 

I'm working on a rather ambitious cell with respect to the number of static models it will need to include, and while no problems yet, I'm wondering if I'm going to start running into issues at some point.

 

Any tips on how to gauge this as I go?

Edited by bluemarvin
Link to comment
Share on other sites

1) CK is not supposed to have a memory limit, according to one of the latest updates.


Although it's very difficult to exceed a specific amount of object placed in a cell, and that implies memmory too, for the reason explained further down.


2) If you intend on making a large and complex cell the first thing you need to do is to pre design it, so that you won't encounter problems when you finish it and you will start "Optimizing" it.


Optimization is crucial and absolutely necessary for large cells, the reason is that you need to cut down the CPU & GPU & Memory used by the PC by pre assigning the "Allow to Render" parts of the cell at any given time.

Something like separating the cell into rooms and corridors, in which only there the engine is allow to "Render".

* Otherwise it will render EVERYTHING that it is in the player field of view, either if there is a wall in front of you or not.


Optimization needs a careful pre design cell so that the "RoomBounds" and "Portals" don't conflict in any way, like one RoomBound intersecting another.


Portals needs to be placed in such a way so that the engine don't see/render more than 3 at any given time, and the positioning of the Portals don't exceed a certain distance from the Player's view, it will cause a visual bug when looking at it from a far distance ( the bug has a name that i can't recall ).


3) The bigger a cell gets the more time it will need to load when entering it.


4) The bigger the cell the more necessary is to cut down or eliminate completely unnecessary elements/functions that consumes CPU & memory.


One example:

Knowing this issue that i'm going to mention, i did a small test/experiment in one of my "Heavy Cells".

I try to count how many "Havoc" sensitive objects it can handle before CTD.


- At first my "Havoc" sensitive objects were 0%.

- The cell has a used count of:

M#: 205.85% (323.18 MB / 157.00 MB)

- When i reached placing 20 "Havoc" sensitive objects the game started causing random CTDs in that cell, and when i exceeded 30+ objects i couldn't enter it at all, it would CTD every time i try to enter that cell.

So, no "Havoc" sensitive objects at all in "Heavy" cells.


5) Cells have a limit in their dimension and you can not build in any given direction indefinitely, if you exceed the limit all meshes placed beyond that will accumulate/gather one inside of the other in the X,Y,Z = 0 part of the cell, or where ever your COC Marker is ( only when you go in game you will be able to see this ).

Imagine a big invisible box that you are allowed to build only inside of it.


* I don't remember the exact unit number of the limit, i've build so many cells that is an automatic process for me.

Although, in a similar topic to this a few month back, a very patient lady did count and found the exact unit of it, if you do some research here on Nexus forum you will find it.



Edit:

6) I forgot to add that, big rooms with a large amount of objects or/and many visible floors may require additional optimization except from the use of "RoomBounds", in this case you will need to build it in such a way that you will be able to use "Ocllusion Planes" to cut the rendering behind it.


Example:

I have one such room that is a big library with an insane amount of objects, i made it square with 2 floors (corridor floors), in the middle i have placed a big square structure (that is actually a lift, but that's another story) that reaches up to the second floor.


( inside the library you can fit at least 30+ libraries like the one in college of Winterhold, just so you can get an image of the scale of it )


Inside the square structure i have place all along its hight and in all of its 4 walls vertical "Ocllusion Planes" that covers all the wall's size from corner to corner, and inside each floor along its lenght horizontal "Ocllusion Planes" from corner to corner.


So, this way the engine renders only up to 25% of the object at any given angle of the player's field of view.

Simulating the actual by the player real time visibility of the objects, what you can not actually see it's cut off from rendering.


Edit 2:

7) Here is one simple example on how to cut down unnecessary PC consuming resources:




I hope i didn't forget something and that all this can help you.


Have a happy modding !.

Edited by maxarturo
Link to comment
Share on other sites

First of all... holy cow what an amazing response. This is so kind, thanks for taking the time to provide this kind of detail.

 

I tend to mod once or twice a week so apologies for the delay in getting back to read this.

 

From what you said above, I think I may have some flaws in the design of the room -- but I guess that's going to depend on how things shake out. So, my room is way smaller than what you described with your library -- but with a lot of static items all over the place. Still building it so they're not all in there, though.

 

But, all the objects would be potentially visible at the same time. So it sounds like what I should have done was to design the cell so that the objects, while all in the same cell perhaps, can't be all seen at the same time, so like corridors leading to other rooms.

 

I was trying to avoid breaking it into multiple cells due to the loading time issue, which, nobody likes waiting for things to load.

 

Thanks again for your amazing response. It gives me a lot to think about.

Link to comment
Share on other sites

Don't mention it.


One good practice for building complex cells, at least until you get the hang of it and you can pre design it in your head, is to draw in a paper simple squares that each one represent each part of your cell (and its functionality), like big square = big room, large stretched square = large corridor... etc.

So, this way you can see/imagine before building it how objects should be placed, and this will also help you a lot to not have "RoomBounds" conflicts later on.

Something like how the architectures designs works.


* Sometime it's better to rebuild the cell at an early stage, than to find out when you finish it that you have done a terrible mistake that will cause unnecessary lag in someone else's PC.

Every time you rebuild a cell it gets better and better each time...

Link to comment
Share on other sites

  • Recently Browsing   0 members

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