#Cull Factory: Stops rendering faraway rooms

1 messages Β· Page 3 of 1

austere stirrup
#

right

#

what I'm thinking of would ideally be client-side

#

that looks to be synced

#

for what I'm thinking of to be client-sided, it would essentially just have to cull renderers and lights for items based on proximity to similar items, though, so I guess it can't really prevent item updates

old bison
#

maybe just stop rendering the scrap on the ship with a hotkey?

austere stirrup
#

nah, I'd rather it be automatic

#

why make people press a button when the game can do it itself?

#

also, having items be invisible temporarily is ugly

old bison
#

sounds complex but very cool if it can work just like mc as you say

austere stirrup
#

unfortunately I think it would be tricky to really emulate Minecraft's item grouping

#

I could do that, but then it would only really work in vanilla and mods that don't touch items

#

so I think it would just have to be a culling option, so I suppose it could fit into this mod after all

old bison
#

would be nice to also display the quantity of the item in the stack and the total value

austere stirrup
#

but the main pain point is a bunch of dynamic lights, like the lamps, so that would probably help a ton

#

I think my strategy would just be to allow configuring a number of stacked items to display before they're culled

old bison
#

there's that mod that stops light from scrap producing shadows

austere stirrup
#

that's also ugly :^)

old bison
#

yeah

austere stirrup
#

the lamps' shadows look cool

#

if you don't tank your fps with a couple lamps, there's no reason for fps to tank with hundreds

#

unless you really like stacking shadow maps

old bison
#

ik you say you want it to function like vanilla but mods like shipmaid can move scrap in the ship to be exactly stacked on top of eachother, maybe that kind of mechanic could be used to group the scrap close to eachother into one pile and then stop rendering all but one

valid sinew
#

I was actually meaning to create something akin to that

austere stirrup
#

it just needs to have a certain radius to merge them within

#

or to cull them within, I should say

old bison
#

but will it show all off their scan nodes and values?

austere stirrup
#

it should

#

scan nodes are separate

#

we're talking purely rendering changes

old bison
#

but also then if you try pick it up, you'll go for the one that's visible

#

and then one of the invisible ones will appear

austere stirrup
#

that's one of the specific reasons I would only make it affect renderers and lights

old bison
#

and it'll be in a slightly different position

austere stirrup
#

true

#

it can perhaps be an option to move them together, but really I don't see that as a problem

old bison
#

for small items all scattered around it would be quite annoying to quickly pick them up

austere stirrup
#

if it's set up to show two or three of the same item, then it won't be super visible, and a similar thing happens in Minecraft if we use that analogue

valid sinew
#

every GrabbableObject has EnableItemMeshes method

#

to quickly disable rendering

austere stirrup
#

does that affect lights?

valid sinew
#

I will test it right now

austere stirrup
#

but if that's calling GetComponentsInChildren then that's not viable

old bison
#

and if you were trying to sell an exact amount to meet quota wouldn't you need to keep moving the scrap away from the pile until you find the one with the right value you want to sell

austere stirrup
#

we have to cache the components or it will be prohibitively slow

austere stirrup
old bison
#

sure but you can see em at least

austere stirrup
#

at least if you're stacking the items close enough to where they would be culled

#

you can see where the scan nodes are relative to each other even if they're culled

#

it's essentially the same thing in my eyes

old bison
#

wouldnt you still need to walk a bit to drop it far enough to not stack

austere stirrup
#

I think you're thinking of the radius being way larger than I am

#

the radius I'm thinking of would be like .1 meters max

old bison
#

right

austere stirrup
#

you could probably turn around and drop it and it wouldn't stack

old bison
#

fair

#

since its an issue in vanilla we could really do with an improvement to the node system and being able to pick up the right item you want in a pile

austere stirrup
#

obviously with that setting it would only really help with organized ships but I feel like that's generally what you'd see with long runs

austere stirrup
#

could make a looting UI similar to Fallout 4 and break every mod that tries to check for an item on the floor lol

old bison
#

im surprised no one has made a mod to stack the node UIs on top of eachother so they dont overlap and have a way of scrolling through the list and selecting the one you want to pick up

austere stirrup
#

hmm, true, I suppose it could activate a UI upon scanning

old bison
#

just names and values

#

maybe some buttons to sort

austere stirrup
#

but the only nice UX I can think of is scrolling to select, and that seems like it could be annoying given that the game uses scroll for selecting items in the hotbar

#

and also prone to conflicts

old bison
#

by grouping same items or sorting by price or smth

austere stirrup
#

perhaps it could be on a separate button from scan, but makemore buttons is not a great plan

old bison
#

or two buttons on keyboard to go up or down the list

austere stirrup
#

right, but then if you accidentally scan multiple while you're in a bad situation and have to select a weapon?

old bison
valid sinew
#

this would be so hard to pull off without conflicts

old bison
#

if it's an entirely independent UI i don't see it needing to conflict

austere stirrup
valid sinew
#

controls would mess up completely 😦

old bison
#

why

#

just a check if the player is looking at scrap

valid sinew
#

what if you wanted to change current slot when looking at an item to get it to different slot?

old bison
#

lmao

#

true

austere stirrup
#

my feeling on the subject is that it's probably something that would need to be implemented in vanilla first so that everyone is forced to adapt to it

#

mod compatibility is incredibly difficult when you're not messing with something that other mods are likely to mess with lol

#

difficult as in time consuming really

old bison
#

yeah

valid sinew
#

you would need to turn them off somehow

#

yet another layer of abstraction

austere stirrup
#

yeah, I kinda figured I'd have to take care of that

#

definitely something where I'll have to brainstorm the most efficient method

#

it might honestly not even be viable, since mods can spawn items whenever they want

#

it's not really reasonable to scan for items throughout the whole scene ever

valid sinew
austere stirrup
#

hmm, not really

#

that could be a separate option though

#

what I'm thinking of would just track items in the scene, run through them and pool ones that are within a certain radius and keep only an arbitrary subset of them visible

valid sinew
#

ooh, okay

#

what i thought was just grouping same items in the same spot and letting you pick them up one-by-one from lowest value

austere stirrup
#

thing is, for portal occlusion culling, I'll already have to start tracking every item entering and leaving the facility to be able to determine which ones have lights attached that cast shadows so that I can occlude those shadows when the player is separated from the item by a wall

valid sinew
#

cause i could get that system working fairly easy

austere stirrup
#

which would prevent flashlights shining through walls

austere stirrup
#

maybe you thought of something I didn't

#

or maybe you weren't thinking of setting any items inactive/hidden

valid sinew
#

i mean - I was thinking about doing that on the ship (based on previous convo here), cause i've got the base system working already

#

akin to shipmaid

#

but I haven't thought of that in dungeon context

austere stirrup
#

to be fair, it's not nearly as important in the dungeon

#

you'd have to have a mod get pretty crazy for that to be an issue

valid sinew
#

true

austere stirrup
#

but I would have to imagine that on the ship it's possibly more likely that a mod might care about an item on the floor

#

I would assume that setting items inactive would cause them not to be counted in the ship value for example

valid sinew
valid sinew
austere stirrup
#

if it's just disabling the renderer, light and grabbableobject component and not the scannode, perhaps that would work

#

not sure thonk

#

for lights, though, I would personally prefer to try to emulate there being multiple lights by adjusting the intensity, but I wonder if that would scale in a very predictable way

valid sinew
#

i would need to test this more extensively (and build that system in the first place) - turning off items & disabling lamps/apparatice wouldn't be too difficult, but my project has hit dead end a long time ago πŸ₯²

austere stirrup
#

then once it's all working it turns out that I've been working on the item culling and we both release at the same time and cause all items to disappear on the ship :^)

valid sinew
#

that would be an oopsie

austere stirrup
#

not sure if/when I would start trying to experiment with it though, I have some other fairly sizeable features I want to look into

#

like that dynamic light occluder stuff

valid sinew
#

yeah, this is very much outside of this mod's scope

#

i'm gonna think about doing that tho

austere stirrup
#

yeah, if I put it in CullFactory it'll be purely visual

#

maybe you'll beat me to it

#

save me the trouble lol

valid sinew
#

i'm not making any promises πŸ’€

austere stirrup
#

with persistence anything is possible

#

dew it

valid sinew
#

moreover what i'm doing in my project is such horseshit it's not gonna be usable anyway lmao

valid sinew
austere stirrup
#

hey, even if it's a proof of concept it might prove the concept

valid sinew
#

that's right

austere stirrup
#

I wasn't sure if I would be able to get portal occlusion culling working, now here we are

valid sinew
#

only doing something moves anything forward

austere stirrup
old bison
#

when looking for items to do whatever their mod does

austere stirrup
#

I think that should be fine? unless they expect the grabbableobject to actually do something over time when they call a function

#

disabled components are still accessible

fair oyster
#

How much will this improve productivity?

old bison
#

yeah as long as they can find it its probably ok

austere stirrup
old bison
#

dont think they need to use it, just look for it to know what kind of item it is

austere stirrup
#

right

austere stirrup
#

if that's true of the vast majority of mods, then compatibility may not be a huge problem

fair oyster
#

The hardest thing is to make it client friendly

old bison
#

can you cull scrap when not looking at it

austere stirrup
#

unity does that for us, except for lamps because they have lights and cast shadows

old bison
#

cool

austere stirrup
#

if by looking at it you mean have it visible on the screen though, that's a whole other beast

old bison
#

what other kind of looking at it is there

austere stirrup
#

culling items is on my brain's roadmap for CullFactory, but that will only do something inside the facility

old bison
#

oh you mean like looking in its direction through a wall

austere stirrup
#

Unity does frustum culling by default, meaning that if an object is within the field of vision, whether visible or occluded by a wall, it will be rendered

old bison
#

yeah alright

austere stirrup
#

if such an object casts light with shadows, though, all bets are off for what will be culled

old bison
#

so if im in the facility and look up im rendering all scrap in the ship

austere stirrup
#

quite likely, yeah

old bison
#

bruh

valid sinew
#

lmao

odd shell
#

Theyre working on portal culling tho

#

Si? :P

austere stirrup
#

who is working on portal culling?

#

portal occlusion culling is already in the mod that this thread is about

odd shell
#

Maker of this mod!

valid sinew
old bison
#

i thought cullfactory only effects the rooms and not items

austere stirrup
#

at the moment, that's true

#

but it should be possible to cull items as long as I can track which ones are in the facility

old bison
#

cull by distance?

austere stirrup
#

no, by visibility

#

the portals can be used for dynamic culling as well as for determining visibility of static tiles

old bison
#

is that for items too

#

thought just for players and mobs

valid sinew
#

this is GrabbableObject property

old bison
#

ah

austere stirrup
#

not good enough, then I have to Object.FindObjectsByType<GrabbableObject>() every frame

valid sinew
#

this is pain

austere stirrup
#

that will explode the framerate

#

we already kind of track items entering and leaving the facility due to how depth culling was implemented before, so we're partway there, the only issue is if mods spawn items after the level is generated

old bison
#

but you'd never need to render an item at the distance between the facility and the ship anyway so couldnt that be an easy way to avoid rendering ship scrap while inside

austere stirrup
#

or if they teleport an item in/out

valid sinew
#

would not caring about mob's spawned items be a good enough solution?

#

since the vast majority is generated before landing

austere stirrup
#

oh mob spawned items should be easy enough to handle in a fairly decent way I would think

old bison
#

items opened out of giftboxes?

austere stirrup
#

sigh

#

why you gotta ruin my dreams

old bison
#

lmao

odd shell
#

If mods spawn in scrap after the game loads, does that scrap end up not being visible for everyone?

#

Or just not get culled?

austere stirrup
#

no, no items are culled currently

#

this is all theoretical

odd shell
#

Understood

austere stirrup
#

technically, I could probably track what items are where just by running a transpiler over every class in the entire game, but that would kill startup times

odd shell
#

Do enemies even spawn scrap? Or are we talking about stuff like enemies killed scrap (with the loot bodies mod or whatever it’s called)?

austere stirrup
#

Nutcrackers and their shotguns are the only vanilla one I believe

#

but I know there are mods that do it too

#

tricky part is checking for the items after they're spawned and not before, that timing could vary from mod to mod

glass juniper
#

a brute-force way is to hook into the postfix of Object.Instantiate and do type checking there but yeh

austere stirrup
#

since GrabbableObject is networked, the hook can be in the networked spawn method

#

but that only takes care of items when they're spawned, any mod can set isInFactory whenever they want

#

so it would have to be a spawn hook and a transpiler across every class which I'm not willing to do

#

although that does create more work for me if I don't Aware

glass juniper
#

hm I wonder if it's possible to write a single transpiler and tell harmony to apply the patch to all classes

austere stirrup
#

well, I think you have to do it by getting every class from every assembly and calling the patch on each of them

#

but it's very slow

#

iirc, AC does that, which is why it takes forever to start up (time to get crucified for bringing that up)

glass juniper
#

ah, advancedcompany?

austere stirrup
#

yeah

#

I understand why they do it though, it's kind of the most performant way to allow everything in the game to be customized

glass juniper
#

oh damn i did not know that

austere stirrup
#

also technically I could just not track what's in the facility and instead track every item in the world and run culling on ones that have isInFactory == true, but I worry that that would be very slow in late game with hundreds or thousands of items in the ship

#

perhaps that could be mitigated by moving things between lists for inside and outside based on that flag, that way the branch predictor can actually do its job

valid sinew
#

wouldn't culling ship items based on distance from the ship be more effective?

#

so if you're further than X meters you just cull everything?

austere stirrup
#

that would be a solution for when you leave the ship, sure

#

but I wouldn't really consider that a good solution, since that doesn't solve the issue of framerates while inside the ship

#

what I'd really like to do is cull the entire surface while the player is inside the facility, but that's a separate thing from the issue of tens of stacked items causing bad fps

valid sinew
#

ooh, that would be far more effective, yeah

#

but I imagine it's difficult

austere stirrup
#

there's a few ways I can see myself implementing that, but yeah, if the scene hierarchy doesn't lend itself to that it might be quite tricky

#

what would be really cool is to make a portal for the ship door as well

#

that way I can run through everything inside the ship and cull it when it's out of view

#

in practice, though, that may not matter too much

#

especially if I implement item group culling

valid sinew
#

i was meaning to ask - does portal culling work with ship screen now?

#

cause using depth culling made the screen black

austere stirrup
#

both should work as of 1.7.2

valid sinew
#

you're the goat

austere stirrup
#

also, 1.8.0 dropped just a bit ago with fixes for custom interiors

#

although scoopy beat me to it so now I have to remove those interiors from the whitelist in the next update lol

silver escarp
#

is portal good to use now @austere stirrup

austere stirrup
#

yes

silver escarp
#

ty

last venture
#

Bunker interior doesn't seem to be playing perfectly nice with CullFactory

#

On PortalOcclusionCulling

#

The spots where things bug out seem to be pretty specific, and only momentary, but when they do it's kinda jarring

silver escarp
#

what ver of more interiors?

#

@last venture

last venture
#

Latest, v2.2.0

#

CullFactory v0.8.0

austere stirrup
#

could you send a video of the spots where that's happening?

last venture
#

I'd have to go back to that moon but I can try, Windows screen recording isn't great for 4k monitors

austere stirrup
#

also, if you can find where CullFactory says which interior is loading, you could try adding that to the list of interiors to use the fallback portals in and see if that helps

#

gotcha

#

the easiest way for me to investigate these things is to get a seed and moon for me to go to with your code

austere stirrup
last venture
#

Just adjusted with LethalConfig, will try Bunker Interior again

#

If it still has issues will try to record but no promises

#

Also, on an unrelated note, putting Boombas outside the facility is a mistake

#

They are shockingly fast KEK

#

Having to reduce the filesize rq but got a recording for ya

#

That should show the problem pretty extensively

#

This was with Fallback Portals

#

So I think it's an issue of the portals being too big

#

It functioned basically identically without fallback portals so I don't think those did much in this scenario

#

It's almost always on corners of vision where I presume the game thinks they're out of view

#

Except that one spot I showed

#

Not sure what's up with that, perhaps the portal is too wide?

#

Or thick

#

idk

austere stirrup
#

it being too wide should in theory make it render, not sure what's up with that if it was using the fallback

#

I'll look into it

last venture
#

Ty! It's nothing really gamebreaking, and I can certainly just disable it / switch to DepthCulling when in this interior

#

But I figured you'd wanna know

austere stirrup
#

hmm, looks like changing the fallback list at runtime broke

#

if you add BunkerFlow to the fallback list and restart, it should work

#

we should be able to release an update tonight that resolves that issue and also makes BunkerFlow use the fallback by default

oak plover
#

All these ideas about further optimising the game are great (with the scrap and such)

austere stirrup
#

Scoopys Variety Mod's interiors will be removed from the fallback list to coincide with the update that fixed the portal sizes on their end, and SewerFlow will now be in the fallback list instead

#

the fallback list will be hard-coded with optional overrides, though, since it's difficult to migrate options properly

craggy dove
#

i recently played on the bunker and did not experience this issue, unless it was something that was introduced in 0.7.2+

austere stirrup
#

it's not, if it became an issue it's because of bunker updating

#

but I don't believe that happened, I think it's just only especially visible when you encounter hallways that are a bit misaligned like in the video

#

or any situation that makes you face a hallway from any angle but dead on really

last venture
#

SewerFlow is also Scoopy's

austere stirrup
#

ope

#

I meant BunkerFlow

last venture
#

Ahhh

#

Valid lmao

austere stirrup
#

too many flows

last venture
#

It also doesn't help that I have a 4k monitor

#

If something is at the edge of FOV, I'm seeing it

austere stirrup
#

lol I suppose so

short flame
#

Hey

#

Would yall say this mod is stable enough to use with custom interiors, radar boosters, and body cams?

craggy dove
#

custom interiors yes

#

depends on the interior though, some may be less stable than others

austere stirrup
#

radar boosters and body cams, yes, absolutely

#

and yeah, custom interiors have been spotty

#

I'm hoping 1.8.1 will finally make things consistent

craggy dove
#

fwiw i just played on custom interiors for about an hour and a half and didn't notice any issues

austere stirrup
#

oh, I didn't realize Dantor's was released, but I know its author saw me mention the door socket sizes before, so that makes sense

#

glad to know they're both working fine!

#

I did check PoolRooms and it seems like the door sockets are appropriately sized there too

rapid carbon
#

CullFactory [0.8.0] threw two non-fatal errors at the end of dungeon generation for a sewer (scoopy [1.2.0]); wandered around the level without any apparent issue, but dropping it here (PortalOcclusionCulling w/ SewerFlow on fallback list)

austere stirrup
#

oh yeah, I encountered that as well

#

it should be fixed in the next version, once we get that out

#

when that happens, it just means that the lighting influence won't be accounted for, so you might see some light pop-in

#

actually, it means the culling won't work, I lied

#

it doesn't create the list of all tiles when that fails

#

good that it doesn't cause error spam though

plucky fulcrum
#

i noticed when using this like a week ago with the spectate enemies mod the mod kinda becomes useless as you cant spectate enemies properly anymore has this been fixed ?

glass juniper
#

should be up in hot minute πŸ‘

glass juniper
austere stirrup
#

yeah, hard to say how likely it's been fixed without knowing which version you were on, but it's worth checking again, and if you find that it still doesn't work please let us know

regal ore
#

hello what's the recommended values for
β€’ Use fallback portals for interiors =
β€’ Skip fallback portals for interiors =
if i have the ff mods:

austere stirrup
#

the defaults in 1.8.1 should be good for that list

#

I haven't tested the mental hospital yet, but I believe Dantor specifically made sure the doorways are compatible with portal occlusion culling

fair oyster
austere stirrup
#

the only one with known issues is MoreInteriors, but the necessary workaround should be enabled by default

#

if you don't change from the default settings, it should just work ℒ️

#

that is the hope at least

rapid carbon
#

trying to update from 0.8.0 to 0.8.1 and it's expecting some specific folder structure now?

[Error  : Unity Log] DirectoryNotFoundException: Could not find a part of the path "D:\Game Launchers\Steam\steamapps\common\Lethal Company\BepInEx\plugins\fumiko-CullFactory\version".
Stack trace:
System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) (at <787acc3c9a4c471ba7d971300105af24>:0)
System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share) (at <787acc3c9a4c471ba7d971300105af24>:0)
(wrapper remoting-invoke-with-check) System.IO.FileStream..ctor(string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
System.IO.File.Open (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share) (at <787acc3c9a4c471ba7d971300105af24>:0)
CullFactory.Config.MigrateSettings () (at D:/Projects/CSharp/BepInEx/LethalCompany/CullFactory/CullFactory/Config.cs:160)
CullFactory.Config.Initialize (BepInEx.Configuration.ConfigFile configFile) (at D:/Projects/CSharp/BepInEx/LethalCompany/CullFactory/CullFactory/Config.cs:137)
CullFactory.Plugin.Awake () (at D:/Projects/CSharp/BepInEx/LethalCompany/CullFactory/CullFactory/Plugin.cs:20)
UnityEngine.GameObject:AddComponent(Type)
BepInEx.Bootstrap.Chainloader:Start()
UnityEngine.Rendering.HighDefinition.HDRenderPipelineAsset:OnEnable()```
#

is the expected location documented anywhere?

austere stirrup
#

uh oh

#

do you have the mod manually installed or something?

rapid carbon
#

yeah I maintain it all manually

austere stirrup
#

gotcha

rapid carbon
#

I can see what folder it's looking for, but unclear if it's a specific file or all files

#

figured it was easiest to just ask

austere stirrup
#

the version is a filename

#

but... that really shouldn't be a thing, I'll look into a better way to get the assembly path

#

this was kinda a last minute thing

rapid carbon
#

understandable

#

going to keep using 0.8.0, let me know if you need anything or want a check on my end later

#

good luck

austere stirrup
oak plover
rapid carbon
#

i'd have no way to know, so i'm not sure why you're pinging me πŸ™ƒ

austere stirrup
oak plover
rapid carbon
#

gotcha, please stop pinging me for threaded convos I can't help with, in any event πŸ₯°

silver escarp
#

mr popular

spring pawn
austere stirrup
#

eh, not really

#

CullFactory has its own far plane override that you can use as an alternative to that, but you can also leave that disabled and use both

#

increasing the render distance inside the facility shouldn't really matter that much unless there's a lot of dynamic stuff that isn't currently culled

glass juniper
fair oyster
#

@austere stirrup I'm going crazy

#

I check the compatibility of most mods by disabling and enabling others

#

FPS jumps constantly from 250-150

#

I'm trying to understand why this could be

austere stirrup
#

couldn't tell you

#

I have that happen too, with very few mods

fair oyster
#

I had 30 mods now

#

I'm gradually adding

#

But then it’s like after 40-50 modo

#

Console turns on low performance mode

#

And it starts working only at 100-140 fps

austere stirrup
#

if you're gradually adding them, don't you have a narrow set of mods to check for issues?

fair oyster
#

but only client mods that change the HUD

fair oyster
#

I've already written down a list of things that could cause instability.

#

But the problem is different

#

World generation is different, seeds are different

#

And maybe that's the problem

#

In some places vanilla generates something successfully, in others it doesn’t.

#

This is the first guess

austere stirrup
#

you can use the seed override in CullFactory to remove that variable

fair oyster
#

The problem here is much deeper

#

BepInEx-BepInExPack-5.4.2100
ShaosilGaming-GeneralImprovement-1.1.9
Rune580-LethalCompany_InputUtils-0.6.3
PotatoePet-AdvancedCompany-1.1.1
Zaggy1024-OpenBodyCams-1.1.5
Owen3H-IntroTweaks-1.4.5
Evaisa-HookGenPatcher-0.0.5
Evaisa-LethalLib-0.14.2
Rolevote-The_Fiend-1.0.4
x753-Mimics-2.4.0
AmesBoys-ImmortalSnail-0.6.1
NomnomAB-RollingGiant-2.5.1
jaspercreations-Scopophobia-1.1.1
Ccode_lang-SirenHead-0.2.1
SolidStone-ShockwaveDroneEnemy-0.2.1
x753-Peepers-0.9.6
Mikusch-SkullEnemy-1.0.4
rileyzzz-Skibidi_Toilet-1.0.2
Rdos-LethalGym-1.0.1
VersusWorks-Dynamo_Flashlight-0.1.2
Jordo-NeedyCats-1.1.1
Taker-CannabisCompany-1.0.3
AinaVT-YippeeScrap-1.0.7
Pinta-PintoBoy-1.0.4
ModusInteractive-Lethal_Trading_Cards-1.0.3
SillySquad-AmogusScrap-1.1.0
Theronguard-Emergency_Dice-1.1.13
Scintesto-Scavenger_Plushie-1.0.6
Scintesto-Monster_Plushies-1.0.4
Zaggy1024-PathfindingLagFix-1.2.1
DOkge-InventoryFixPlugin-0.0.1
SillySquad-BetterTotalScrap-1.1.0
Sv_Matt-HideModList-1.0.1
Hamunii-JetpackFallFix-2.0.1
NutNutty-SellTracker-1.2.1
AlexCodesGames-AdditionalContentFramework-1.0.3
AlexCodesGames-AdditionalSuits-2.0.0
BatTeam-LethalFashion-1.0.6
tinyhoot-ShipLoot-1.0.0
EliteMasterEric-Coroner-1.6.0
NotAtomicBomb-TerminalApi-1.5.1
fivetoofive-DetailedScan-1.2.2
kRYstall9-FastSwitchPlayerViewInRadar-1.3.2
Ozone-Runtime_Netcode_Patcher-0.2.5
Sligili-More_Emotes-1.3.3
TwinDimensionalProductions-CoilHeadStare-1.0.6
Hamunii-JetpackWarning-2.2.0
akechii-DiscountAlert-2.3.0
mrov-LethalRichPresence-0.5.8
willis81808-LethalSettings-1.4.0
willis81808-HackPad-1.1.3
Evaisa-LethalThings-0.9.4
malco-Lategame_Upgrades-3.1.1
ButteryStancakes-AccurateStaminaDisplay-2.0.0
Dev1A3-RecentlyPlayedWith-1.0.3

austere stirrup
#

get it to run poorly, then keep that save backed up and set the seed override to the problematic seed and test mods

#

jeez

fair oyster
#

So far I have added these mods

#

Disabling them

#

Slightly improved performance

#

But there's nothing like that about them...

#

It's just items and HUD

austere stirrup
#

anything can cause problems

#

it's code, if it's written poorly the game runs poorly

fair oyster
#

And it bothers me

austere stirrup
#

doesn't have to

#

errors aren't the only way performance degrades

fair oyster
#

It’s just that as soon as my game runs at 100-140 fps, then for my friends who have weak PCs, the game will automatically output a maximum of 40-60

#

with drawdowns

austere stirrup
#

you really just have to remove variables to try to reproduce the problem

fair oyster
austere stirrup
#

find maps and seeds where it happens and see if you can get it to happen again

#

but I can't help you more than that advice

fair oyster
#

To constantly load the same

#

And check

#

I forgot the name

austere stirrup
#

it's built into CullFactory now

#

check the config

fair oyster
austere stirrup
#

but whatever you do, make sure to empty that config option out when you're done testing, it WILL break things

fair oyster
#

Well, with cullfactor enabled I got +20-30 fps

#

Still, yes, these mods themselves are heavy

#

From 250 fps to 200-220 they underestimate

fair oyster
#

on the same seed

austere stirrup
#

sounds like it's time to report the issue to those mod authors πŸ‘

fair oyster
#

the mods are too big, maybe they are working on something else

#

On Eva, I think it always supports its own library

austere stirrup
#

the only way to find out is to ask

#

a profiler should hopefully be able to tell them what the issue is

fair oyster
#

so many open topics

#

But Late_GAme works, it responds

#

I'll try to write there

#

I wrote, I'll wait for an answer...

#

But somehow it seems to me that they will simply ignore me

#

20-30 fps eats up, it's a trifle

#

But in good large assemblies

#

This has a big impact on weak PCs.

#

I want everything to work stably

#

CullFactor is a temporary saver, but people don't know much about it. We have to constantly advise, attract more testers for it

austere stirrup
#

if it works for people, word will get out, I'm not worried about making outreach

#

it had a rocky start, but I think it's in a state now that anyone can recommend it, at least until we break more things lol

fair oyster
#

As soon as CullFactory came out, I immediately realized that it was the future

#

Woke up, drank tea, went to test it

#

And I was in awe

austere stirrup
#

a real fan would've skipped tea

fair oyster
austere stirrup
#

just kidding lol

willow garden
#

Hey since you fellas play with CullFactory and I've not been up to date with development, does it and lc_office/custom interiors play nice now? πŸ‘€

austere stirrup
#

LC_Office has played nice for quite a while now

#

the rest, as of the last few days, yes

#

until someone comes out with a new interior that breaks lol

#

all the new ones the last few days that I'm aware of work though

willow garden
#

Brilliant, I've been wanting to add it to my pack since it launched, it's like better spray paint all over again πŸ˜…

fair oyster
#

@austere stirrup

#

By the way, I found the problem

#

Why sometimes the character was not displayed on the monitor

#

This is the culprit

#

Other players are clearly visible, but you can’t notice yourself, it doesn’t seem to be such a problem

austere stirrup
#

yeah, it doesn't surprise me

#

anything that implements a way to see yourself could mess with that

fair oyster
#

haphaphwhpwhap

#

Oh my god, I found a mod

#

Which just kills FPS

#

Without it 240
With him 150-190
On the same seed :3

#

Although it just adds HUD mapping for paint and TZP

#

Nothing special

austere stirrup
#

oh ouch

fair oyster
#

Already wrote xD

#

I remember when I saw this mod - I immediately started testing it and checking it

#

I haven't talked to Piggy for a long time, I've already made so many mods, I'm just shocked

austere stirrup
#

unity makes it very easy to make poorly performing code

#

this is interesting and all but this thread isn't a general performance-troubleshooting/song-sharing thread

#

gotta keep it at least somewhat on topic

fair oyster
#

Got it, I just got carried away

#

Cleaning up the trash

#

πŸ‘‰ πŸ‘ˆ

fair oyster
#

Is there any recommended config for this? @austere stirrup

austere stirrup
#

use defaults, they're there for if you have issues

fair oyster
#

OK

alpine ibex
#

does the mod description mean the player camera or bodycams from mods like headcams?

fair oyster
#

Head or Body

alpine ibex
#

no i mean like, this stops rendering faraway rooms in the players pov, right? not just through cams?

fair oyster
#

@austere stirrup we need you

#

My translator doesn't understand well xD

alpine ibex
#

cuz the wording's a little confusing for me on the description (it refers to cameras rather than povs or views)

glass juniper
#

yeah it also culls in the players' pov

#

we use "cameras" since that's the way that monitors/radars and the players see things, so that all the cameras that we can find all get the benefit

alpine ibex
#

ah that's awesome then, thanks!

#

will def help w 5 second long freezes

glass juniper
#

np!

#

cullfactory only stops rooms from rendering so if the 5 second long freezes aren't frequent, chances are there might be a mod or two causing that to happen, so that might require testing so you can disable the cause of the problem

#

if it's at the start of the landing then it might be the interior getting generated, which usually takes a bit to load and that can freeze the game for a while

willow garden
# alpine ibex will def help w 5 second long freezes

Just to help give some advice here, sticking LC onto an SSD really helps with performance, Skinwalkers used to give massive stuttering on a HDD but moving the game location to an SSD made it playable. Hoping this helps!

alpine ibex
#

sick sick! im not the one who freezes so i'll tell my buddy about this

alpine ibex
#

it happens everywhere for him; inside, outside, at the company, ship, etc

willow garden
#

Quick question if you don't mind, are you using Skinwalkers in your current pack? πŸ‘€

alpine ibex
#

we used to, but i took it out cuz we weren't getting any cool interactions out of it

#

currently we're using a semi-substitute in mirage (it does a lot more than just copy voices but yeah)

#

but i only have it set so masked characters mimic voices

#

also coil heads

willow garden
#

Yeah I was going to mention Mirage as it supersedes skinwalkers in both performance and quality, i'm trying to think what else could cause the massive lag spikes though. definitely a better IO speed could help, does your friend clean his hard drive? Like is his C: drive >10% free space?

alpine ibex
#

i don't know tbh, i could ask him though

fair oyster
alpine ibex
#

if you want i can send you the pack we're using currently if you wanna look into it

fair oyster
#

But there is no information from them

#

I'm waiting for a better version of Skinwalkers

willow garden
#

Use mirage, it's skinwalkers 2.0

fair oyster
#

mirage...

#

Is this similar to Skinwalkers?

#

He is better?

willow garden
#

Yep, think Skinwalkers but works better and has more features, very configurable

hoary light
#

Does this help performance outside the dungeon too? Been looking for performance mods since VR has been rough to use

regal ore
#

hello @fair oyster, do you have a list of the mods that you found out reduces fps relevantly?

fair oyster
regal ore
#

thanks!

fair oyster
#

The code itself

#

Or is he just interacting with something?

#

With generation - when it creates teleport traps

#

many options

odd shell
#

Maybe at the start of the game it could make some lag yeah

fair oyster
#

I said it's a little heavy

#

But it is not exactly

fair oyster
#

And on one seed for 5 minutes

#

That's why things like this

odd shell
#

Kinda weird

fair oyster
#

I load quickly

#

I run around the map and inside the complex

#

Checking some things

#

And I keep an eye on the load

#

It is hard to explain

alpine ibex
#

but yeah..idk abt what's going on with lethalthings but it causes an immense amount of fps drops inside the ship and in some exteriors

cerulean gate
fair oyster
#

I don't even look at myself from the outside

#

Still dropping FPS

cerulean gate
odd shell
#

Check to see if the lag still happens without some of the scrap

#

.
Personally, I think cookie fumo ended up lagging my game a lot, but I’m really not sure atm

alpine ibex
#

no yeah i ended up removing lethal things a while ago :P

#

we were mostly using it for boomba and the decorations since we didn't like the new things you could buy off the ship store

odd shell
#

Shame, I like boombas and teleporter traps

alpine ibex
#

yeahh i miss those

odd shell
#

I really do think it’s the scrap to be honest. I’m not sure what else it could be

#

I’m gonna try once I get home

alpine ibex
#

for me it was the scrap + the item shop stuff

#

cuz i remember when i disabled those on the config the fps went up a ton

odd shell
#

Ok that’s EXTREMELY good to know

#

Thank you so much

drifting axle
#

does anyone know if CullFactory works with Office yet?

alpine ibex
#

still got a bunch of fps lag at the company without the items in the shop btw, still don't know what that was about

river tundra
drifting axle
#

Nice

austere stirrup
#

I haven't heard anyone mention issues on it since 0.7.0 released

#

or probably 0.7.1 actually, I think 0.7.0 was broken

spring pawn
#

Does surface distance culling require a restart to take effect? I'm trying to mess with the values with LethalConfig with a very large open moon exterior and it doesn't seem to change anything πŸ€”

austere stirrup
#

currently it's set up in such a way that it only updates when you enter/leave the facility

#

should be easy to make it update upon the setting changing, though

river tundra
#

How’s CullFactory with Dantor’s Mental Hospital and PoolRooms?

austere stirrup
#

good, if my testing was any indication

river tundra
#

Sweet

austere stirrup
#

performance on Dantor's won't be stellar, since the portals are quite large, but it'll work and it should cull plenty still

river tundra
#

Also does cullfactory remove the lag caused by rendering the backrooms mod if it’s being used

austere stirrup
#

probably not

#

backrooms use their own way of generating the halls, so CullFactory does nothing to it

river tundra
#

Phooey, wasn’t sure if it worked on direction or sight

#

Ohhh

austere stirrup
#

perhaps someday they'll switch to LLL and make it generate using DunGen though, then it'll work

river tundra
#

If the mod isn’t abandoned

#

afaik it is

austere stirrup
#

ah yeah could be

#

maybe someone will make an alternative then

spring pawn
#

worked perfectly with entering / leaving, thanks!

austere stirrup
#

is it open source? I think it wasn't last I looked

river tundra
#

Mod hasn’t been updated in two and a half months and the creator hasn’t posted here in a month

#

Uhh I’ll check

#

The source is available but nothing stating it’s open source

austere stirrup
#

oh yeah, the "Source" tab on Thunderstore is a decompilation

#

anyways, I'm guessing that if Backrooms causes lag, it's probably doing something wrong other than just putting geometry in the world

#

so one would hope that if it's abandoned someone will remake it

river tundra
#

I’ve heard it’s a source of lag

austere stirrup
#

looking through the code, I don't see anything too suspicious, but I'm sure a profiler would give a better idea of the issue

#

really every modder should set up deep profiling and check if their mod is causing issues, but even I'm bad about that lol

#

I gotta do a pass on all of my mods soon

#

usually bad framerates are a CPU-side issue

austere stirrup
spring pawn
#

swank, thanks!

sturdy spear
austere stirrup
#

it is possible actually, hold on

#

it takes a bit of setup, but it works

#

you'll have to launch the game with the -deepprofiling flag, then connect to it from the Unity editor

sturdy spear
#

huh, sounds relatively easy

#

thanks

austere stirrup
#

(note that it's not 32-bit, you'll want the x64 binaries)

#

it also doesn't require an asset-ripped Unity project, as far as I know, you just have to open the profiler however you can

#

so an empty project probably works

sturdy spear
#

got it chief thanks

austere stirrup
#

yeah, hope it helps you out!

glass juniper
#

just released an update that fixes changing far plane distances in-game πŸ‘

stable mountain
#

Heyo! I have been directed here to let you know of a possible bug/compatibility issue with MoreInteriors. πŸ˜„

glass juniper
#

ah gotcha

#

for the time being you can add the dungeon generator for that interior into the fallback list in the config of cullfactory

#

you can check the plugin logs in the terminal for more info

pliant sundial
#

Oh that's cool

#

Thanks for letting me know about fallback list.

stable mountain
#

Heey my theory was correct! WOOT! It was the distance, cull factory does stop rendering faraway rooms. πŸ˜›

Neeto.

drifting axle
#

Seems like there's an issue with Castle from Scoopy's Variety Mod as well

#

This was tested with the latest version of EQM

#

On my testing I'm actually not able to find the error with just EQM, so I'll ask if they had other mods on

austere stirrup
# pliant sundial Oh that's cool

while you're here, I had meant to reach out, but there's a specific fix that allows you to avoid needing to be on that fallback list, the door socket sizes need to be set up to encompass the possible visibility into the neighboring tiles if that makes sense

#

although I'm curious, is that interior in the video the bunker interior? that was supposed to be on the list already thonk

#

I wonder if I made some oversight in the fallback portal size calculation

#

that room and the section that it's culling looks very odd to me though

pliant sundial
austere stirrup
#

well, it's a specific requirement of CullFactory, although currently it's not entirely efficient with how some of the modded interiors have been designed

#

I'm hoping that Batby can give us a method to get the size of a doorway attached to each tile type so that I can take the minimum of the doorways on either side of a connection, then we will have the most efficient possible portal occlusion culling hopefully

austere stirrup
stable mountain
#

No my statement has caused confusion. Other then the change you have reccomended. My config is set to default settings.

austere stirrup
#

and I assume you're on the latest version of CullFactory? the issue may actually still be present if so

#

unless something was wrong with our default list

#

if you happen to have your log saved from the session where that happened, I could say for sure, actually

stable mountain
austere stirrup
#

@pliant sundial the thing I wonder is whether that doorway's center point is perhaps offset from the actual horizontal center of that side of the tile bounds, that would cause the calculation of the fallback portal bounds to be incorrect

stable mountain
#

I went through probably 6-8 rooms in a line and then hit this boundary where the visuals were culled. I was very far from the front door.

#

It also happened in the middle of the stairway room.

pliant sundial
austere stirrup
#

this is basically what I mean visually

#

ideally, that doorway should be perfectly aligned to the brown line at the center of the edge of the tile bounds

pliant sundial
austere stirrup
#

the green rectangles are the doors?

pliant sundial
#

yes

austere stirrup
#

hmmmm

pliant sundial
#

the stairs is only tile set up this way

austere stirrup
#

so they would have been around here?

#

that shouldn't be an issue because I would expect that to consider the camera to be inside the tile and just render it always

#

actually, I guess it's on the right side instead, but it should still be considered inside

pliant sundial
#

so the area that is blocked is a blocker that dungen can remove or add in depending on if it connects it is called a scene blocker

#

the library tile in the mansion does it like this too but not as extended out

austere stirrup
#

which part is blocked? can you point it out?

#

do you mean the doorways?

#

@stable mountain just found the tile in question, and I don't seem able to reproduce the issue, was your CullFactory up to date?

#

the patch notes don't mention it, but you need to be on 1.8.1 or newer or you will have issues on Bunker

pliant sundial
#

was just decribing how the Generation work

#

is all

austere stirrup
#

ah, so the blocker you're talking about is a wall attached at the doorway

pliant sundial
#

i also have my own LODs for each tile and they adjust automatic for the distance after generation

austere stirrup
#

yeah, that fits my idea of how it works

pliant sundial
#

ye

austere stirrup
#

since the video was taken while inside the tile rather than standing outside one of the doorways like I thought it might be, I'm unsure what the issue might have been

austere stirrup
#

really what I need is a map seed to look at the exact generation that caused this

#

it'll appear in the logs if it happens again

stable mountain
#

let me see if I have it

pliant sundial
austere stirrup
#

yeah, I do wonder if it's your LOD setup

#

really, I would honestly not have the tiles pop out of existence based on LOD, that seems like it would be prone to issues given that the tiles are so large

pliant sundial
#

ye i have adjusted it so it works for most distance plus the dark inside hides missing tile renders

austere stirrup
#

yeah

stable mountain
#

I do not have the seed. But I do have more video.

pliant sundial
#

also doors you can't always see thur the other side since doors spawn in

austere stirrup
#

if the LOD is determined by the distance to the center of the tile, though, it might be a bit screwy

#

how are you determining what LOD scaling to use?

#

I assume it's not using visibility checks

pliant sundial
#

i adjust manually

austere stirrup
#

oh I thought you said you were setting it dynamically based on the size of the interior or something

pliant sundial
#

i am doing test before uploading to make sure the size is correct

#

also it is per tile not overall

#

so each tile is set distance after generation

#

so the same hallway can still be rendered in on view an culled in another view

austere stirrup
#

per tile is what I expected based on what I saw when you demonstrated it in-editor

stable mountain
austere stirrup
#

definitely doesn't hurt to have that context, but unfortunately it doesn't help me repro :(

pliant sundial
#

ok looks like i need to adjust stairs view maybe

#

since the center point is at the bottom of the stairs

#

where the culling is targeting

austere stirrup
pliant sundial
#

yes

austere stirrup
#

hmm

#

unless the value changes at runtime I wouldn't think that would be the issue

#

I should be seeing the same issue if the LOD distance is constant

pliant sundial
#

ye i will test

stable mountain
#

I have increased my video reecording length so I should be able to catch the seed next time. How do I make sure I get the log you need. Do I have a time limit before the log is deleted/can it overwrite itself? How many logs are saved?

pliant sundial
#

log is override each time game is launched and closed

austere stirrup
#

this will get you the last entry, though discord may not let you post it so you would have to upload it somewhere

#

the log file is in your profile folder, so if you go to Locations -> Browse profile folder -> BepInEx, there'll be a file called LogOutput.log that is the log for the last launch of the game

pliant sundial
# austere stirrup I should be seeing the same issue if the LOD distance is constant

@stable mountain Ok I might have been wrong about camera view and LOD

The LOD is based off the position of camera
not the directions of it
So while in tile it should render

So tested without cull factory it seems to work fine.
but with cull factory I need to test maybe it is like edge of camera need to see where it is culling the stair tile to test with in game stuff

austere stirrup
#

CullFactory doesn't cull based off the tile at all by default, it's based on what is visible through doorways

#

here's a simplified explanation of what it does:

  1. Find the tile the player is in, make it visible
  2. For every door in view of the camera:
  3. Make the tile the door leads to visible
  4. Check if any doorways are visible to the camera through previous doors
  5. Make the tile those doorways lead to visible
  6. Recurse to step 4
pliant sundial
#

The cull factory is based off camera what is directly in view

#

While LOD is based off where camera position is closet to the LOD group

austere stirrup
#

essentially, yeah

#

but the weird thing here is, since the camera was within the stair tile, it should have been caught in step 1

#

I don't know why it would have been culled

#

unless the bounds of the stair tile are incorrect, but your editor screenshot seemed to show those bounds and they looked correct

pliant sundial
#

Ye that is what I am wondering too

austere stirrup
#

if we can get a seed where this happens, I can attempt to reproduce it and figure out why it was doing that

last venture
#

To add to this, this seems new, as I have video of me wandering around the Bunker and that room extensively and never saw that

austere stirrup
#

it didn't happen for me either

#

I still kinda wonder if it was something weird with the LOD group

last venture
#

Zaggy may remember that from my bug report video showing the odd doorway clipping

#

This room was fine

pliant sundial
#

Yeah I could check no worries I am sure i can narrow down issue πŸ‘HYPERS

austere stirrup
#

I hope so, good luck

#

intermittent issues like this are a pain

pliant sundial
#

Lucky it is not game breaking lol just rendering

#

If it is problem can just have the people temporarily put bunker on the exclusion list for cull factory config override and work on fix

#

It will still be good performance with out cull factory occlusion since LOD still there

#

Had people report better frames with just that

austere stirrup
pliant sundial
#

But would be cool if we can get lethal to have 120 fps

#

Oh I didn't know that pepeD

#

Thanks for letting me know HYPERS

austere stirrup
#

point is that it doesn't solve this issue

#

yeah

pliant sundial
#

Yeah for sure

austere stirrup
#

it's a very odd issue though, I have no idea what could cause it other than messed up tile bounds

pliant sundial
#

Yeah me neither

austere stirrup
#

that kind of thing used to happen on the entry point for Sewer

pliant sundial
#

Oh Scoopy had that issue

austere stirrup
#

still can technically, but you have to try harder to get it to happen

#

the entry room's bounds don't actually block off the whole room, so you can have a room clip into it and get yourself trapped if you walk the wrong way

#

and there's no way to tell that it's happened before it does so you can just get screwed over

pliant sundial
#

Oh weird

vestal vale
#

@austere stirrup how be the upcomin update to fix the disappearing interiors lmao, been a while since ive been here

austere stirrup
#

well, from my testing it's all working fine, there's just the recent issue that SourceShard mentioned above

#

as of 1.8.1 it should have all been good

#

unless new interiors dropped

#

which if they do, please feel free to ping me and link them

#

the ones I've tested are:

  • Scoopys (Castle, Sewer)
  • Scarlet Devil Mansion
  • MoreInteriors (Bunker)
  • SCPFoundationDungeon
  • Dantor's Mental Hospital
  • Minecraft Stronghold
  • PoolRooms
    All worked, though my testing was brief
last venture
#

Mhm, I can confirm similar experiences for all but Dantor's and Stronghold, which I haven't tested

drifting axle
#

have multiple people had issues with the latest Bunker and CullFactory, or is it just one person?

austere stirrup
#

as far as I know, one person in one particular spot in one particular seed

#

it remains to be seen how common that issue actually is, and whether it's an issue with CullFactory even

drifting axle
#

ah, gotcha

pliant sundial
#

Yeah I haven't been able to recreate culling issue with problem either

vestal vale
#

since i THINK that also has an interior?

austere stirrup
#

oh interesting

#

I've heard mention of that but I thought it was just a moon

vestal vale
#

i believe you needa download it with github, not sure since im just waitin for the 1.0 release

austere stirrup
#

I see

vestal vale
austere stirrup
#

I'll see if I can look into that later

fair oyster
#

I have a question @austere stirrup

#

Mod for BackRooms

#

I noticed that CullFactory doesn't hide him at all, he sits and hangs out

#

Doesn't it give any load?

austere stirrup
#

probably, but there's not much I can do about that

#

how were you able to tell that it's not culled?

#

I hope nothing was visibly popping

fair oyster
#

And when I fell down

#

I saw that the room was constantly rendered

#

And is waiting for me

#

Although it was very high

#

Old screenshot

#

But about the same, only I was x2 higher

#

I just installed a patch on this mod and now you can only get there with critical damage, there’s a small chance, but it’s there

#

And somehow disable the rendering of these rooms - to increase performance, it would be good

#

Players love this mod, but the background load is not very...

austere stirrup
#

honestly, I'm not really inclined to add a feature that prevents it from rendering in the background

#

the mod isn't maintained afaik, and it should really be redesigned to use DunGen imo

#

once it does use DunGen, the culling will work automatically, at least once I make sure CullFactory knows how to handle multiple dungeon flows at once

#

as it is, there's no reasonable way to set up proper occlusion culling for the Backrooms area

#

my opinion is that in its current state, the Backrooms mod should handle culling the renderers and lights itself, since it alone really knows whether a player is inside there

fair oyster
#

But at the moment there are no analogues of this mod...

#

And I'm very upset

austere stirrup
#

well, I think you may have a better chance of getting what you want by asking the person making the patch for the Backrooms mod

pliant sundial
#

And have its own config

#

It was in addition to the bunker as a side one

fair oyster
#

I would test this project

pliant sundial
#

I will ask my friend who is the one that made the tile set but finishing up other maintenance tile set

stable mountain
austere stirrup
#

those three definitely should help (I hope)

inland mortar
#

pitching in, i tested Sewer, Bunker, Castle and SCP Foundation in my pack and experienced no issue across 3 seeds each

#

Sewer was on March/Vow, Bunker on Assurance/Offense, Castle on E Gypt/Atlas Abyss, SCP Foundation on Titan

fair oyster
#

Is there any information from Dantors_Mental_Hospital and CullFactor?

#

It’s just that Dantors_Mental_Hospital itself is not optimized

#

Either CullFactor does not understand what needs to be rendered and what to hide...

spice jackal
#

works fine for me

fair oyster
spice jackal
#

yes

fair oyster
#

How many mods are in your build?

spice jackal
#

145

craggy dove
#

hospital is unoptimized atm, someone already told you that in the other thread

fair oyster
#

I just always want to think that the reason is something else...

fair oyster
spice jackal
#

:3

fair oyster
spice jackal
#

oh boy!

fair oyster
#

All mods are not based on mechanics, that’s why I’m checking...

austere stirrup
#

there is an improvement to make in the portals to get it to be more efficient, but that requires an LLL API that doesn't exist yet

#

but even when that's available, I only expect that to help by a little

#

it's always possible to make it render enough that it drops the frame rate

fair oyster
#

I think I already talked about this.
The more the assembly consumes RAM (for example, installing most of the popular moons from LLL and LE), the FPS drops significantly. What could be the reason? @austere stirrup (Just interested in your guesses)

austere stirrup
#

could be any number of things

#

and I honestly don't know too much about the behavior of RAM under pressure

fair oyster
#

Well, I have 2 assemblies, one with popular moons - the other not

#

And the difference is such that minus 1/4 of the total FPS

austere stirrup
#

it could just be loaded assets that are perhaps unrelated to the framerate drop, or it could be that things are allocating large pieces of data in the code that they depend on and causing a lot of cache eviction

#

I would tend to doubt that it's related to RAM usage by the game

austere stirrup
#

I don't know if anyone's done it already, but if not, I guess I should probably write a guide to set up profiling in the Unity editor...

#

fumiko also has used dotTrace, but that's non-free unfortunately

#

I'm betting that a lot of mods that cause performance problems have pretty easy solutions that a profiler would point straight to

fair oyster
#

It's a pity that little is known about this...

stable mountain
#

Had a lockup while landing on Kast. All players froze and had to relaunch.
Edit: Save was also corrupted.

stable mountain
#

018dcdd3-0189-f0fd-89b4-9db48ffad9a5

fair oyster
stable mountain
stable mountain
stable mountain
austere stirrup
#

there's a solution I or fumiko can hopefully put together soon that will at least prevent this from causing the screen freeze

#

or two, actually

#

the likely cause is that some mod deleted an object attached to the interior generation

#

ideally no mods would do that, they should really deactivate objects instead, but there's really no reasonable way to prevent it

austere stirrup
# austere stirrup or two, actually

@glass juniper the (three actually) solutions we could try are:

  • Just brute force null check every renderer and light in the interior to prevent errors, but we'll need to profile this to see if it impacts performance significantly. If it does, perhaps we could use a transpiler to make this optional at runtime with no perf impact.
  • Move portal occlusion culling into LateUpdate(), taking a union of all cameras' visibility. This also needs profiling, may be faster than the current approach tbh. It would prevent errors in the culling from causing the camera freeze, so that the game doesn't have to be forcibly exited, but obviously it would still error spam and cull incorrectly.
  • Add a diagnostic mode similar to the feature I added in OpenBodyCams to optionally track object destruction and check if those objects or their children are within the tiles. This would be useful for determining the mod conflict.

Pinging you here in case you can beat me to this, since I'm in the middle of a few other things that I don't see myself finishing too soon

hollow timber
#

I would like to report an issue even tho I'm not sure if there's a way to fix it because of how the mod works, but I noticed that the turret's laser can be seen through walls when using CullFactory.

It is especially visible with the mod: "TurretAlwaysLaser" (https://thunderstore.io/c/lethal-company/p/tolstj/TurretAlwaysLaser/)

Would there be some kind of workaround or way to have the laser blocked by walls even if they're not rendered to the client somehow?

austere stirrup
#

for the moment, the only "solution" is to change the culling mode

#

I'm busy with another big performance project at the moment, so I don't have time to write the code we need to track all the dynamic lights inside the facility, but if I do, I believe the turrets' lasers should be covered by that

#

basically, at the moment, portal occlusion culling only knows of static lights in the scene, so it can only make walls visible that are supposed to block those static lights. however, since that doesn't include dynamic lights like flashlights and the lamp item, when those are in adjacent culled rooms, the walls that would block them are culled and they shine through the one-sided mesh of your current tile

hollow timber
austere stirrup
#

unless you were on version 1.8.1+, I would expect that not to be the case with portal occlusion culling

#

and I believe depth culling also in that version, but I'm not entirely sure

hollow timber
#

Got it, I'll give it a try right now then to check!

hollow timber
austere stirrup
#

yep

#

note that you may be able to see the culling happen visibly with that setting, but with a reasonable tile depth it shouldn't let lights shine through and might not be visibly popping

hollow timber
#

Got it, thanks! I'll give it a few playtests right away then!

craggy dove
austere stirrup
#

an update for PathfindingLagFix

#

currently in the process of determining its viability so not sure if it's going to actually be released

craggy dove
#

neat, hope that goes well for you

austere stirrup
#

it's intended to allow the heavy pathfinding calculations that the AI do at regular intervals not to affect the frame rate as much, but currently I still seem to be causing a 1ms hit per frame while those are running

#

ideally it would have close to no effect on the frame rate, but

#

it's tricky, I gotta profile and find out what's affecting it the most, it's a very time consuming process

#

also unsure if it's stable in the version of unity that zeekers used

#

we shall see

stable mountain
austere stirrup
#

yeah, we can add an option for that like in OpenBodyCams if we don't find the other options to be viable based on their effect on performance

#

that will be an opt-in thing, though, because the only way (that I know of) to track that is to check for that every single time something in the game is destroyed, and the dungeons can contain a lot of objects we would have to check against

#

it could cause inconsistent frame times to do that

stable mountain
austere stirrup
#

right

#

if whatever we choose isn't a blanket fix that will definitely be a priority

#

but again, it can't be on by default unfortunately

stable mountain
#

Hey that is all good. That is what test settings are for.
Thank you again for your assistance. I wish you error free testing on pathfinding fix. πŸ˜„

austere stirrup
#

lol thanks, I'm sure it won't be unfortunately

#

multithreading is a fun thing and manual memory management makes it even more fun

#

the good thing is that I'm very persistent

stable mountain
austere stirrup
#

oh I just meant the PathfindingLagFix v2 thing

#

(I'll reply to your DM and explain stuff about it in a bit, it'll take a while to type I think)

ripe crane
#

oh in that message specifically i was curious what you meant by tracking all the dynamicl ights inside the facility

austere stirrup
#

oh, that, I see

#

well, I need to be able to determine where all the lights are in the interior that aren't part of the interior itself

#

might be very tricky to get that working, though, it's already been a bit of a pain to do stuff like that in OpenBodyCams and it'll be less visible when something goes wrong in the culling

#

obviously I could just find all Light components in the scene, but that would be disgustingly slow

#

fumiko used to have a couple patches that tracked what items were inside to determine where radar boosters are, I would need something similar

#

I could potentially make it automatic by injecting into every class in the game and checking when fields are set saying that something is inside or outside the facility, but I'm not a huge fan of that idea since it's probably not terribly fast to run a transpiler over so much code

#

might be the best option for compat though unfortunately

ripe crane
# austere stirrup well, I need to be able to determine where all the lights are in the interior th...

Honestly a FindObjectsOfType<Light> before and after dungeon generation isn’t as big of a sin as you might think but if you wanna be super massive big brain you might actually be able to patch Light’s OnEnable class right before dungeon generate, have it add itself to a list via a singleton then unpatch afterwards (or just build in a bool check for the entire game ig its probably not that much of an added hit

austere stirrup
#

oh we're already doing GetComponentsInChildren<Light> for tile contents

#

I'm taking about items you can bring into and out of the interior

#

if you mean doing that to catch all the lights that could enter, that would be the place to start yeah

#

but I still have to track things that are bought or otherwise spawned in unforseen ways by mods

ripe crane
#

oh for that i guess we’d go back to implementing that like couple dozen patches to make the inside/outside y position check more dynamic then just compare y pos on any light component gameobjects?

#

wait no

#

Bigger brain

austere stirrup
#

hmm? I'm not referring to an issue with lll

#

y check shouldn't be necessary in CullFactory since other mods ought to set the flags correctly or other things won't work right

ripe crane
#

You could totally get away with a on trigger enter box around the entire dungeon with no collisons valid except for all light components

austere stirrup
#

oh that's an idea

#

that certainly sounds nicer than an all-encompassing patch

#

I haven't messed with collision much at all but I would imagine I can just scale a cube around the union of all tiles' AABBs and then change some things with the collider?

#

or are those not even colliders, I actually don't know

ripe crane
#

more or less yeah

stable mountain
#

I love reading this and having only a coloring book level of understanding. Big brain people using big words.

dusky condor
#

currently dies with lc_office (only cullfactory and lc_office used (with dependencies))

#

~~ill also @glass juniper ~~

odd shell
#

yeah, were trying to figure this out, erm, is there a way to keep cull factory from working on certain interiors?

#

actually dont answer that, i havent tried everything yet :P

dusky condor
#

checking if it does the same to poolrooms

glass juniper
#

currently cullfactory assumes all lights and doors in a room will always persist and doesn't get destroyed so if that does happen it throws errors

dusky condor
#

you are unable to enter

odd shell
#

that shouldnt happen upon just walking into the interior though, no?

dusky condor
#

it seems to be an issue with 1.1.17 of office

#

since it worked fine today with .16

austere stirrup
#

hmm, interesting

#

I wonder what changed

dusky condor
#

seemingly just this

austere stirrup
#

yeah, nothing there immediately stands out to me as a reason for something in the dungeon to be destroyed

#

I can't look into it for a while though

#

we probably should have a blacklist for interiors that shouldn't activate culling though

#

we'll need it for Hadal

odd shell
#

that would be useful! Tho why would hadal cause issues?

austere stirrup
#

because you can see through the walls

#

there's nothing to cull

odd shell
#

direction-based culling isn't something this mod can do yet though, right?

austere stirrup
#

what does direction-based culling mean?

#

you mean camera frustum culling?

odd shell
#

As in culling everything off-screen, sorry, dont know terminology too well

vast hedge
austere stirrup
#

Unity does that automatically

vast hedge
odd shell
austere stirrup
#

Unity does frustum culling automatically better than any mod script could

dusky condor
#

(with just cull factory and office)

odd shell
#

So this mod tries to cull the stuff behind walls that are front of you

austere stirrup
#

portal occlusion culling does, yes

austere stirrup
#

I might be able to sneak a look at it tomorrow morning but probably won't be able to fix it

#

maybe I can shoot Piggy a message about whatever's causing it though

#

although obviously fumiko could beat me to it too

odd shell
#

looks like this might be the reason

austere stirrup
#

you mean the fix for that caused the issue?

#

it's possible

glass juniper
#

a hacky fix i can do right now is to exclude tiles from culling operations once we find a null reference during visibility checks

austere stirrup
#

should be fine to just add a null check for each renderer tbh, but we may want to print a warning once so that people can be aware it's happening and have an avenue to remove the check later if it turns out to be a perf bottleneck

glass juniper
#

yeah, that's probably a use case for the whitelist too

#

null checks are skipped if a dungeon generator is considered safe

#

but we'll visit that later, i'll see if i can get the null check working first

sturdy spear
#

@austere stirrup someone said earlier that cullfactory assumes all lights and doors in a room don't get destroyed. Does that mean the door script shouldn't be destroyed or not even the door model can be destroyed?

austere stirrup
#

script as in a component? as long as it's not a Renderer or Light being destroyed it's fine

#

I would tend to think that things that are being destroyed should be deactivated instead, but I don't know if there may be reasons for using Destroy() instead

sturdy spear
#

Ahh so if I just deactivate the renderer gameobject, nothing will break with CF?

austere stirrup
#

yeah, that should be the least problematic

#

Renderer.enabled is no biggie either, but Light.enabled will get screwed with by CullFactory (vanilla just uses SetActive() for those)

#

by using those fields I'm hoping to avoid having to save/restore states

#

doing that in OpenBodyCams was a bit of a pain

sturdy spear
#

Understandable understandable. For what i will be doing, I probably would have destroyed the renderer

#

Now, I will just not

austere stirrup
#

NODDERS sounds good

#

I wish it wasn't tricky to make it Just Work ℒ️ but it's (presumably, I haven't measured this yet) faster if we assume nothing will change

#

null checks might be cheap enough for it not to matter though, we'll have to see

#

it's another call through to native in a hot loop though so I'm wondering

sturdy spear
#

Worst case, give me a public function to remove renderers from whatever collection you are storing them in

#

Not necessary at all yet though

austere stirrup
#

so you forsee it being an issue disabling instead of destroying? although an API like that doesn't sound terrible, it would probably have to iterate over every renderer in every tile in our cache when you call it which could be kinda slow

sturdy spear
#

Oh I will be disabling them not destroying then. Sorry for the confusion

austere stirrup
#

each tile can have renderers from another tile referenced in it so there's not an easy way to know what collections a renderer willb e in

#

right, but you said you would like an API

#

I'm not opposed to it, but abuse of such an API could cause some pretty ugly frame times

sturdy spear
#

Oh if it's too much work then it's not necessary. It was the worst case. However, I would call it once so I don't see it causing frame drops

austere stirrup
#

right, that's why I wouldn't be too opposed

#

at least given that people would have to create a soft dependency to do that I'm sure it wouldn't be common

#

not sure if it's worth the effort without a good reason though

sturdy spear
#

Well you already argued the obvious fact that disabling the gameobject is much easier for everyone involved so ya, its probably not worth the effort now

#

But it looks like my mod won't break with yours. That's what I wanted to make sure of πŸ‘

austere stirrup
#

yeah, sounds good

#

hoping that can remain the case for other custom interiors but it does feel a little fragile at the moment

#

the camera callbacks are useful but also a footgun since they can freeze the game visually

glass juniper
#

just tested on the latest lcoffice version with null checks in place, it does work

#

i'll go ahead and test out the performance difference before and after this change now

glass juniper
#

With null checks: 251.8254ms / 10000 camera renders
Without null checks: 247.6951ms / 10000 camera renders
Difference: -1.67%

Setup:

  • Moon: Titan
  • Seed: 1
  • Dungeon: LCOffice (v1.0.16)
  • Office Length Override: 20
  • Benchmark taken while standing still after entering through the exit
toxic oxide
#

i love it when the dungeon doesn't render so i can see where the apparatus is (latest Office on 0.8.4)

toxic oxide
#

from testing, which interiors should go where?

austere stirrup
austere stirrup
#

it does render when you enter it though right?

#

oh wait I misread I think

#

if you saw through the upper floor door that's a known issue with LC_Office

toxic oxide
#

not the upper floor door

#

took a fire exit to a lower floor

austere stirrup
#

oh interesting

toxic oxide
#

could see through the walls when moving out the room of the fire exit

#

and found the apparatus thanks to that

austere stirrup
#

I'll have a look later but if you want to (hopefully) ensure that it's working fine you can see the dungeon flow name in the logs when it's being generated and add that to the "use" list

#

should be Office[something]Flow I believe