#Loadstone

1 messages · Page 4 of 1

crisp relic
#

which two rooms are connected like that?

#

is it two maze rooms?

hushed zephyr
#

idk the name of the room, time do describe it again perceive

#

there's a room that have a big pipe at the middle of it, this room is similar but without the pipe, it's like a intersection

#

but here, it combined 2 of those intersections, so it was a EXTRA BIG room

#

something like that

#

but i think that's a vanilla bug, i remember seeing something like this the first time i played the game without mods

#

that's very rare

crisp relic
#

the diagonal room?

#

ahh, if it's two diagonal rooms that'd make sense

#

when zeekers added them, he forgot to set up properties that define what they can and can't connect to

#

so they generate in places that the rest of the maze can't

#

like
iirc, the maze can't generate directly next to a locker room under normal conditions
but the diagonal maze can
so you'll often see them connected to its doorways

hushed zephyr
#

that makes sense now lol

crisp relic
#

(also she/her btw :3)

hushed zephyr
#

sry, won't happen again benice

crisp relic
#

thank :3

mystic shoal
#

ok no issues it seems on the new version

crisp relic
#

nice

marble scaffold
#

this is mostly unrelated to loadstone but i figured i'd ask since you might have the best grip on dungen

#

is there a good way to predict the likelihood that a particular room will spawn given a dungenflow asset

#

to be more specific, i'm interested in calculating the likelihood that an apparatus will spawn in the factory given a particular interior size

#

it seems like the apparatus is guaranteed to spawn as long as one (or both) of two specific rooms generate in the factory

#

and i assume having a larger factorySizeMultiplier increases those odds

crisp relic
#

I'm pretty sure it's possible, although it gets hairy since there's a bunch of animation curves and branching paths at play
You are correct in that, if one of the two "apparatus rooms" spawns in, you are guaranteed to get an apparatus. The apparatus is a "global prop" that's guaranteed to spawn in if it has the opportunity to

#

I seem to remember that DunGen pre-chooses which tiles to generate, then just places them down, so that might help a lot

marble scaffold
#

i see

crisp relic
#

I have to say
It really bothers me that
Even though the minimum apparatus spawn count is set to 1
It won't spawn in without one of those rooms
I feel like a minimum of 1 should guarantee that it spawns in

marble scaffold
#

it does make me wonder a bit

#

if that's one of the reasons the elevator wound up needing to be scrapped

crisp relic
#

There is a way to force it

#

DunGen has "tile injection rules" which let you force certain tiles to spawn, and force them to spawn in certain places

#

They're quite flexible with what they allow you to do

#

I've messed around with them before to force apparatus rooms to spawn

summer jackal
#

best bet is to ask lady raphtalia about that stuff

crisp relic
#

yeah
she's also pretty knowledgeable about DunGen

crimson gazelle
#

having this issue too

crimson gazelle
crisp relic
#

That issue is a vanilla issue to my knowledge
If it happens again, could you send the logs? I just need to know the moon and seed really tho

#

Full logs might help too tho

crimson gazelle
#

also im talking abolut the desynced interior layout

crisp relic
#

m

#

Are you on 0.1.14?

crimson gazelle
#

yes

crisp relic
#

Interesting

#

Try disabling DunGen optimizations

livid kelp
#

That interior was what caused those issues for my group

crimson gazelle
#

and i think that got fixed

crisp relic
#

Could you send a code for your mod pack?

livid kelp
#

Diversity can do it

crimson gazelle
#

it fixed after removing centralconfig dw

livid kelp
#

Ah okay good

#

Yeah don't use Central Config

crisp relic
#

oh yeah
I've been informed it can be problematic

glossy ledge
#

kinda hard to not use a mod that is the only viable option for doing half the things it offers

#

floof probably has an interior related setting enabled

crimson gazelle
#

i think the new update fixed it

#

havent had any desync issues with centralconfig since the update

livid kelp
#

But that's me

crimson gazelle
#

im playing with a friend right now and after 2 quotas i havent noticed any issues regarding desyncs

#

even with interior stuff enabled :)

crimson gazelle
crisp relic
#

Discord keeps removing this caht from my active forums because I'm not speaking here enough xD

summer jackal
#

edit the channel to be 7 days instead of the default 3 if ya havent already

#

:p

crisp relic
#

oh, nice

atomic gale
#

Hey
Is loadstone safe to use ?
I've seen multiple reports saying it could cause desyncs on dungeon generation 🤔

atomic gale
#

Cause I'm using like 17 modded interiors

glossy ledge
atomic gale
crisp relic
atomic gale
#

Thanks !

primal carbon
#

I KNOW UUU

#

Ur the person that’s credited in the videos of ai behinds monsters videos

#

Bro I love those videos, it’s so cool

#

Watched every one of them

crisp relic
#

Yup

primal carbon
#

Sick

fluid turret
#

I wish i could work on those Trolley

mystic shoal
zinc bay
#

Yes

mystic shoal
zinc bay
#

It's loading faster, and no unnecessary dark screen while loading

crimson gazelle
#

is it broken in v60?

river kelp
#

works on my machine TM

crisp relic
#

I haven't actually booted up v60 yet to check

median mantle
#

works fine yeah

umbral dawn
#

Haven’t had any issues

hushed zephyr
#

I was wondering

crisp relic
#

?

hushed zephyr
#

If we could have the new elevator jingle from LC playing while loading the level

#

and if it would really need the LCSoundTool

crisp relic
#

oh yeahh
I forgot about that
I should change the default jingle to use that

#

if I did that I wouldn't need LCSoundTool

hushed zephyr
#

it would be very cool

hushed zephyr
#

elevator jingle when

shadow ridge
hushed zephyr
#

doesn't it need the LCSoundTool?

crisp relic
#

it doesn't

#

I'm only using LCSoundTool to load the audio files

hushed zephyr
#

then, if i replace the LoadstoneLoading.ogg with the elevator jingle without LCSoundTool it will work fine?

#

i will try

crisp relic
#

yeah that would work

#

it just needs to have the exact same file name, including the .ogg extension

shadow ridge
crisp relic
#

yup

#

should work

crisp relic
#

I can detach myself from LCSoundTool to play the elevator jingle instead later on so that Loadstone doesn't depend on it anymore

quasi nest
#

Any tips or settings I can use for reducing the freeze that happens happens after returning to orbit from a day? Or any idea what might be causing or contributing to that? That period before the "days remaining" message shows up stops voice chat and basically hard freezes the game for 10-20 seconds and is very annoying.

#

I also have some buddies who have been experiencing hard crashes during or soon after returning from orbit and I'm not sure where to start looking in terms of the issue.

#

I know Loadstone deals more with level generation but it feels like the issue is in a similar vein and I wanted to get some insight on what causes that problem

crisp relic
#

10-20 seconds is highly unusual
I get a small 0.1 or 0.2 second lagspike, but not multiple seconds

#

What mods are you using?

quasi nest
#

Far too many hah. Which is why I was hoping to get pointed in the right direction. My modlist is fairly organized by general type, with just planets and interiors at the bottom, but there is a lot.

#

10 - 20 seconds was definitely a bit dramatic, maybe 8-12 seconds.

crisp relic
#

I'll check it out and pop it open in the unity debugger if I can recreate the lag

hushed zephyr
#

btw Diversity and Immersive Visor aren't working properly

#

you should use only BetterEmotes, doesn't need More Emotes patch

#

Celestial Tint can be kinda laggy on orbit

#

HookGun is straight broken, you shouldn't have it also

#

too many mods agony

quasi nest
#

What's going on with Diversity and Immersive Visor? I know IV is depreciated but I've never had any issues with it functioning. And Diversity has seemingly been working so far since adding it

#

I was wondering if the lag spike was Celestial Tint related. The ones who are crashing in orbit have 8gb. I assumed it was RAM related but I will say we have had Celestial Tint for months now and the crashes are more recent.

slender flare
#

as the base game evolves and some of the mods update to keep up with it, other mods are left behind. this leads to incompatibilities between mods updated and mods unupdated. an example of such (which instigated IV's deprecation) is the samurai sword on Seichi. when it swings and kills someone with IV functioning, it'll repeatedly play one of IV's damaging sounds and prevent the killed player from voting to leave. since the sword results in a Barber snip death, the same might happen should someone get cut in half by one

zinc bay
#

What does it mean, when the seed red is?

crisp relic
#

?

zinc bay
#

The numbers, red font underneath the normal color font

crisp relic
#

where

zinc bay
#

On the seed message

#

when loading moon

crisp relic
#

it should just be the seed

#

anything else is added by another mod

zinc bay
#

It is often red, idk why

zinc bay
crisp relic
#

ah
I think that's just a visual effect from how zeekers renders it out

livid kelp
#

@crisp relic Have you considered listing the Nightly build as deprecated since Stable and Nightly are 1:1 atm?

#

Matty does that with his Experimental mods when his Stable and Experimental builds become 1:1 lol

#

then undeps when he needs them tested

oblique oyster
#

said feature isn't on the stable branch since it is pretty buggy

livid kelp
crisp relic
#

the code for object pooling is entirely absent in the stable build, not just the config option. I've set up build systems so I can have nightly-only features only exist in nightly builds

livid kelp
#

Ahhh got you

#

I will say the Nightly build also still performs a bit smoother for me lol so I'll stick with it

#

XD

crisp relic
crisp relic
livid kelp
#

Could have just been rng if faster load cached anything

#

Does Loadstone have an asset bundle?

crisp relic
#

nope

livid kelp
#

Ah well I also did update Mirage so I'll chalk it off to rng

#

lol

crisp relic
#

m

#

I might add an asset bundle at some point, since it could be nice to show loading progress more clearly in-game, particularly for moons or interiors that might take a while to load

livid kelp
crisp relic
#

fair

livid kelp
#

Take Fray when it was temporarily bad for example

#

lol

#

If anything your mod is an essential mod that fixes so much

#

lol

crisp relic
#

I have seen some pretty poor performance on moon loads sometimes though
particularly in very large lobbies (like 40+ people), it can take minutes sometimes to load in

livid kelp
#

Yeah fair

#

But that's more likely due to player count

#

lol

proper carbon
#

oh adi

crisp relic
#

yes?

proper carbon
#

fuck ngl i forgot you existed im so sorry

crisp relic
proper carbon
#

i got proof of concept scene hotloading working !

crisp relic
livid kelp
crisp relic
proper carbon
#

i gotta refactor a ton of stuff so putting it off rn but

#

w/ just wesleys moons installed in orbit goes from 4gb ram usage to like 2gb

#

w/ 100 moons 11-12gb -> 2gb

#

it's goated

crisp relic
#

damn

#

LLL W

proper carbon
#

will require people to bundle their stuff in 3 bundles rather than 2 but

#

worth

crisp relic
#

worth

#

:3

proper carbon
#

(basicially unity shockingly does not freak out of you decide to register a scene to it's managers then unload it, aslong as it's back when it goes looking for it)

#

im guessing cuz it's all string based

crisp relic
#

ah, nice

proper carbon
#

in theory we could do it for dungeons aswell but tbh the filesize to time to load the bundle ratio seems like it wouldnt be as worth

crisp relic
# livid kelp It's not a feature that's been being asked to be tested for a while though and t...

speaking of
I might explore some alternatives
object pooling has just proven to be kinda buggy in general, and I have no way of guaranteeing compatibility with interiors that have custom scripts
but
the biggest performance improvement from object pooling comes from not re-calculating mesh data in the facility interior
so I can get most of the performance uplift without the mod incompatibility and bugginess just by caching that data

livid kelp
#

I wonder if Mineshaft could also get the same treatment

proper carbon
#

I also found an interesting github repo yesterday that seemingly successfully fucks with unity compiled asset files directly

#

which has some super interesting implications

#

but it's in c++ so hard for me to read

livid kelp
#

Mineshaft is kind of laggy when it generates at larger sizes

crisp relic
crisp relic
livid kelp
#

Oooooh

proper carbon
#

mineshaft doesn't afaik

crisp relic
#

ah

proper carbon
#

Zeekerss dropped probuilder during mansion

crisp relic
#

I did notice that

livid kelp
#

I wonder what Mineshaft is using?

crisp relic
#

also, doesn't he use probuilder for the outside concrete structures for fire exits?
though, I dunno how much performance that eats up

livid kelp
#

it's the most unoptimized of the vanilla interiors, and it's only noticeable when it generates large

crisp relic
#

I think it's because it has multiple sections, those being the cave section and the "facility" section
and those generate in distinct blobs
so it takes longer to calculate that
it's prolly something I can improve

livid kelp
crisp relic
livid kelp
#

XD

#

fun

crisp relic
#

oh also
I don't remember who it was
but thank you to the one person that donated to my ko-fi a few days ago :3

tall spear
alpine silo
crisp relic
#

perhaps
I think I'll try the performance tests on Mansion and see the difference there, since Mansion doesn't use ProBuilder meshes
it'll give me a good idea of what kind of performance uplift could be expected in a relatively simple usecase

alpine silo
#

is it mostly an improvement for interior spawn times? and does it require the same interior to generate again for it to actually be effective?

crisp relic
#

currently, it stores all spawned rooms internally, and when a room is spawned, it'll use one that was stored previously instead of spawning a new one, if an old room is available

#

so yes, it does require the same interior to generate a second time before it does anything

#

the only thing it affects performance wise is interior spawn times, though I could replace other object instantiation calls with the same object pooling instantiation method, and it should also work

#

right now, the biggest issues are that I need to reset all scripts in reused rooms, and I need to modify dungen to only deactivate objects, rather than deleting them entirely (which it does for unused doorways and such)

#

I'd 100% need to add an interior blacklist, since custom scripts attached to rooms would be likely to malfunction, unless there's some generic way to reset a script that I haven't found documented

alpine silo
#

hm, I wonder if there's some IL hack you can use for that to call the constructor

#

the constructor should set all the fields afaik

#

not sure if you can do that without using newobj

#

I am curious what goes wrong with CullFactory though, is it because the CullingMethod gets brought back from your object storage?

#

or is it that it doesn't know how to fix the visibility after CullFactory hid things and a moon unloaded?

#

I guess maybe you only know that it has issues lol I'll have to take a look at some point

proper carbon
#

@crisp relic if you ever get back into messing with optimisation stuff i found a tool that possibly could let us mess with the games asset files directly which can have some interesting implications 👁️

alpine silo
#

👀

scarlet cradle
#

I have substantial frame drops whenever I'm eaten by a forest giant. I will say that I lowered the dungeon target frame time to 1 millisecond to ensure the game doesn't stutter whenever things load in.

#

It also affects the malfunction mod (I think). I always see frame rate drops when the effects are active. I do use the "spread over multiplie frames" option, but I'm just trying to figure out why it's like this. I love the mod, as it helps improve my frame rate, but there are moments where I have no headroom; I'm running the game at 120 fps. I've guaranteed the game will always run at 60 fps (at least on my computer), but maintaining 120 fps has been tough.

crisp relic
#

Loadstone won't be affecting runtime performance
the optimizations it uses are only active for the few frames before the ship doors open

scarlet cradle
#

Any mods you know of that your mod has compatibility issues with?

crisp relic
#

nope

livid kelp
#

Causes a ton of SpawnedNetworkException errors but that's the fault of that mod

median mantle
#

have you ever taken a look at the long pauses after the end of a round?

livid kelp
#

It only happens for the host too

#

Cus only the host has their save file written to

#

It's been a thing since V56 cus the game saves a lot more to the save file than it used to

#

That wouldn't be something for this mod to optimize

#

Might be more down the road for someone like @alpine silo or @halcyon sable to look into optimizing

crisp relic
#

I could look into it at some point, I just haven't been too focused on modding recently

#

I have discovered Terraria and gone down a rabbit hole :3

halcyon sable
#

Its probably more for LP to-do that

halcyon sable
livid kelp
#

Cus I really wanna fix it

halcyon sable
#

iirc buttery fixes

livid kelp
#

Do you know why?

#

@marble scaffold Can you please look into fixing that?

#

🙏

marble scaffold
#

i dont know what's causing the issues

#

iirc all i save to the file is the items in the dropship

livid kelp
#

Config options are always goodge NODDERS maybe default it to false as well

marble scaffold
#

i would be surprised if it's causing problems because it should have significantly less impact than vanilla's routine of saving scrap

livid kelp
#

and add the warning that it causes a freeze when the game saves

marble scaffold
#

should be a drop in the bucket in comparison

livid kelp
#

True

marble scaffold
#

it just writes a list of integer values to the file

livid kelp
#

Maybe you can test and profile it

livid kelp
livid kelp
marble scaffold
#

if it can be established that it's definitely causing performance issues, i can make it configurable, but i dont want to add configuration options that are unnecessary because huge configs are unwieldy and bad user experience

#

so unless it is definitely established that it's causing a problem it is just going to remain enabled by default

#

huge configs are unwieldy and bad user experience
my opinion, anyway

livid kelp
#

I can only imagine it may be that

#

But ig we'll know more if @halcyon sable has more info

#

I also don't like huge config files cus they cause ridiculous ram usage in vanilla

#

LethalPerformance fixes that

marble scaffold
#

the only savegame patch in butteryfixes is a try+catch block that writes a single int (if you ordered the cruiser) or a list of ints (if you ordered items)

livid kelp
#

Yeah so if it's not that I just wonder what else in the mod might do it

marble scaffold
#

vanilla also has a try+catch block and writes way more to the file

#

like i said, it should be a drop in the bucket, as far as i can tell

livid kelp
#

Yeah, and like I said I know the freeze never happened on V50 and started with V56

#

so I wonder if it's due to changes with how the game saves possibly

marble scaffold
#

could be vain shrouds

#

vain shrouds save a bunch more information to the file

#

2 new integers and a list of integers for each planet (vanilla or custom)

#

v56 also added warranty as a saved boolean

livid kelp
#

This happens even without YesFox though but maybe

marble scaffold
#

weed data is still saved

livid kelp
#

So it could just be your mod is adding some slight overhead maybe?

marble scaffold
#

maybe. i can't pretend to be an expert

livid kelp
#

That's usually how I'm used to DiFFoZ describing stuff like this

marble scaffold
#

but i am at least a little doubtful that there would be significant improvement just from disabling my patch

livid kelp
#

lol

marble scaffold
#

because vanilla does the same thing and it does it to a way larger extent

livid kelp
#

I mean since it was your mod specifically listed though it's something

#

lol

#

Just dunno what

marble scaffold
#

well, it's probably true it is doing some alloc

#

iirc trycatch is +overhead

livid kelp
#

Yeah

marble scaffold
#

and depending on your disk, writing to file can be slow

#

zeekerss doesn't utilize es3 cache

livid kelp
#

For me the freeze is pretty short but yeah it's been annoying

marble scaffold
#

so every single write command writes directly to disk and it happens multiple times in quick succession

tall spear
marble scaffold
#

i was thinking of experimenting with that actually

#

im pretty sure you can just change the es3settings to use cache and then add a postfix to write to file

#

and it could have a pretty significant performance improvement

#

who knows

scarlet cradle
#

Is the Inverse Teleporter only usable once the dungeon has been fully generated? There was a weird case where I was dealing with an invisible spider, though I assume this was either because I set the Dungeon Target Frametime to 1ms or there's another mod that's causing it. If you could explain the rammifications of setting said frametime to 1 ms (besides longer load times), that'd be appreciated.

crisp relic
#

setting the frametime to 1ms will just increase load times. It could also cause issues if other mods inject functionality at off times

ashen crane
#

From my experience brutal company causes the invisible monsters

crisp relic
#

as for the inverse teleporter, I'm not fully sure whether or not that will work before the dungeon is fully generated
I would expect it to not be functional until the dungeon finishes loading, but I haven't explicitly checked it's logic

scarlet cradle
pastel pulsar
#

FYI - this mod was isolated to be causing hanging on load after the recent update.

crisp relic
#

could you send an error log?

pastel pulsar
#

Yeah I got you - apologies for the lack of data - it won't be until me and the gang finish the current session.

crisp relic
#

that's fine

#

I have a feeling it's a mod conflict rather than an isolated issue from Loadstone

scarlet cradle
#

Saw this warning

[Warning: Loadstone(Harmony)] The assembly "LethalPerformance" has patched the method "Void Start()" with a transpiler using "System.Collections.Generic.IEnumerable1[HarmonyLib.CodeInstruction] ReplaceFindObjectOfTypeTranspiler(System.Collections.Generic.IEnumerable1[HarmonyLib.CodeInstruction])", which we also modify. Unexpected behaviour may occur

Any idea what this means? I have the LethalPerformance mod and I'm concerned that it's interfering in some way I don't know of.

crisp relic
#

LethalPerformance and Loadstone should be fully compatible
it's simply a warning for untested mods that there might be issues

scarlet cradle
#

got it

lavish ginkgo
#

Is it known that the Loadstone loading music is only heard by the host?

#

like, even when the config for them + the clients have it enabled?

#

At least in LoadstoneNightly

crisp relic
#

I wasn't aware of that, no

#

I probably put it in a Server RPC without realizing

lavish ginkgo
#

Was puzzled why nobody could hear my custom music for it, then i asked if they could hear the music before and they said "Wait there was music before??" So yeah its just been a host only thing the whole time lol

#

i only added the custom one very recently

crisp relic
#

well
each person needs to enable the music if they want to hear it

lavish ginkgo
#

we share the same config

#

and its enabled by default in the code i share with them

#

when i've asked them to check they've confirmed its ticked and volume is normal

#

And then when they host they suddenly can hear it

crisp relic
#

ahhh I see what's going wrong
mk it should be an easy fix

#

if that works, I'll update the thunderstore with that version

lavish ginkgo
#

alright
We are using LoadstoneNightly tho

crisp relic
#

Main and Nightly are currently identical except for one config toggle that is highly experimental

lavish ginkgo
#

I added the Main Loadstone, replaced with your stuff you sent me here, disabled nightly, and tried, and there is no music now even in solo
I did see that normal has its own config, so i made sure in that config its enabled and volume is set correctly, as well as disabling my own music replacement mod in case it was conflicting, still nothing
I had a friend with me also do the same stuff and replicate the same issue. Originally we was gonna test if the music worked in multiplayer but, yeah it doesnt even work in solo now lol

ashen crane
#

i didnt even know loadstone comes with music imhuhimwuh

#

the music works for me in solo

lavish ginkgo
#

And for me, normal loadstone doesnt play anything

#

Only nightly

ashen crane
#

but hey mods being weird i have that too but with other mods lol

lavish ginkgo
# crisp relic Try this one

@midnight cairn if you have the time Cri2
When i am home from work we can then test multiplayer if it works in singleplayer

midnight cairn
#

k sure can do

midnight cairn
crisp relic
#

@lavish ginkgo @midnight cairn any updates?

lavish ginkgo
#

The music works now in singleplayer along with my asset replacement mod
Just waiting for when temmie is on to test with me before we do a session today

crisp relic
#

ight

lavish ginkgo
#

Just tested with temmie and no
Works for host but not client, identical config+profile n all and using the DLL you sent

#

Temmie noticed this setting is off in LCSoundTool tho, we will try turning it on and see if that makes it work

#

Still nothing 💔

crisp relic
#

networking shouldn't be necessary to make it work

lavish ginkgo
#

yeah, it had no affect

lavish ginkgo
#

Any idea when it might be fixed?

crisp relic
#

@lavish ginkgo

lavish ginkgo
#

Sure, me and temmie will try rn

lavish ginkgo
crisp relic
#

any logs?

lavish ginkgo
#

Sure!

midnight cairn
crisp relic
#

and just to confirm, you did set the config? Keep in mind that nightly and regular have different configs

lavish ginkgo
#

we actually deleted the nightly config and have nightly removed just in case

lavish ginkgo
crisp relic
#

oki

lavish ginkgo
#

Host can hear now, but not clients still

#

we will try deleting our config and letting it reset as a last resort

#

Still doesnt work (after regenerating config we did enable the music again ofc and reloaded)

midnight cairn
lavish ginkgo
crisp relic
lavish ginkgo
#

It works!!

#

tho apparently for the client the audio is slightly outside to the right of the ship, tho that may be due to having ProblematicPilotry (Random ship landing location)
The main thing is that it works now

crisp relic
#

nice :3

crisp relic
#

it duplicates the audio source used for the intro sequence and uses the same properties as it

crisp relic
#

I'll update Nightly and Main now

#

v0.1.16 Released!

  • Fixed [loading music only being heard by the host](#1242303311793885317 message)
    • Thanks to Zeta for reporting this issue
  • Fixed an error in the Dungen Optimizations which would cause errors with certain interiors
    • Thanks to Tolian for reporting this issue
strange jungle
west harbor
crisp relic
#

v0.1.17 Released to Nightly!

  • Added a new event system to the dungen optimizations
    • This will allow mods which modify dungen's generation algorithm to notify Loadstone of the tileset changes made
    • This feature will improve compatibility with #1195583267546595389, and may be used by other mods later on as well
#

(@livid kelp)

livid kelp
vast hazel
#

what's the diffrent between Loadstone and LoadstoneNightly

hollow ibex
#

Nightlies are cutting edge builds that might be unstable.

strange jungle
#

Nightly releases are built as needed for testing, normal/stable releases are built intentionally at a spot where there shouldn't be any issues from in-progress changes

livid kelp
hollow ibex
#

SDM?

vast hazel
#

okay

livid kelp
#

Scarlet Devil Mansion

hollow ibex
#

Ah, the Dungen.

livid kelp
#

Yeah

#

It fixes a ton of warnings that were being thrown before when you got that interior

hollow ibex
#

Is it only for SDM or any interior that uses that extension?

livid kelp
#

Any interior that chooses to notify it as Adi mentioned

#

SDM right now is just the main one, but I expect with more interiors such as Slaughterhouse and Black Mesa soon updating to properly utilize DungeonGenerationPlus it will help a lot more

crisp relic
#

v0.1.18 Released to Nightly

  • Reverts v0.1.15
    • Instead, mods should use Loadstone.IsNightly() to check whether the nightly or main version is in use
normal canopy
#

What is the difference between the main and nightly version.Which one am i need to use?

simple oxide
#

idk use nightly i guess

#

its more up to date

crisp relic
#

Use main
Nightly is for experimental testing and may break suddenly

#

If you are willing to provide bug reports and help with debugging, that's when I'd recommend nightly

normal canopy
#

got it

#

thanks for your help

granite heath
#

@crisp relic you will now get live data on whether my performance improvements work with Loadstone

crisp relic
#

nice

granite heath
#

@crisp relic did you change the GUID for loadstone nightly?

crisp relic
granite heath
#

this discovery has pranked us a bit

#

but dont worry, we solved it

crisp relic
#

sorry if you were relying on that earlier
having the two GUIDs be different was causing more issues than it resolved so I reverted it

granite heath
#

nah your change is big ups, just caught me off guard

crisp relic
#

gotcha

granite heath
#

also I thought the version I was targeting was v16 but you added the function at v17, that also pranked me

#

but also my fault for not checking lol

crisp relic
#

lol

#

I'll probably update main to match nightly soon
I haven't had any reports beyond the one issue from 15

#

I think I'll give it two more days. One week after the last nightly update happened

gloomy spade
#

what's the difference between Loadstone and LoadstoneNightly?

crisp relic
#

Nightly is a beta

gloomy spade
crisp relic
#

v0.1.19 Released to Unstable Beta

This update brings a slight improvement by removing the need for LCSoundTool to use the loading sounds, and gives Nightly a bit of a rebranding, making it clearer what it is, and making it easier to distinguish at a glance from the main release of Loadstone.

  • Renamed Nightly to Unstable Beta
    • This should help clear up a common point of confusion
    • The IsNightly() function added previously will not be renamed
    • This renaming will result in a new config being created. I recommend copying old config values over and deleting the old config after
    • LoadstoneNightly on Thunderstore is now deprecated
  • Updated Unstable Beta's Icon and Description
  • Removed LCSoundTool dependency for Loading Sounds
    • Waiting sounds will now use the vanilla ElevatorJingle sound instead
    • Mods which previously modified Loadstone's loading sound will still work
    • Mods which modify the elevator jingle sound may cause issues
    • Added a config option to loop the loading audio. Defaults to true
  • Reorganized project structure
#

Here's the new Loadstone Unstable Beta icon
It's just a hue shift of the original. Not much, but it's something

livid kelp
#

So guessing Nightly is gonna be deprecated?

#

I was actually about to ask why this existed when Nightly existed hehe

crisp relic
#

yeah, it'll have to be
renaming it makes it considered a new package, so the old one will have to be deprecated

livid kelp
crisp relic
#

in theory, yes
it's no longer using any sound API, so any sound API mod should work just fine

livid kelp
#

Yeah it's definitely a good idea to remove LCSoundTool as a dep, it was good for it's time but it does cause performance issues lol

crisp relic
#

yeah
I've been meaning to do that for quite a while

#

I finally have some more motivation to work on Loadstone after the Bingo game earlier :3

#

also, I'm gonna update main to 0.1.18 I think
that version seems to be stable from everything I've seen, and this verison has potential for new bugs

crisp relic
crisp relic
#

Main Loadstone Updates

v0.1.18

  • Revert v0.1.15
    • Instead, mods should use Loadstone.IsNightly() to check whether the nightly or main version is in use

v0.1.17

  • Added a new event system to the dungen optimizations
    • This will allow mods which modify dungen's generation algorithm to notify Loadstone of the tileset changes made
    • This feature will improve compatibility with ScarletDevilMansion, and may be used by other mods later on as well
arctic basalt
#

Did you see in Beta that it is not compatible or should I not worry?

crisp relic
#

I didn't try elevator music mods beyond a simple replacement mod, and confirmed that they don't work
It does seem as though the elevator jingle may not work properly if an elevator music mod is present, which I plan to look into

arctic basalt
crisp relic
#

ah, nice
yeah no it shouldn't cause problems
the most that'll happen is an error or two in the logs and no music

crisp relic
#

Ok I gave Nightly its last update
A new description and icon to make its deprecated status clear

tranquil marten
#

The tile pair of "MuseumRoom2" and "MuseumRoom2" was not found in the tag cache! This pair is now being cached, which will cause a small performance penalty

#

@crisp relic If this spits out a bunch of errors will it be the reason for a soft lock on landing?

crisp relic
#

no, that shouldn't cause a soft lock

#

it'll slow down landing, but that's simply because the optimization causing the issue is being skipped

#

if you want to try without it, I think that log is from the DungenOptimization module

tranquil marten
#

I learned how to read the SQlite logs but thats all I could find. Its so rare when these soft locks happen. and no errors pop

hollow nimbus
#

yo

#

so this moon is having incompatibility issues with loadstone

#

could maybe there be a way to add a blacklist function for cases like this?

crisp relic
#

Yes, I can add a blacklist for that
I'd also like to figure out why the issue is happening though

crisp relic
#

I'm thinking I'll add two blacklists
one Global Blacklist that disables Loadstone entirely, and a second blacklist for AsyncDungeon, since not all mods are designed with the expectation that the dungeon will take multiple frames

crisp relic
#

v0.1.20 and v0.1.21 Released to Unstable Beta

Two updates in one this time because the second feature didn't take as long as I expected it to

v0.1.21

  • Added a blacklist to the AsyncDungeon module
    • If a particular interior is having issues, you can add its DungeonFlow to this list!

v0.1.20

  • Removed LoadstoneLoading.ogg
    • This was a leftover from the LCSoundTool integration
    • The mod should now have a much lower file size!
  • Added additional checks to ensure compatibility with more mods
    • The dungeon will now be marked as complete after post processing, rather than before
lavish ginkgo
crisp relic
#

yes, custom music still works

#

I'm just using the vanilla elevator music now

lavish ginkgo
#

Ah i see i see

nocturne tusk
#

i had the idea of changing the popup design from the yellow notice (which i guess is the default) with a custom design, and i wanted to suggest it to see if it was worth trying out

#

i'm not saying it needs to look like this but i think a custom one might be cool to see

crisp relic
#

hmm
my main concern with implementing a custom popup design is that I'll have to package an asset bundle, which I'm not familiar with doing

#

that or I'd have to look into how the materials work and try to recolor things, but if I remember correctly, the notification is made of multiple different pieces

nocturne tusk
#

ah, okay

proper carbon
#

and yeah for UI stuff for the love of god do not do it via code

#

I have done it both ways

crisp relic
#

gotcha lol

scarlet cradle
#

found this mod. Apparently, ChatGPT o1 says this about it when checking out the code. I’m posting here since this discussion is about optimizing loading times, so I figured y’all would know whether it’s legitimate and useful.

This mod prevents BepInEx (and thus the game) from constantly saving config files every time a bound config value changes, thereby reducing overhead (and potentially disk I/O or lag spikes). Then, once the entire mod loading process is done, it re-enables saving and saves everything at once. At the same time, it scrubs personal info from logs so you don’t leak your username or temp path in logs.

https://thunderstore.io/c/lethal-company/p/loaforc/Terbium/

crisp relic
#

It's a useful mod, but not quite related to what Loadstone does
Loadstone optimizes loading times when landing in a moon, not launching the game

scarlet cradle
crisp relic
#

I haven't, but it's by a reputable member of the community. If it's not actually doing what it says, there are much more concerning mods of theirs than Terbidium

junior rock
#

It decreases the time it takes to open the game

#

I think people slowed down on using it because of some other issue that I don't remember

halcyon sable
proper carbon
strange jungle
#

are we substituting reading comprehension with ai summeries now

hollow nimbus
#

seems like it

scarlet cradle
proper carbon
#

Respectfully, you didn’t

#

If you don’t understand what it’s doing, you don’t have to

#

Please don’t run chatgpt on peoples code

#

It’s a gross thing to do

hollow nimbus
scarlet cradle
# hollow nimbus why not just learn coding instead??

I’m sorry, but asking that question is like asking me to learn French because I used Google translate. I’ve thought about coding, but Im nowhere near literate enough to understand what it all does. Yes, what Im doing is a taking shortcut, but ChatGPT is doing nothing more than translating the code so I can better understand it.

proper carbon
#

You don’t have to understand it

#

It’s ok not to know something

scarlet cradle
# proper carbon It’s ok not to know something

Thank you for clarifying your statement. I’ll make it clear that I wanted to know what Terbium did because I needed to know whether to add it to my modpack. I’m very picky about which mods are added.

proper carbon
#

I’m making it clear that ChatGPT did not help you

scarlet cradle
proper carbon
#

In the future if you don’t understand what a mod does, just don’t use it

hollow nimbus
#

or just ask the creator

crisp relic
#

or the thunderstore page usually explains it

#

and if not that, the README in the repo

alpine silo
#

I don't mind people running ChatGPT on my code personally, unless they're using it to modify it, but you should never trust ChatGPT to tell you the truth ever

#

if you can't verify what it says, you can't trust it

#

it seems like it's probably mostly right for this case, but if it doesn't understand something, it will hallucinate rather than tell you it doesn't know

crisp relic
#

yeah
AI loves hallucinating
and, I mean, even if it read through all of the code, it could still be tricked by variable names and comments. An actual audit of the code would also look at exactly what the code actually does, but I have my doubts that it looks into the actual functionality of the code

alpine silo
#

unrelated question, with Loadstone can I expect that when a behavior within a tile has its Start() method called, the Dungeon.AllTiles collection will be fully populated?

crisp relic
#

no
that will only be true if the Dungeon Realization module or Async Dungeon Module are disabled

#

I think

#

I'd have to double check where AllTiles gets finished

#

ok yeah, just double checked, AllTiles may not be filled if Loadstone has Dungeon Realization and Async Dungeon enabled

alpine silo
#

ah I see

crisp relic
#

each tile is added one by one as it's spawned, and Dungeon Realization allows them to spawn on different frames

alpine silo
#

the tricky thing is that I can't detect what DungeonGenerator a Tile is within without doing work that is probably not terribly efficient, or patching DunGen

#

or RuntimeDungeon really

#

since RuntimeDungeon is a sibling of the root of the dungeon

crisp relic
#

I see
would it be possible to delay the process until the dungeon is marked as complete?

alpine silo
#

that's what I was hoping to do by finding the DungeonGenerator

#

only way I can think to find that is by doing FindObjectsByType<RuntimeDungeon> and then checking for one that references the Dungeon in the parent of my script

crisp relic
#

ok yeah I see the issue...
I suppose, you could always forcibly turn off Loadstone's Dungeon Realization config option

alpine silo
#

nah I wouldn't wanna do that

crisp relic
#

that particular optimization doesn't make a huge difference on its own, it's just a small gain

alpine silo
#

hmm really?

#

instantiating objects seemed to be fairly heavy from my experience

#

not like generating a dungeon obviously, but still quite noticeable

crisp relic
#

it's noticeable, and definitely measureable, but it's also only a few frames of difference

alpine silo
#

NODDERS makes sense

#

I was theorizing a solution for blockers in Hadal, but I think maybe branch caps is probably the solution instead

#

that way they can check bounds properly

crisp relic
#

I do think FindObjectsByType would be better, assuming you just run it once on level gen
instantiating some interiors can have a much larger performance impact than others

short stirrup
#

Which oneis better

#

Normal loadstone or unstable beta

#

Because I have wild stuttering

crisp relic
#

Neither mod will fix stuttering during gameplay, only while landing on a moon

#

I'd recommend Normal Loadstone unless you are will to deal with and report possible bugs as features get changed and added

short stirrup
crisp relic
#

it would depend heavily on what mods you have
I'd recommend LethalPerformance first if you haven't tried it

alpine silo
#

ReverbTriggerFix also pairs well with that

#

the two together can help with stutters during landing from what I've seen on profiles

crisp relic
alpine silo
#

well the main benefit comes from the caching in LethalPerformance, but ReverbTriggerFix also helps reduce the effect further

#

at least in theory, I haven't tested this yet

#

I saw some very bad reverb trigger stuff in the last big session I played with a debug build, which should be directly affected by LethalPerformance patches

crisp relic
#

yeah
the worst I've seen from them has been in massive lobbies
I was helping coordinate a 32 player lobby and the vanilla reverb trigger code caused a lot of performance issues

#

32 players also has other issues though lol

#

the game was definitely not meant for that many people

alpine silo
#

yeah I am hoping to find more ways to make it handle that better, but LethalPerformance definitely makes a huge difference when you're near the ship

#

at least on poorly behaving moons

#

if you ever make a big lobby like that again feel free to ping me, I'm very interested to profile one with like 12+ players

crisp relic
#

I'm not sure how likely it is to happen again, but I'll be sure to message you if it does

alpine silo
#

especially if I get to restart to do a deep profile sometimes lol

#

yee

#

I noticed a couple things that are worth patching but I'm sure there's plenty more hiding somewhere

crisp relic
#

The two biggest issues we had were joining and ridiculous loading times
quite often, two players would join at almost the exact same time, which would completely break one or both players, causing them to be permanently stuck without control of their character underneath the ship, with the UI entirely uninitialized
There were also some weird issues where the lighting would completely break for some players

#

oh, and the enemy netcode
enemies would appear to just lerp from across the map and kill you sometimes

#

The weird thing with the load times though was that, for 99% of the load times, the client would just be waiting for everyone else to finish, but would also be running at about 2 fps. The debugger never really showed a clear culprit for the lag

alpine silo
#

the debugger as in the profiler? the unity one?

#

that really does sound like the reverb trigger crap, since there's one big one at the top of the level that the ship seems to sit in until it starts moving, and the more players the more FindObjectsOfType gets called per frame

crisp relic
alpine silo
#

huh, that's curious, I definitely would've expected it to show the reverb triggers if they were your issue there, even in a shallow profile

granite heath
#

Are you touching the function DoorwayPairFinder.GetPotentialDoorwayPairsForNonFirstTile by any chance?

crisp relic
#

I don't believe so, though I've looked into patching it

granite heath
#

If you do patch it let me know

crisp relic
#

ok, I will

#

if memory serves correct, I ended up not patching that function and its related functions directly, because I found the bottleneck further down the line, which ended up becoming tag caching

rain plinth
#

Has desynced interiors been fixed yet? I haven't used this mod in a few months

lavish ginkgo
#

I dont think this mod has ever caused desyncs in interiors for me, and been using a while

crisp relic
#

some people still seem to be getting them, but I can't pinpoint the issue very well
it has to be some kind of mod compatibility issue, since the majority of people don't have desync issues

rain plinth
#

I used to get it like a quarter of the time, people would have entirely different layouts

#

Even back when we didn't use many mods

crisp relic
#

how long ago did you use it?

marble scaffold
#

even the current version causes desync for us

#

we stopped using it recently because it got too problematic to deal with

rain plinth
marble scaffold
#

im sure it is an incompatibility because our issues started long after the latest update

rain plinth
#

But it occurred too even when we first got it around when it first got popularity

marble scaffold
#

but just like, every session after a few days (3-4) at least one player would start seeing diff dungeons than everyone else until we relaunched

crisp relic
#

I've found that a lot of compatibility issues are with async dungeon, you can try turning that off in the config
if it still happens

marble scaffold
#

iirc turning that off did not help, i did suggest it as the first workaround and i think they tried

crisp relic
#

huh
maybe async navmesh as well?
if it's neither of those, then something I'm doing must have some element of randomness, and I'm not sure what that would be

marble scaffold
#

yeah

#

it is hard to say

#

very unfortunate

#

im pretty sure they disabled all async stuff but i dont remember all the details

#

i am still convinced it is more a conflict than loadstone's fault

#

for what it is worth

#

but its hard to go anywhere after that

crisp relic
#

that's fair
your issue sounds very similar to a report on github
would you be able to send the modpack so I can try and narrow in on the possible culprits?

marble scaffold
#

sure, if you like

#

once im back at my computer

crisp relic
#

I really need to get around to implementing more debugging tools, stuff to check if desync could be happening, and if so at what point

marble scaffold
#

im going to be so sad when its inevitably one of my mods 🥲 but tbh it is a real possibility to me

#

i dont mess with dungen directly but a couple patch the post-level-generated client rpc

#

and the issue never seems to replicate on day 1

#

just out of curiosity

#

does altering the tile prefabs cause loadstone's rng to be seeded differently?

#

it is imo the "most likely to be destructive" thing i could be doing

#

but it happens in startofround.awake for all players and iirc the only thing i change is billboarding on some particle systems in the cave tiles

crisp relic
#

not that I'm aware of
the only thing that modifying tile prefabs would really do is mess up tag caching, but Loadstone has a failsafe and starts building the cache as it generates in that case

hushed zephyr
#

tbf, i never had desyncs with my "vanilla" modpack except when i had ObjectPooling. I also play sometimes in public lobbies and even the unstable works fine... The problem may lie in how Loadstone deals with modded interiors?

marble scaffold
#

my group has no modded interiors

crisp relic
marble scaffold
#

on that note we dont even have lethallevelloader

#

in our case we were always getting desynced factories although it's possible it could've been occurring on manor too

crisp relic
#

usually what I've seen with desyncs though is like 200+ mods, which makes it really hard to find any singular culprit

marble scaffold
#

not sure

#

well

#

my profile is only 65

#

and i was thinking i could do a diff with the other profile's dependency string

hushed zephyr
#

my profile is 150...

marble scaffold
#

to see what mods both of us have

#

and maybe it'd give a better clue

crisp relic
#

with it fully reduced, I only had four mods left

ButteryStancakes-AccurateStaminaDisplay
ButteryStancakes-RevisitStingers
giosuel-ToiletPaperNormalizer
mrov-LethalRichPresenceExperimental

though it's possible it was different mods causing desyncs, or that Zeta's pack did have desyncs and nobody has noticed, so I also have just Lunxara comapred to the most similar issue to what you were having:

marble scaffold
#

compared to both of these lists

#

the only overlap is accuratestaminadisplay and revisitstingers

#

both are mine and i'd be surprised if either could be the culprit

#

revisitstingers patches the function when you use entranceteleport and basically nothing else

#

and accuratestaminadisplay is only HUD stuff

#

concerning that second one, IIRC it started before i added barbermaterialtweaks, and we've had simpleweatherdisplay for forever with no problems

hushed zephyr
marble scaffold
#

i'd also be somewhat surprised if it's a problem due to either

crisp relic
#

yeah
it's just a confusing issue

marble scaffold
#

if you give me a second i will post the diff between my profile and broken-usb's latest profile code in the github issue

crisp relic
#

I can send USB's dependency strings, with the versions stripped

marble scaffold
#

ok big diff incoming

#
- AdiBTW-Loadstone
+ AdiBTW-LoadstoneUnstableBeta
- AinaVT-LethalConfig
BepInEx-BepInExPack
ButteryStancakes-AccurateStaminaDisplay
- ButteryStancakes-BarberFixes
ButteryStancakes-ButteryFixes
ButteryStancakes-Chameleon
- ButteryStancakes-ClassicSuitRestoration
ButteryStancakes-EnemySoundFixes
ButteryStancakes-HalloweenAction
ButteryStancakes-JetpackFixes
- ButteryStancakes-KeepUnlocks
ButteryStancakes-MeleeFixes
- ButteryStancakes-RadioBabyFace
- ButteryStancakes-RestoreMapper
ButteryStancakes-RevisitStingers
- ButteryStancakes-SafeSoloScrap
- ButteryStancakes-SnowyHolidayDropship
- ButteryStancakes-UpturnedVariety
- ButteryStancakes-VentSpawnFix
ButteryStancakes-WeedKillerFixes
+ CharlesE2-HostFixes
Dev1A3-LethalFixes
- Dev1A3-YesFox
+ Dev1A3-LobbyImprovements
+ DiFFoZ-BepInEx_Faster_Load_AssetBundles_Patcher
DiFFoZ-HarmonyXTranspilerFix
DiFFoZ-LethalPerformance
DiggC-CruiserImproved
- EliteMasterEric-CleanerLogs
Evaisa-HookGenPatcher
Fandovec03-SpiderPositionFix
+ HDeDeDe-LogMuteLethal
FlipMods-HotbarPlus
FutureSavior-Hold_Scan_Button
Hardy-LCMaxSoundsFix
+ JacobG5-LostEnemyFix
JacobG5-ReverbTriggerFix
LegoMaster3650-FairGiants
+ LethalCompanyModding-LCUltrawide_Community
+ LethalCompanyModding-RuntimeIcons
LethalCompanyModding-VertexLibrary
+ MaxWasUnavailable-LethalModDataLib
- NutNutty-SellTracker
- Pooble-LCBetterSaves
+ PureFPSZac-NestFix
+ Rminin-FinallyCorrectKeys
- Rune580-LethalCompany_InputUtils
+ ShaosilGaming-GeneralImprovements
- Simplexity-Fix_XP_Divide_By_Zero_Error
+ Spyci-CozyImprovements
SylviBlossom-SimpleWeatherDisplay
+ SylviBlossom-SmartItemSaving
SylviBlossom-TerminalConflictFix
- Terraformer9x-TonightWeDine
TestAccount666-AntiSlimeCamp
TestAccount666-GoodItemScan
+ TestAccount666-ImprovedClock
+ TestAccount666-ScanShipEverywhere
+ TestAccount666-ScannableTools
- TestAccount666-TestAccountCore
- TestAccount666-TestAccountFixes
Zaggy1024-PathfindingLagFix
#
dopadream-BarberMaterialTweaks
- falcodxb-LessLogs
- flerouwu-LC_FastStartup
fumiko-CullFactory
+ giosuel-ToiletPaperNormalizer
mattymatty-AdditionalNetworking
mattymatty-AsyncLoggers
+ mattymatty-BagConfig
mattymatty-LobbyControl
mattymatty-Matty_Fixes_Experimental
mrov-ApparatusFix
+ mrov-LethalRichPresenceExperimental
+ mrov-LightsOut
+ mrov-MrovLib
- notnotnotswipez-MoreCompany
- quackandcheese-ToggleMute
- taffyko-BetterSprayPaint
- taffyko-NameplateTweaks
taffyko-NiceChat
+woah25-FairBirds
+woah25-FairGiantsHostOnly
#

red means i had it and broken-usb didnt, green means broken-usb had it and i didnt

#

everything else is stuff we both had (so probably one of those)

crisp relic
#

and you both had similar desyncs?

marble scaffold
#

i believe so

#

as long as i understand the github issue correctly

#

We did an Assurance run and a Titan run without problems. But on the second Titan run, the inside of the facility looked totally different for me compared to the others. I fell to my death because I went in through the fire exit, which put me in a bottomless pit. After that, every run had the same issue until I restarted the game.

#

i've always hosted so the dungeon has always been "right for me"

crisp relic
#

alright
I'll add every mod in that list that both of you have
hopefully I'll eventually find a way to debug it properly

marble scaffold
#

but after several games in a row, one or two of the other players will start to have interior desyncs

#

which leads to falling to death from fire exits

#

doorways being in the wrong spots

#

etc.

crisp relic
#

yeah

#

that's the weirdest part to me is that it just keeps happening

#

like, a one-off desync makes some sense
but the fact that it's consistent...

marble scaffold
#

like... if the host desyncs, they're still going to authoritatively place the fire exits and doorways and stuff

crisp relic
#

that's a good question

#

an easy way to find out would be to restart and generate the same seed

marble scaffold
#

im wondering if there's something that happens in the order of operations that causes myself and multiple other players to desync, and the people seeing desync are actually generating the correct dungeon

crisp relic
#

see whose it matches

marble scaffold
#

because IIRC, we encountered the issue with some players even when they specifically removed loadstone

#

and that's why we eventually all disabled it just to be safe

crisp relic
#

I see

marble scaffold
#

i think we also had some issues any time we used latejoin (which we avoid, for the most part, but it does add credence to the possibility that "the incorrect" dungeon is actually a result of long-term play as the host)

crisp relic
#

I have some idea on how to debug the issue
specifically, I want to see if I can somehow hash the dungeon layout, then find every seed in one of the desynced logs, check them individiually with game restarts, then go to each one after another and see if I can detect a desync that way
if I can consistently recreate it with the same seed order, that would help a lot

marble scaffold
#

i see

crisp relic
#

right now it's just so hard to debug because it seems exceedingly rare

marble scaffold
#

does loadstone log the seed anywhere separate from the main log?

crisp relic
#

no, just the bepinex log

marble scaffold
#

i see

#

i have my logs mainly culled

#

anything short of warnings doesn't print at all because i usually dont need to have visibility on anything else

#

next time we play i can install loadstone and enable logs and keep up a list of seeds

crisp relic
#

I have logs from some other players that I can reference

marble scaffold
#

i remember forever ago that there was some undefined behavior that caused incorrect values to be cached

#

and that's why the desync would persist between days after the first time it happened

#

for what it's worth, that seems to be the case now, still

crisp relic
#

it could be tag caching causing the issue

marble scaffold
#

if a client gets desync it has been happening on all future days until everyone relaunches their game (we weren't sure if rehosting the session was enough, so we didnt try)

crisp relic
#

I don't know what it is but something seems to consistently break how tag caching works, like the tile prefabs I'm checking have their IDs changed every time the ship lands for some reason

marble scaffold
#

just out of curiosity

#

what do you mean by "ID" in this situation

#

or well

#

i guess i'll just cut to the chase with my question

#

would issues replicate if instantiated tiles were modified in FinishGeneratingNewLevelClientRpc()?

#

chameleon modifies the tiles significantly in that function (to retexture caverns and stuff) but doesn't touch the actual prefabs

crisp relic
#

so, currently, Loadstone is using the entire tile prefab as a key in the dictionary
I also tried using the value provided by GetInstanceID(), but it had the same behaviour

#

perhaps I should go back to that for efficiency, I'm not sure exactly how C# hashes the tile prefab

marble scaffold
#

.. hm

#

im wondering if im causing the issue here, then

crisp relic
#

it's just weird
something, somehow, for some reason, changes the instance ID

marble scaffold
#

i was wrong and this occurs in RoundManager.Awake

#

but it still should be occurring immediately when the ship is loaded, for all clients

crisp relic
#

actually, here's something I could check
I can check the sign of the ID
according to Unity, the ID should be positive if it's loaded from an asset bundle, and negative if it was created
that would at least let me check how Unity thinks it's being manipulated

crisp relic
crisp relic
#

caching happens once the generator begins generating

marble scaffold
#

i didnt mean for that to be a reply oops

#

anyways

crisp relic
#

once it's cached once, it won't recache the data, and will instead cache individual pairs as it finds missing pairs

#

if the pair already exists, it never rechecks that pair

marble scaffold
#

would desync occur because the same tile has a different instance ID compared to other clients?

crisp relic
#

though, even if it did, I don't think that would harm performance much, considering how often pairs get checked normally

marble scaffold
#

or do you hypothesize it's only happening because the instance ID changes in the middle of generation?

crisp relic
#

hmm wait
one sec

marble scaffold
#

maybe it is just unsafe for me to be changing tile prefabs at all

#

idk why that would be changing instance IDs but it's possible that could just be a side effect of directly modifying prefabs

crisp relic
#

hmm
well I found a possible bug within Loadstone
but turning off async dungeon should have fixed it

marble scaffold
#

i see

#

maybe we should all try using loadstone again with async dungeon off

#

iirc only the people experiencing problems turned it off, but maybe it would work if we all had it off

crisp relic
#

basically, one of Loadstone's modules changes the Proxy Dungeon's FromProxy function to be a coroutine, since instantiating tiles is very slow on some interiors, like Facility
In order to wait for the coroutine, I found the closest yield return null and added a check there to wait for the coroutine to finish
except that yield return null happens after parts of the proxy dungeon are processed and sorted

marble scaffold
#

that goes a bit over my head since im not one of the dungen wizards :p

#

but i suppose you don't make that change if asyncdungeon is off

#

right?

crisp relic
#

yes
well, specifically, the patch that turns FromProxy to a coroutine is dependent on AsyncDungeon being enabled, and doesn't get patched if it isn't

crisp relic
#

mk, I've rewritten the patch such that it should always be the first thing run right at the start of the loop
it also doesn't depend on random yield return nulls anymore, instead directly adding itself to the jump table, so even if the dungen version moves things around, it should still work

#

I don't have time to test right now unfortunately, I'll test in a few hours

crisp relic
#

ok, initial testing is done, it now works, now I'm just gona check against a couple modded interiors that could conflict, then I'll push it to unstable beta

marble scaffold
#

we are about to play

#

i will let you know if anything changes with asyncdungeon off for everyone using the mod

crisp relic
#

ok, thanks

#

alright I'm gonna push the update
I tested and it seems to be playing nice with both SDM and Zeranos

#

v0.1.22 Released to Unstable Beta

  • Overhauled a portion of the Dungeon Realization module
    • The game will now begin waiting for the dungeon to spawn sooner
    • This should hopefully help reduce potential desyncs
    • The code is now more resilient, and less likely to break should DunGen be updated
marble scaffold
#

had no issues this session

#

using stable, no asyncdungeon

#

company visit, 3 days, company visit, 1 day

crisp relic
#

Nice

marble scaffold
#

usually our sessions go on a bit longer

#

but we had the issues replicating on like

#

day 3 or 4 before

#

so we either got lucky or asyncdungeon does help

crisp relic
#

Ok

livid kelp
#

@crisp relic Used the new version of Unstable Beta and ran into no problems today, I'm guessing this change is something you wanna merge into stable so you should be more than good to push it ^^

crisp relic
#

I'm gonna give it a bit but thanks for the confirmation

livid kelp
#

You're Welcome ^^

scarlet cradle
plain jay
#

@crisp relic whats new in the beta of loadstone

crisp relic
#

I fixed a bug that could have been causing desync in some situations

crisp relic
#

Loadstone injects some code into the dungeon generator so that rooms can spawn on different frames
because of that, I also had to make the rest of the code wait for the rooms to finish spawning in, but the place I chose to do it at may have been later than necessary. Now, I inject at the earliest moment where the actual tiles are referenced by the generator

plain jay
#

oh

crisp relic
#

I may apply a similar treatment to some other functions to make sure they work properly in future updates, since yield return null lines like that may be removed in future versions. I haven't done it previously since it more than doubles the number of lines of code per injection

crisp relic
#

Loadstone Unstable Beta is just for testing. I may update it at any time, and the updates may break compatibility with other mods. It's not unstable because it's necessarily unstable right now, but because it could break unexpectedly due to an update

livid kelp
#

@crisp relic Found an issue with the Loadstone Beta that breaks the lighting in Wesley's Art Gallery Interior

crisp relic
#

interesting

livid kelp
#

If Loadstone Beta is on it makes it green

#

Disabled

crisp relic
#

that's bizarre
does mainline Loadstone do that?

#

and does disabling async dungeon fix it

livid kelp
#

I'm gonna test but according to Wesley the reason would be related to this

#

Your mod is probably messing with that for whatever reason

crisp relic
#

interesting

#

Loadstone shouldn't affect how the tiles spawn in at all, nor should it affect anything inside the tiles
the only change would be the timing of when the rooms spawn in

livid kelp
#

Stable release repros the same bug

crisp relic
#

I see

#

I added Wesley's Interiors to my testing profile, though I won't be able to test today, it's a bit late for me

livid kelp
#

I'll add this interior to the blacklist and see if it helps

crisp relic
#

alright, thanks for helping debug this

livid kelp
#

Yeah blacklisting it works

crisp relic
#

ok, so it's 100% something about async dungeon

livid kelp
#

Yeah it seems so

crisp relic
#

would you mind running one more test @livid kelp?
Could you disable the Dungen Optimizations module?
I think it could be related to one of the optimizations

livid kelp
#

Sure I can test that

crisp relic
#

alright, thanks for checking

livid kelp
#

Yw

livid kelp
#

@slow drum Just wanna ping you too since I would guess the lighting system in Art Gallery is using JLL. I would guess you might have some insight on helping Adi out with resolving the conflict happening with Async Dungeon here NODDERS

livid kelp
#

I thought you were utilizing a JLL script and Loadstone was breaking that script when Async Dungeon was allowed for the interior

shy kestrel
#

I just thought it was green

livid kelp
#

Nope lol

#

Wesley told me it was a bug from another mod and I spent so much time trying to locate it

shy kestrel
crisp relic
#

in the config file, there's a new blacklist under the async dungeon section
you need to put the exact name of the dungeon flow in there

shy kestrel
#

thts prolly why i was confused

crisp relic
#

are you using Loadstone Unstable Beta?

#

blacklisting isn't available in standard Loadstone yet

shy kestrel
#

ah

#

didnt work

#

wait i didnt reset hold up

crisp relic
#

Nightly has its own config file

crisp relic
#

v0.1.22 Released to Loadstone Main

  • Removed LCSoundTool dependency for Loading Sounds
    • Waiting sounds will now use the vanilla ElevatorJingle sound instead
    • Mods which previously modified Loadstone's loading sound will still work
    • Mods which modify the elevator jingle sound may cause issues
    • Added a config option to loop the loading audio. Defaults to true
  • Added a blacklist to the AsyncDungeon module
    • If a particular interior is having issues, you can add its DungeonFlow to this list!
  • Overhauled a portion of the Dungeon Realization module
    • The game will now begin waiting for the dungeon to spawn sooner
    • This should hopefully help reduce potential desyncs
    • The code is now more resilient, and less likely to break should DunGen be updated
cyan moth
#

Incompat with soundapi? It was erroring for me until I disabled soundapi and lethal resonance

crisp relic
#

it should be compatible as far as I'm aware
what behaviour are you getting?

cyan moth
ashen crane
#

its been 2h and gale still didnt pick up the update imhuhimwuh

#

ah now it did concern

cyan moth
#

It already did for me when I keep fetching the mods, But yeah it took awhile

crisp relic
#

yeah, thunderstore is slow to process updates sometimes

#

what makes you think this is a loadstone bug btw?
does disabling loadstone resolve the issue?

cyan moth
#

It was working for me until I updated it to the latest one

crisp relic
#

if you enable soundapi and lethal resonance, then disable loadstone, do sounds work?

ashen crane
#

it works just fine on my end atleast

crisp relic
#

I'd be confused if Loadstone was somehow breaking it
the only thing somewhat relevant is the loading music, but none of what I set up for that should be able to break enough to completely break soundapi

cyan moth
#

Oh so it errors with soundapi v2

#

The beta version

#

Weird

crisp relic
#

interesting
if it's an issue with the soundapi beta, perhaps it should be reported there? I'm not doing anything too strange or unusual with the audio I don't think

cyan moth
#

Actually I tested with v2 again on a fresh save and it worked fine.. So maybe something happened with my old save when I updated loadstone

crisp relic
#

that's strange

marble scaffold
#

we got more interior desyncs today

#

4 of us on titan

#

3 of us were fine, 4th player got desynced and fell to death after using fire exit

#

the first time it was because that 4th player was the only one not using loadstone

#

they installed loadstone and we rehosted and tried again

#

the same player still desynced and fell out of the map the second time

#

on the very first day we hosted

#

the player that desynced had async dungeon, async navmesh, and dungeon realization over multiple frames all turned off

#

i (the host) had them all turned on

#

i dont know the configs of the other two players

crisp relic
#

dang
I really thought that was fixed on the latest version
just to check, was the person who descyned on 0.1.22?

marble scaffold
#

the first time they didn't have the mod

#

the second time they downloaded it from thunderstore immediately before joining, so it would have been latest, yeah

marble scaffold
crisp relic
#

maybe it's the dungeon optimizations?
do you have them on? And did they have them on?

marble scaffold
#

we both had them on yeah

crisp relic
#

hm
could you send me your config and their config perhaps? I'd like to compare and see if there's anything else

marble scaffold
#

and it looked like they had the same values for everything else

#

@polar zinc if you could post yours

polar zinc
crisp relic
#

mk the only differences I see are that Purple has some leftover configs values from an old Loadstone version, and they lowered their target frametime from 20ms to 1ms
other than that they look the same
hmmm
I guess I'll have to keep looking around at what could be causing these desyncs

marble scaffold
#

we all started using the mod around the same time

#

but i think at some point i probably cleared out my configs and reconfigured everything

#

so maybe that's why mine doesn't have leftovers

crisp relic
#

old versions had code to transfer to the new format, but I got rid of it, so modern Loadstone doesn't

polar zinc
#

ive only had issues with leftovers from runtime icons

#

but maybe thats why its happening to me

#

sorry i never really commuted anything before btw, i never saw it as a big issue cause i can just simply not use loadstone myself

proper carbon
#

btw @crisp relic little tiny thing i put in latest lll that probablyyy shouldn't be in LLL but whatever

#

i set the retry attempts on generators to 50

#

i think it mostly only matters in the context of your mod(?) possibly? but some custom interiors seem to uncommonly fail at the default of 20 so i figured it wouldn't hurt anyone and maybe help

#

lmk if im tripping though

crisp relic
#

I mean
I don't think that should make a difference
Loadstone shouldn't be affecting the behaviour of level loading, so whether it was one attempt or 50, it should be the same as vanilla

proper carbon
#

Afaik dungeons failing to generate on the retry cap only works at runtime with loadstone

#

Non async runs infinity

#

it’s meant to be like that only in editor based on the code but

crisp relic
#

I mean
it was desyncing even when everyone had Loadstone

proper carbon
#

This is unrelated to desync

crisp relic
#

ah

#

isn't there a way to export the code after bepinex applies all the patches to get a better understanding of what's going on with the code? Maybe that would help me figure out my desync issues

crisp relic
#

thanks for the heads-up though

ashen crane
#

is loadstone client sided or does everyone have to have it?

#

i have a friend with a weaker pc and i have disabled loadstone because i keep reading about desyncs Cat1

#

he keeps crashing when loading onto a moon without it

crisp relic
#

it's client side

wispy forum
crisp relic
#

there aren't any known incompatibilities

livid kelp
wispy forum
#

should i disable it for that interior

crisp relic
#

oh, yes, it does mess with the lighting there
it's not gamebreaking or anyhting though

livid kelp
#

Just blacklist it

runic laurel
#

Sorry for the ping from a year ago, but what mod did you have that enabled the dev flag? Your post about that is my only clue as to why this is happening and randomly crashing my lobbies.

halcyon sable
runic laurel
halcyon sable
runic laurel
turbid cargo
#

what interiors are reccomended to blacklist

livid kelp
turbid cargo
balmy prawn
#

I had desync problems with your mod. Always facility interior and adamance, Embrion moons. I uninstalled your mod and it was working normally again. So i decide to play your mod without dungen optimizations and we didn't have any problems playing today. Before v70 i didn't have any problem even with dungen optimizations turn on

ashen crane
#

i dont remember having that problem the last few times, however since im here now, im wondering if there are any config settings i could change to make generation more... reliable? i have a few friends who crash quite often during generation, Loadstones definetly helps with that cause in vanilla its even worse but i wonder what i could try to change to maybe make it safer?

crisp relic
crisp relic
#

hmmm it seems that the crash is more than a performance issue like I initially thought
I'm not exactly sure what would cause it, but I'll try to find something that crashes consistently for testing purposes

crisp relic
# balmy prawn I had desync problems with your mod. Always facility interior and adamance, Embr...

Are you using Central Config? From my testing, it seems currently to be causing issues due to the way it handles interior generation failures, particularly with late joiners I'd imagine. I'll reach out to the developer about the issue with more details
If that's not the case, I have a new version that might fix the issue, which I'm currently uploading to Thunderstore, though it might take an hour or more for the update to show up

balmy prawn
#

Nope

#

Turning off dungeon optimizations fix the issue

crisp relic
balmy prawn
#

I can't test it now because my friends are not playing today.

crisp relic
#

That's fine

balmy prawn
#

It's a great mod. But maybe something has changed in v70. Before i had no problems

crisp relic
#

v0.1.23 Released to Loadstone Unstable Beta

  • Rewrote the DunGenOptimizations module to be more consistent and hopefully reduce desync
    • The dictionary is now tag based rather than tile based to try and prevent issues with MonoBehaviour hashing
livid kelp
#

I will say I've been using the Stable version and haven't ran into desyncs with my group so it was probably some other mod in Leubes pack

#

That being said I'll add the new update for today

balmy prawn
#

and with dungenoptimizations off fix the issue as well

balmy prawn
#

And it looks like you dont play on vanilla moons.

livid kelp
balmy prawn
#

Embrion or Adamance with facility interior?

#

And v70?

#

Or v69?

livid kelp
#

Adamance worked fine on V70 Vanilla+ 🤷‍♀️

#

The only time I've ever had Facility desync in the past was when using Tolian's Tomb Interior

#

That being said I've seen reports that if you play with a group of people who aren't all using Loadstone it can cause desyncs so that might've been your problem

balmy prawn
#

Everyone was playing with loadstone. I just share the code and play

livid kelp
#

That doesn't make sense then since my group has never run into desyncs

#

If everyone is using it, then it would probably fall on some custom moon or interior touching the facility

balmy prawn
#

I wasn't using any custom moon/interior when we have this problem

livid kelp
#

🤔

plain jay
#

I have not had any desyncs for a while with loadstone

balmy prawn
#

I just turn off dungen optimizations and i had no more problem as well

#

Before v70 we never had desync problems

plain jay
balmy prawn
#

nope

plain jay
#

how many mods do you have

balmy prawn
#

130

#

Before we hadn't even 100

plain jay
balmy prawn
#

0197c6d8-e4b4-e983-d244-cb3c7c14cd7a

livid kelp
#

Could be EnhancedTweaks tbh, last I tried that the fire exit patch errors out

#

No idea what FontPatcher does

#

Byeah my main guess is Enhanced Tweaks, I would test disabling the seed setting and Fire Exit fix setting

#

I only think it's mainly useful for the Faster Quota Racking up feature, lack of maintenence broke some of it's features

balmy prawn
#

Its already turn off fire exit settings

livid kelp
#

Weird, I do wonder if it could still be conflicting though

balmy prawn
#

and before i didn't use this mod im using now to see if we have different seeds

livid kelp
#

Loadstone will always log the seed

balmy prawn
#

BetterExp or DissonanceVoiceSettings was causing a weird bug with players. Maybe this was the problem.

livid kelp
#

BetterEXP and DissonanceVoiceSettings are fine for me

marble scaffold
#

i've still been having desync issues with loadstone

#

but they have disappeared as long as all of us use the mod and disable both async navmesh and dungeon

#

so that is what we have been playing with

#

but we still get issues where if anybody joins without loadstone, they will be desynced from the rest of us which do have it

#

and there is still a "random" chance it will desync if we leave the async settings off

marble scaffold
balmy prawn
#

i just disable dungen optimization and it work here

#

it was layout desync

#

always facility

marble scaffold
#

desync does generally seem to happen for us most frequently on the factory

#

especially on titan which has the slowest load times and the biggest factories

#

we've seen it in manors though

#

im not sure if we've ever gotten it on mineshaft but i think that's just because mineshafts havent generated when we've had issues

balmy prawn
#

When i was playing Adamance with my friends. We play a lot in mineshaft interior, we were lucky with mansion in adamance and after that facility with desync.

#

My friend says that the apparatus room was without apparatus.

crisp relic
#

though, disabling async dungeon should leave dungeon optimization active, so it's weird that you say that fixed the desync issues
disabling async dungeon also implicitly disables DungeonRealization.SpreadOverMultipleFrames, since it has no purpose without async dungeon. Perhaps it's actually that portion that's broken, and not the entirety of AsyncDungeon?

I wouldn't be surprised if that's the real culprit, since AsyncDungeon on its own just changes three dungeon generator settings, and modifies the frame skip logic for more consistent load times. Spread Over Multiple Frames, on the other hand, changes the underlying object spawning logic, since normally that step happens all at once with dungen

marble scaffold
#

also just to be completely clear

#

i am still not against the possibility of "i have a mod that conflicts with loadstone and causes issues"

#

it's just, for our profile, we consistently have 0 desync issues whenever i disable the async settings as long as all of us use it

#

it still seems to desync from vanilla generation because players who dont use the mod get different dungeons from the rest of us who do

#

it's a strange result, it apparently causing a "synchronized desync" where everybody is wrong but wrong together so it doesnt matter

#

lol

crisp relic
#

I'll double check vanilla vs just loadstone and see what happens, since that should have identical results, or at least it did last time I checked

crisp relic
#

yeah all three interiors are consistent between Loadstone Beta and Vanilla

marble scaffold
#

why are the minecart tracks missing in the second screenshot

#

is that just an artifact of the resolution

#

oh i see

#

default layer is off in the second one

#

anyways im not sure if it's a problem with the non-beta or a mod conflict then

burnt hull
#

it has to be a mod conflict

#

my config with basically every feature enabled hasn't caused desync for us in like 8 months

burnt hull
#

all it does is show the current level's seed in a corner of the screen

#

as for the fire exit fix, not sure since i don't use it

crisp relic
# burnt hull it has to be a mod conflict

that's my thought as well
unfortunately, it's hard to say what exactly. With objects spawning across multiple frames, even a misbehaving monobehaviour could cause things to break

marble scaffold
#

unfortunately

#

im not surprised but replicating it is annoying enough i dont feel like trying to work out the conflict

#

just kind of sucks

crisp relic
#

yeah
I've tried to find the conflict so many times before with no progress

balmy prawn
#

I had desync testing the beta. Just two players titan moon facility interior

crisp relic
#

could you try disabling DungeonRealization - Spread over multiple frames, and leaving everything else default?
I believe that setting has a high probability to silently conflict with mods in this way

balmy prawn
#

I'll try but disabling dungen optimization also solves the problem.

hollow ibex
#

Should I currently use stable or unstable? Or wait for merge?

burnt hull
#

they seem pretty similar in terms of performance so it probably doesnt matter

tranquil marten
#

@balmy prawn @crisp relic
Quick question does the desync happen when you have player late join? Couple weeks back we had multiple facility desyncs happen as you're explaining and our theory was a late join issue. It would only start to happen after players late joined into the lobby so it was damn near impossible to replicate. Luckily it didn't happen last night to use, but we experienced it quite a few times before. I cant tell ya what moon it happened on, but I think it was vanilla ones.

balmy prawn
#

yes i use lobbycontrol.

#

Turning off dungen optimization fixed my issue.

marble scaffold
white creek
#

wait

#

what did 1.0.23

#

Change anyhow

#

ALSO DOES ANYBODY HAVE ANY IDEAS ON CONFIG FOR LODESTONE Or just leave it as the default

crisp relic
#

For the most part, leave the config at default unless you have a specific reason to change it (desync, incompatible interior, you want to prefer framerate over loads, etc)

crisp relic
crisp relic
# white creek Change anyhow

#1242303311793885317 message
It's a relatively small technical change that should help the cache be a bit more consistent

crisp relic
#

or, for a more complete explanation:

Every tile has a set of tags that, when combined with a set of tag connection rules, decides which tiles it can and can't connect to. The vanilla game uses this to try and prohibit loot rooms from connecting directly to maze/brick rooms.

In vanilla as a new tile is being added to the layout, it tries every position and checks if it's a valid position, which includes checking the tags and tag rules. While this seems intuitive, there can be hundreds of thousands of tag comparisons even just loading into Experimentation, and millions on a larger map like Titan.

The old Loadstone behaviour tried to optimize this tag comparison step by creating a cache. For any given pair of tiles with a specific set of tag connection rules, the same tiles can always connect or not connect, so when loading into a new interior for the first time, it takes the tile connection rules, as well as every spawnable tile, and calculates if a connection should be allowed for every single pair. Then, whenever the level generates, it checks both tiles against the cache to see if a connection should be allowed, rather than having to check each tag against every other tag through the tag connection rules.

The new Loadstone behaviour just tweaks that cache's behaviour a little bit so that it's caching for the set of tags on each tile, rather than the tile itself. This should hopefully make the cache a little bit smaller, and prevent any possible situation where a tile might be considered different due to a change in the way it loaded in or something similar, since that causes the cache to miss, in which Loadstone has to do the full calculation for every single miss, on top of adding that calculation into the cache.

#

This change could also affect the desync issues people have been having, since the cache will no longer be subject to Unity changing an object ID for one reason or another, which could possibly lead to invalid cache data being used (though that should be an astronomically unlikely event to have happen, like you'd need tens or hundreds of thousands of tiles for a decent chance of that happening)

white creek
#

Is Async Dungeon Generation supposed to be off?:

white creek
crisp relic
#

Async Dungeon Generation should be on unless you have issues with that specific feature

crisp relic
white creek
#

People saying about desync