#Dungeon Generation Plus
1 messages · Page 2 of 1
Uh if override is false, all main path detail values should be copying from the dungeonflow
If no, then I left a big fuckup
sorry, what override do you mean?
This one
ohh
hum I see
yeah I guess that name should've been a tip-off but it didn't occur to me that it would affect the whole main main path lol
the first path was indeed an override since I wanted to add the resonance chamber onto it
so if I leave everything in main path 0 as non-overridden then it will just use the DungeonFlow? perhaps I should just override everything and leave DungeonFlow empty for clarity though
Up to you, whichever work flow works best for you
Keep in mind that if for some reason, you wanted to add a config to let the gamer choose vanilla dungeon generation, then you would want dungeonflow setup properly
But other than that, do what works best
right right
then having it be no override is probably best
also, random question, I noticed that the GenerateMainPath() function looks like it's designed to stop assigning tile sets, archetypes, nodes and lines for each tile along the length when it reaches the node with the highest position... does that mean that if I have a Goal tile with position 0.7, it will cut the dungeon's size by 30%?
(speaking about the vanilla one, but I'm guessing your code also does something similar)
I have never ever thought about setting goal to anything less than 1
My alternative main paths don't consider that. So it will probably be undefined behavior for that scenario
huh
I've never really realized if the vanilla interiors have goal tiles, except maybe the backrooms in Factory
Vanilla interior have goal tiles set to 1 im sure, they just are normal generic tile
what's curious to me is that it sometimes seems like the resonance chamber generates and then the main path continues, but I guess I don't know for sure that's the case
huh, I see
I guess I'll add some then
do additional main paths also require start nodes that can be placed after the main tile prefab?
They shouldn't, just the first main path
Please work properly

it does work, but not properly 😅

it generates one main path with two paths set up in the extender currently
So it fails the second path?
oh, no, it actually completes with only one path (that I can make out)
Is the main path count 2 just to be sure?
yep

the main tile is the one directly center frame and extends to the left a little, that brown tile upper right of it is the main path and the lighter brown bottom right is a branch
I tried a few attempts in your dev menu and out of it and none of them seemed to do a second path
If you can somehow send me the current asset bundle, I can try and make sense out of it when I wake up
I'm also getting a weird lag where the delta time seems to be slow but jumps forward abruptly every second or so
unsure if that's anything to do with DunGenPlus though
My stuff shouldn't be doing anything like that, but what do I know at this point
I remember someone reporting a similar issue in the OpenBodyCams thread a long while back but it was some other mod doing it, maybe HDLethalCompany
it didn't make a whole lot of sense to me so I don't remember why it happened, I'll have to go see if I can find those messages at some point if I don't happen across a fix
and I'll see if I can get this stuff committed so Crab can send you the files
it's an improvement at least so 
Progress is indeed being made
the build shall be DMed to you later (hopefully sooner than)
sent via DMs
🫡
Were they?
Yeee
Discord filters out DMs from people you don't know now tho
so you probably didn't see it haha
I hate that discord mobile hides them
same lol
huh, I think I've seen message requests on my phone, that's weird
finally got around to looking at this again, I think the issue was that I had CopyFromNodeList without putting the main tile prefab in my secondary path
yep! adding the entrance to the secondary path fixed it 
now for the fun part, trying to see about this new feature
(bit of a dumb mistake on my part, I totally misunderstood the purpose of that option lol)
ayy, it even works in editor now!
your system for limiting which doorways the paths attach to appears to be working on my first attempt 👀
lab to the left, office straight forward 
Looks like an area that I didn't make clear
Ty for beta testing my guide
np! hopefully that's all that needs a look because I have a tendency to look at documentation for the absolute minimum time I think I can get away with lol
maybe if I end up fiddling with more I'll have to consult it again
for now this is plenty of toys
Slightly rewrote the wiki for the things Zaggy got pranked by
Once I get the all clear that the beta version is good for what yall doing with Half Life, then I'll publish it
And update the wiki some more
yee sorry I haven't been able to fully greenlight it yet, I'm kinda distracted by other things and also managed to break some things when I was trying to log debug it
well it was apparently the changes I made while adding debug logs that caused it to stop working entirely .... somehow ...
I was having an issue with getting a third path to spawn but I haven't figured out the cause yet because of that breakage lol
I'm currently distracted by the fact that apparently the HDRP culls the cameras in one loop and renders them in another, so light parameters set for one camera during beginCameraRendering don't take effect if I reset them upon the next call to that event
I have to transpile the HDRP code to give myself the event I need to change a light's brightness
yeeee
we ball, ill push the update publicly tomorrow since I'm updating my dungeon mod
fair, it at least is working for two paths
I've been fiddling with other stuff still, but I'll let you know if I figure out why the third one wouldn't work whenever I get to it
Finally back to messing with DunGenPlus, looks like it was failing to generate the quarantine path because I forgot to change the end node from position 0 lol
but also, I'm wondering, do I need to have an end node? it's a bit annoying to put all the tilesets from the line into the endpoint to make sure it doesn't fail to generate because of no matching doorways
i honestly do not know/remember if an end node is neccessary
hmmm okay
I think I saw somewhere that DunGen sets the last node to the goal node, but I may be wrong
who knows, something you have to test
yee
ill try and see the update out today, i wanted to release it last week but i got cucked by my dungeon's new tiles not being setup correctly
my fault
all good no worries
I can finally tell you whether it's working properly (it appears to be so far)
I had to add some debug logging into our copy of DunGen and in DunGenPlus to figure out all these failures though
but it's been coming in handy
just printing what each failure is and the unused doorways it was trying to match to, as well as the last list of tilesets, gives me a good idea of where to look
example:
AddTile onto Office Small 5 failed with last result NoValidTile, available doorways:
Doorway (1)
[Debug :dev.ladyalice.dungenplus] Alt. main branch at 0 failed to attach a tile to Office Small 5 at 0:1, using tilesets: Office Main
ahh I see I see
NoValidTile likes to happen a lot with our doorway restrictions
(I blame Plastered)
(I gave him the power though)
Ahh, okay. I can add a few more debug logs. They are debug level anyway now so I can add as much text I as want.
Ya I blame Plastered too

I have this silly little thingamabob
he added way too many restrictions in because he had all the tilesets in one archetype instead of making multiple archetypes
so now I have to make him delete a bunch probably
I can now understand your struggles
actually it's not that out of hand, I'll just delete it
the point of this was literally just to make it so we don't have rooms connected directly by vents
instead of having vent tiles connecting them
p sure this is the only restriction we need
I tried to stay away from connection rules as best I can. Since I know how chaotic it eventually gets
I think currently, I have 11. And like 7 of those are just, no library rooms next to other library rooms
yeah I didn't want it to turn into this
I added it in and Plastered was like wow this solves all my problems! time to put tags on every doorway and use it to make the elevator spawn immediately off entrance
like nodes don't exist
🤪
oh well
I should've screen peeked more
my fault for not listening to my worst fears yeah lol
truly understandable
I kinda saw it coming but I was distracted
damn this place is huge
I wish the terrain didn't get in the way so I could look down on it properly
i think sdm's dungeon length is like 4-5 now or something
cause it gets so big so quick
yeah we have ours at 25 with maptilesize 3
it's pretty chonky
although I think maybe I tried to scale it back when I added the two paths and it didn't save
sorry it's actually 3-4 length
it was supposed to be like 14-16 or something
oh wow
maybe you should use MapTileSize too
and my dungeon still feels big
then you can have the range be more granular
ill think about it. does sound nice
multiple paths definitely makes it tougher to scale right because each path has to be a smaller number
but I think it's okay
I gotta say though, despite my roasting earlier, @lone plover did have a good idea with this elevator on one path
they can generate on top of each other even if they go the same direction
oh also another thing I did was add this into DungeonProxy:
and in Tile:
DunGen royally screwed up the tile bounds visualization, so this allows it to actually show it for the async generation tiles and also show the exact bounds it uses to check for collisions
not sure if the override bounds are correct but we don't have any of those so 
it's ok I am fixing everything
generation no longer fails ridiculously often afaict
no more NoValidTiles errors
hopefully

@wide mantle seems like maybe alternate paths don't stop at the goal node like I think the vanilla main path does? I was hoping to use a position 0 goal node to stop a stub path after spawning just one tile (for a teaser for a path we will add later)
would I at least be able to work around this by putting that path first so it is considered the actual main path and use the vanilla main path code?
if that's desired, i can add that in
dont see why it would

let me see what DunGen is doing
this whole chunk
I think this logic is missing in your impl?
mayhaps I'm wrong
or maybe it's hiding this loop, lemme reread this
where is that code located
top of GenerateMainPath
cause im looking at the OG GeneratedMainPath, and I don't see anything about ordered nodes
here's the decomp
the first screenshot is from a diff version so it may not totally match
right yea
they just assume that's the goal node since they set that in the path builder
but checking for the last one is probably best
ill just copy what DunGen does
okey
shouldnt break much
if you think that's for the best I trust your judgement 🫡
it does seem a little convoluted to me though
maybe I'm missing some purpose in that htough
running through the target length once and tossing everything in a list
instead of just doing it in one loop
yeah
I would just say add the exit condition to your loop
it looks nicer that way lol
Idk if it's possible due to how DunGen actually works but it is super annoying when you get bad rng and it chooses a tile poorly however many times and deems the whole generation as a failure and completely resets. Instead of backing up a single tile and re-rolling that too see if it has a better chance
Who knows if that's even possible to fix but Lord it was always annoying to see when watching it generate asynchronously
I think it does roll back a little, but it's tricky bidness
Not surprised lol
Isn't too much of a big deal now though since you overhauled the tile bounds and connection rules
like here
I remember when I had that rollback code affect my alternate main paths
And I got a lot of errors
huh
😅
Which is my best guess to why DunGen doesn't do rollback stuff much
Fair enough lmao
time to rewrite the whole thing from scratch
Plus, resetting the generation is good enough
Not a huge deal lol
yeah it's not a huge problem
although I would guess that even just going back one tile can help a lot
It would've helped a TON back when Mesa had issues with tile bounds
Not so much now though
I haven't fixed it yet lol
Oh well.... Soon TM
@final shale besides adding more info to how DunGenPlus failed generation like this
Alt. main branch gen failed at Branch {b}: (Length: {t}, Ratio: {lineDepthRatio}).\nPrev tile: {prevName}\nArchetype: {archetypeName}\nTilesets: {tileSetNames}
Anything else you want
the failure reason
that's pretty important to let me know if I need to look at our rules or the tile bounds
(I know it puts the failures into buckets, but I don't find that it works very well for some reason, so I just like to see the last one)
I guess you can't really get that too easily though, I think you'd have to inject into AddTile
this was what I did, it would probably require a transpiler unfortunately
it's fine if you can't fit that in, though, I can just rely on this change in editor for debugging
ya looking at it means I gotta inject
isn't there a postfix inject that lets you look at local variables?
hum, not sure, I've never used one if there is
I'm not sure how you would tell it which local to look at
https://harmony.pardeike.net/articles/patching-injections.html
I would expect it to be here if there was a way
unless MonoMod has another way
no wait i can just inject into AddTilePlacementResult
easily get the last result stored
Plugin.logger.LogDebug($"Alt. main branch gen failed at Branch {b}: (Length: {t}, Ratio: {lineDepthRatio})");
Plugin.logger.LogDebug($"Prev tile: {prevName}\nArchetype: {archetypeName}\nTilesets: {tileSetNames}");
Plugin.logger.LogDebug($"Reason: {DungeonGeneratorPatch.lastTilePlacementResult}");
Anything else you think?
Oh and the doorways
moo
Now just need a debug panel for editing some values of the tiles, tilesets, archetypes etc. in game
It's ez now since the code is already setup
that would be pretty cool
I do like using the editor but that could allow some fast iteration because it's not nearly as slow in the player
looks right to me
it's missing the h

nitpick mode activated sorry
but that'll be pretty handy if I ever need to fiddle with stuff quicker than the editor lets me for sure
hopefully my DunGen misadventures are over for now at least
shit well i need another day
added zoom in/out
had to add a wiki page for the dev debug window
still have to edit the wiki for the main path extenders stuff
still havent fixed my own dungeon
the woes
oh boy
if you made a commit for the goal node thing, though, I can build that over here and try it out at least
if not no worries though
gives me more time to work on barnacle >:)
you're too fast
you can fetch now
my panel stuff could use a UI cleanup
but that's a later problem
yippee
that's what they (I) all say
I believe in you though
I wasn't expecting that one
Is what that's just some left over text from my phone
ya that was only 30 mins
don't know why the generation stats page dont move, oh well
oh is it resizeable horizontally you mean?
statsnot moving isn't a horrible price to pay for that for now
its just a button that forces it into this extended size
and back to compressed
does lag for the assets page during the extension animation but thats to be fair, that's probably a lot of text mesh rebuilding
well, how hard would a resize drag button be
thats tomorrow problem
hum, maybe they should be created lazily then? that's a lot of work though I'd imagine
oh i imagine it's like resizing the width of the text GUI forces it to rebuild the mesh and stuff
could maybe be fixed by preventing auto text rebuild until the animation finishes
maybe though, not a priority
right, but if only the visible text gets rebuilt then it should be a lot faster, right?
or did you mean freeze the ones that aren't visible?
yeah
okay wiki up to date
should be ready for launch when I update my dungeon tomorrow
you better not find any bugs with the stuff I committed
wait @stuck elm you using my mod now?
my first customer
It's basically just being used as a dependency for increasing the max shadow limit hehe
I'm technically not hooking into it or anything
But yeah, I'm "using" it

🫡
Mesa will push this thing to it's limits probably 😛
I am sure we will cry home to you if we find anything silly >:)
Also thank you again Raph, none of the plans we have for Black Mesa would be possible without this awesome tool 😄
ooh okay
I'll test it out in a bit, hopefully
I wanna try and push out OpenBodyCams in a bit here since I'll be up for a while
big success
(I was gonna try and clean up OpenBodyCams but I found a couple more complicated bugs to solve than I expected so here we are)
All working ? :o
yeee
don't question the fact that that new tile closest the camera appears to be off the start tile
we did some dastardly deeds
namely this deed
As long as you don't question some of my recent dastardly code
Now that we (Zaggy) got the archetypes per main path working, any chance you could add global props per main path?🥺
Not at this current time, remind me again in a few weeks
Okay 🙂
@wide mantle once again we politely inquire about possible additions of ensuring a certain number of global props per main path :3
I tried to wait a few weeks so hopefully it was enough time 😛
Also we are excited for you to see how rad Mesa is looking with DunegonPlus so far!
More like 9 days
I can do a quick lookup on how easy it may be to add. If it's too complicated I can't this weekend
No worries at all!
Felt so much longer for me 
Looking at the ProcessGlobalProps function
Doesn't look bad, I should be able to overwrite that
I also already have code that translates a Tile into whichever main path it's connected to, so I basically have everything to set it up
I could also do a dirty dirty trick, may be illegal. Actually nah too illegal
Do crime
Hopefully it won't be so bad 
@lone plover I am waiting for a Loadstone update since my nodes/lines manipulation nonsense is pranking them hard. I will push the GlobalTilesPerMainTile thingy along with that too. Sorry for the wait
No problem at all! Zaggy and Zac have been prepping the update to be much more optimized in the meantime 🙂
We appreciate you working on it 😄
oh I didn't realize that wasn't shipped yet, good thing we didn't get to the point of releasing an update lol
yeah haha, more time for bullying me for my past mistakes >:D
stinky
The local GlobalProp code works, but it's actually the first time I collided with Loadstone
So I need some more time
It's working but we have a new issue. If a moon cannot have 3 fire exits, then I can't just let the fire exit GlobalProp counter exceed 3. This means, for example, I can't just lazily let the fire exit counter for each main path be 1 and be done with it. I need more logic
And LLL directly manipulates the fire exit GlobalProp counter based on the moon
I think instead of a generic boolean to enable local global props per main path, I should add a list of GlobalProps ids that the interior dev must specify. That list will contain ids and their local min/max spawn limit per main path. The GlobalProp can only spawn if they are below the local limit (if specified) and the global limit (from DungeonFlow)
It's sorted out
Also lucky that I tested vanilla generation for my dungeon, that shit broke instantly.

I'm afraid of pushing this to main since I just broke it
Excited to try it out with our new generation
If you toss it to Zaggy we can stress test it lol
We do a lot of wacky stuff so it'll likely find anything wrong 
See if it works for yall. The local global props as well
🫡
ohh yeah that makes sense, I didn't think of that :(
will toss that in editor, yuh
thanks!!
oh I'm surprised the global props per main path stuff isn't in the main path extender, why is that?
is it possible to override it for a specific path?
I guess the global props are a post processing step, so this seems like it might be trickier than I initally thought, I hope I'm wrong
It is probably possible to tie the local global props to the main path extender. I didn't think of it tbh
But I can't override global prop values within the main path extender. The global prop has to be a hard limit. I can only enforce a local limit within a main path
I'm also wondering, what would happen with LLL's fire exit global prop count if I were to make it so that we have a minimum of 1 fire exit per path? would it cause any conflict if we have 4 paths with min 1 fire exit each and then LLL wants 3 or less exits?
yee, I think overriding the dungeonflow global prop range makes no sense anyway so that's fine
What you said is why Global Prop has to a hard limit that I can't touch. Creating a local limit per main path would satisfy what you want and not break the fire exit stuff
yee
but having it have a minimum of 1 per path with 4 paths wouldn't cause generation to get confused when it can only actually place 3?
it would just stop if it hits the global limit before satisfying the local limit?
Ahh that is true hmm
If it hits the global limit before the local limit, tough luck make better dungeon
But it can't reach the global limit due to the local limit, I can maybe add an extra toggle where it forces the global limit to be reached for the remaining props
yeah, I think global should always take priority
if global says 4 max and local says 5 min, it spawns 4
if global says 3 min and local says 2 max, it spawns 3
third one in a random location
that's probably feasible without too much extra hassle
for custom global props we can just set the global to 0-1000 and then use locals to do things
and for fire exits it should just work ™️ I think
Would you rather I tie the local global prop stuff to the Main Path Extender?
I'd like to have the option there at the very least yeah
since we want to for example spawn more military style hazards in the military line
Understandable
Should be feasible, but next week I need
What I gave you should be fine for now?? At the least tell me if it ever breaks
would it also be possible to do a local curve? that seems like it could be pretty tricky but handy
also no rush 
Local curve?
I haven't pushed the .dll I gave you since I'm actually afraid I'd break something for once. PostProcess patching wasn't as easy as it originally seemed.
ahhh wait the curve is in the global prop in the prefab
I'm not as knowledgeable about how these work tbh
Fair
the depth weight scale is what I was thinking of, but I'm imagining the fact that it's in the GlobalProp behaviour itself makes it very tricky to make it use a different one per path
I guess we can just put an override of the curve depending on what tileset a tile belongs to??
not sure how it weights these tbh
I guess it samples that weight curve based on the depth of each global prop and adds them to a GameObjectWeight?
Yuh
I don't have an easy way to modify the curve based on main path stuff
yee that's all good honestly
But you can change the curve on a tile-to-tile basis
I was thinking about it wrong
WELL
Since I already placing local global ids inside the main path extender
And as such that id has data linked to it
It's not I can't add an addition animationcurve to further modify the weight
humm
I wouldn't necessarily say that it's important though, I hadn't thought this through to the point of figuring out that custom curves per tileset would work
mostly because it was Crab's idea lol
I've been too busy with other stuff 
Fair
this will be useful for the fire exits though, we did want to have those spawn one per path on the black mesa moon
I can definitely see per-main-path settings being useful in the future but I do feel bad for asking for that if you're busy
this is more than enough for now, and I'll let you know if I see any issues with it in our testing
thus far nothing has seemed broken
I chose to be stressed with 2 separate unity projects. It's all good
Also I know that interiors take forever to work on so I know I have time
Can't be doing stuff with Unity for free forever
with our endless list of things to fix and new ideas to distract us it sure does
fo sho
unity is too painful to do it for free
some stuff is really painful tho lol
I think if I had to use Unity without being able to patch the HDRP I would lose it
the camera callbacks are terrible
lol it's why I just added ™ to my fun. I just spent my Sunday thinking it was so over as I swapping .fbx models, and all the IK stuff that worked previously did not
Turned out to be a stupid scale issue
I see I see
yeah that sounds like a fun issue to track down
it's a lot harder to have granular commits in Unity although I do my best so we haven't had anything really get us stuck for too long
but when that happens it feels like poopoo
frlll tho
Why can't we be one of those cool modding communities with a cash flow 😭
Honestly good question. What makes those cash flow modding communists have paid mod stuff?
Like porn mods I can understand (Skyrim lmao) but I know I have heard of paid mods for other stuff too
The first step would be having content hosted on a platform that actually offers anything at all
Second step I suppose would probably be some sort of better push or commisions and or patreon type stuff
last time I was looking at it if the community was on curseforge from the jump i would have made a couple K in usd off LLL
which would have been life changing
TModLoader only really exists because of it's patreon as another example
What it sounds like to me is that a mod has to be so useful and integral to a game (and not easy to replicate) for it to exist as a paid mod
My personal opinion, if LC was still mega popular, custom interiors were easy to create, good high quality custom interiors are plentiful, AND something like LLL wasn't easy to replicate, I could see it becoming a paid mod no sweat
I mean at the end of the day paid stuff would def be a popularity contest just due there never being enough money to go around
which means either essential stuff like api's or hyper popular stuff like content expansions
Ya content expansion was something else I was thinking
LLL and Wesley's are probably the two biggest sides of the coin in that regard
Wesley's I'm not too sure on what's happening over there. I know my interior has a lot going for it. I think both of us could do a content expansion type stuff if a patreon existed or something
But for me personally, I do this modding stuff for fun so I feel bad doing a patreon for it.
Well actually truth be told, I don't think there's a market for a patreon for LLL mods
Wesley has like 13 moons and 2 interiors. Lot of cool stuff
IMO you might struggle abit in regards to how heavy your mod relies on the crossover aspect of the theming.
Shouldn't feel bad about it, It would be very much optional. At least for me I would be more than happy working on LC stuff fulltime if that was a viable option for me, Currently it's very much not so I don't, Not too much deeper than that
I think if the game was actively updated there would be a market for a handful of creators maybe
Ya makes sense. Wesley goes for a breath approach for content. I'm going for a depth approach for content. One interior packed with so many little things.
I assume what you mean by themeing is that my market would be theoretically limited to people who don't hate the Touhou theme?
Yeee, which isn't a diss in anyway just less of an audience by nature
Nah I don't see it as a diss. I see it as a challenge
To use my themeing in a way that can reach a larger audience and not just my niche Touhou audience
Seems to have worked, 3rd most popular interior, but I did get it in the interior business early and spammed updates a lot back then
And also, I only had the patience to make funny touhou mod since it's touhou. Would never do this shit again if it wasn't for that
same lol
I have a kofi and made only about $10 from Mesa with it
But gave Zac and Zaggy $4.5 of that haha
I got a good take home of less than $0.5 due to fees 
I get more joy from seeing people have fun on something we made than I do from monetary gain though so that in itself is very rewarding 😛
You forget, the audience for this game is literally children, and children don't have money.
Other moddding communities have a 40 year old audience, thus have more opportunity in general.
Hell, we have the commission policy the way it is specifically because of the child-average audience.
Ehh, only if they back-end-dealed you. The frontend literally pays in $5 visa gift cards. It's scummy.
We've been over all this though to death by now. 


ThunderStore, as much as I hate it, gives you just as much as 9/10 other platforms, a spot to put your kofi/patreon.
It's up to the users (see above audience comments) to decide they want to go out of their way and support you.
And this isn't a diss to batby, but I agree. Disproportionately people support content over libraries, I've found.
It does if you do things properly, professinally, and build a resume out of your GitHub.
The things I was screaming at Batby to do "properly" etc so it helped in the future.
For anyone following along, if you want a job in tech in the future, it's a tight-knit community.
There are loads of things you can do to show that you are "grown up and ready to play the game"
Following GitHub's Open Source Guidelines are pretty much the 101 for "where do I start?"
Open Source 101
Oh forsure, Hence why I mentioned that I think theres potentially room for creators rather than mods itself. If I ever tried to go the patreon route it would be balancing act of api/tooling stuff and content stuff
Yeah, you'd be most likely to get a stipend from the moon creators who themselves were making more, downstream flow.
This why LethalModding wanted to do the forced split on installed mods, to ensure libraries got something versus nothing.
stuff like #1221617443198341120 and other related thingo's some way more funding friendly
That and the huge enemy mod, forgot the name. + SCP Project too. Thematic things fund better.
I do agree. There's things that I should have done during the 6 years that I had all the time in the world to make funny touhou games/mods. Unfortunately I didn't have proper work ethic and outlook until I got hit by the Amazon associate treatment™️. 😄
But it's all good. What's life without some mishaps along the way.
Right? People only realize "oh shit, I should have done that" in retrospect. Hindsight is 20/20 etc.
@final shale done
Basically what I said earlier, the Local Global Ids are tied to the main paths now. And there's an extra toggle to let a main path finish reaching the Global Prop max limit
I thought the code was broken when I found a disparity
It turns out that my test was broken
Code all good
I tested the code I bit, I trust to test it live

oo cool
we've still got some stuff on high heat in the oven so it'll be a bit before we put them through the proper test, but I haven't had any issues with the previous one you sent in editor or in player so I think you did well 
@wide mantle I know SDM adds more scrap whenever it spawns on smaller moons, is that something built into DunGenPlus? I'm thinking we'll probably want to do the same thing with our new generation
If not it's no big deal, I'm just asking before I do the work to write a little script
That feature is in SDM, but im planning to move that feature to DunGen+
Nice good to know 🙂
With better functionaility
I like the sound of that
btw any tips for the global props per path? I was having a ton of issues with it
I haven't released the update yet for that feature. I believe it's all ready but I got stuck with updating SDM so I haven't released that DunGen+ update
This is the latest build right?
Yeah I didn't think it was on the TS
Do you recommend keeping the global props in the original dungenflow along with the rules for each path?
Ahh let me explain what that feature actually does
Yeah, all I was getting was failures no matter what I tried with adding them per path
The global prop id/count must STILL exist in the dungeon flow, that number is the global hard limit. The number in the main path details is the local limit for that specific main path.
Hmm that's how I assumed it worked
You saying that it still not working nicely?
Give me a moment. I'll set it up again
If you enable debug logging, then some of my testing debug messages may still be there
Is that in the config for mod?
I'll try that in a moment, I hit play in the editor to get an initial test
and the framework that I'm testing for adding items/enemies to a dungeon
oh are you testing this in unity editor and not in game?
I am testing in editor
that's probably why, my code probably doesn't work in the editor, only in LC
I'll try it ingame but I don't think it made a difference before
everything else with dungenplus works in editor for us
Yeah it failed in editor
I'll try a build
If so then baller, but I never tested my stuff in editor so I wouldn't know
I always tested my shit in game
It takes awhile for the project to build so testing in editor tends to be faster for us 😅
It's why I added the dev generation tools so it's a little faster
This is the props btw, I have this on the dungenflow and the same but 1-1 on the three paths we want them on
Should be fine then
I was also having trouble with that😅 I couldn't get it to generate once using the tools, but it's fine outside of that 🙃
your mod is cursed what can I say
But if you continue to have issues I can look at it later
Send me your lethal bundle and whatnot, I'll take a deep look
I'll DM you a google drive to this latest build. Stupid discord and it's file size limits
real
it'll be a hot minute😂
i did some visual debugging, it all seems to work. each path has only one red/blue cube (which represents your only local global prop)
@lavish citrus if you can show me later what those global props mean, then I check in the dungeon, but debug and code wise, everything appears to work
They are the Healing and HEV Charging Stations
Did you change anything? When I was testing in the dev mode I had no luck
Changed nothing
I can check actually in game inside the dungeon in a fat minute, I'm currently setting up the update for my interior
Cool, just let me know 😁
Here's what they look like
I pushed all the changes that I have made so far live
As I'm testing it live
Ill check your stuff @lavish citrus in game in a fat minute

Thread sent me two months up in messages, thought I missed like 20 messages and then I found myself reading a good few hundred messages in an hour
Just seemed to be a lot of zaggy yappin
And me
I never yap
don't forget me
Could never forget you 😔

What do you call what you do then?
knew it
@wide mantle Testing that build I sent you with the live version indeed works, awesome 😄 All the versions I downloaded from the discord didn't before
Did you ever try to switch the level to black mesa when using the dev tool? I can't get a successful generation on the tool on black mesa, experimentation work fine tho
Also did you leave that visual debugging in here somewhere?
I never tried out your level, but it wouldn't be that unique. It only really copies the map scales
What chu mean? You mean like to open the window?
Just odd that it works fine outside of the dev tool but not in the tool
the blue and red boxes on the global props
Those boxes was me writing my own hacky debug code. It's not public
rip lol
This I can check later
Thanks so much for the help tho! Glad we'll be able to have it all working in the next update 🙂
All you need to do is switch the level to Black Mesa in the dev tool. For some reason it never works
lmk what you find, I'm just curious. It's not a huge deal
psst @wide mantle thoughts on patching LLL to be aware of lines/archetypes that are in the multi main paths?
it looks like we're having issues with our SpawnSyncedObjects not being registered, and my theory is that it's caused by us not listing all our archetypes in the normal DungeonFlow
for now since we don't really have an intention of allowing vanilla generation, we can just work around it by tossing everything in there, but it might be nice to make it work out of the box
for your convenience, the method that would need patching would be this (hopefully only that):
https://github.com/IAmBatby/LethalLevelLoader/blob/main/LethalLevelLoader/General/Extensions.cs#L16-L39
it could also stand to be patched with injected tiles, but injected tiles suck so 
That looks easy to patch I'll try and work it in tonight
And if it's not easy then I can bug Batby and I can get an easy start in fixing it
It also explains why I haven't noticed this bug yet. I register all my net objects personally
yeah we register some, but we have a lot of freakin doors lmao
also just an update on the "theory" part, it is confirmed
doors started appearing after I added the archs to the DungeonFlow
huh, thats weird
its true
i dont think its a black mesa thing, i think its a scale issue. Titan also fails
do you mean with the per-path global props? because I believe @lavish citrus tried with a new build with those set up and had issues again loading into black mesa moon, then again with the old build he sent you too I think
he would have to confirm what all he tried and the results, but I think he won't be up for a good bit
nah global props works
LC fails to load black mesa on a big moon, with my dev tools. I don't know if it works regularly
My current guess is Black Mesa's high retry count
hmm
I was getting 31 retries on just experimentation
oh my
I haven't had a look at that stuff in a while but they did make some changes that would potentially make things worse
idk if it's in the build you have but I think it is
there's a line at the end of the quarantine path (leftmost one off main) that is tricky to spawn so that would be my first thought
it might be calling before or at the resonance chamber on that line
at seems more likely
testing my dungeon, i get 0-5 retries for all moon sizes
*failing at
black mesa, i got 2, 51, 29, 55, 8, 0, 33 on just experimentation
weird thing is that the dll has a patch (which I was hoping to remove) which multiplies the retry count for black mesa interior
so I would have expected it to be enough but maybe it's actually just that bad
rend is hardcore failing right now
sorry fingers having a stroke
by chance, is the retry multiplier x5 ?
I believe so yeah
cause rend fails at 250 attempts

I might have to have a look at the failure logs to figure out what's causing this
unfortunate to have issues with this again, it always takes a while to solve
is it saying the tiles is failing to attach to?
my guess would be a lot of resonance
It seems to failing at just first main path, which my code don't really touch or record data
So Lab Path is all problems
oh Lab is first?
damn that's annoying
any chance of patching some logs in? I have some in editor but the fact that it's seemed to be inconsistent between editor and in game for Zac (supposedly) makes me want to do it in player
Btw Embrion took 193 retries but it did generate
Exp is 1.5, Embrion is only 1.65
That extra 0.15 seems inconsequential but I suppose that's how it be
I see
yeah that do be kinda rough
Ill try and throw some in
I'm at PC now so lemme see what I can glean from async
I don't know your dungeon enough but it does fail a lot towards the end on just the first main path
From what I seen on async
also, i wonder how hard it would be to hide the moon prefab and allow zooming in and out on the dev menu? 🎣
also yeah I kinda figured it might not be lmao
I added zooming, but I'm still annoyed at the thought of disabling the ship's renders
Zac seemed to think it might be the props causing issues but then it was more consistent across different run environments than we thought initially
oh?
So you can't zoom that much out yet. The ship blocks the view
ah I see
I suppose deactivating the whole ship might be scary
zeekers code asplode
I didn't even think of zeekers moment
cache all renderers and disable those?
But ya
Like that's probably fine, but it's annoying which means not on the top of my list
fair lol
it's more useful for overly large interiors like ours
iirc SDM generates in a pretty small cluster so I imagine you don't need to zoom very far?
yuh
oh wait have you thought about instead screwing around with the near clip plane distance to make the ship not show up?
I guess the planet is still a problem but that's much easier to hide
but it still means I have to get the ship transform, do some math, which still annoys me
But not bad idea
could probably just be at a fixed distance really
Well if you start zooming, then I gotta update the clip plane distance
I'm being inconvenienced, so it stays on my todo list
zeekers shouldn't have even made this game
would be a lot less stressed out rn
lmao
trues
googling tells me that it's just among us but first person
kind of yeah, it's a deduction style game but people actually do tasks cuz they're fun and dont just afk
plus in the game theres a task that requires fishes, but u can grab fishes, hit a player with them, the fish despawn but do most of a player's health, its amazing
lmao I just went looking for the main path extender settings in the dev tools and the amount we have to scroll down in there to get to them with Black Mesa's interior is hilarious
yeahhh
blame @lone plover once again
but we don't have enough tiles in Resonance apparently
or at least that is my theory
it does seem odd though, when I had async enabled and tried to watch where generation was failing (kinda tricky tbh, smooth auto targeting the camera to the current tile might be epic mode), it looked like it was failing where it perhaps shouldn't have been
not sure why
it did mostly happen at the end of lab like you mentioned though
and I also wasn't able to reproduce the problem in editor for whatever reason (but that is using hte same generation including DunGenPlus I believe, I will have to confirm)
can i color the bepinex logs to red even with log debug
I can log the first main path failing now
But it's a see of gray text with nothing to guide your eyes
I think so, bepinex itself uses color codes for its logs
at least from what I've heard
I wouldn't know what they are unfortunately
BepInEx logs look normal in editor so it doesn't rely on whatever Unity itself does for errors
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
kinda orderly
i've seen its better orders personally
think you could fit the valid next tiles? or is it be complicated?
that do look very clean though
the valid next itles is TileSets
right, but some can't connect due to sockets/rules
but I guess you would have to collect from all doorways and that would be a bit annoying
True, but I'm just recording on what I send to AddTile
it's fine
Let me see
he mad
All I hear is more tiles plz
if you're gonna make more tiles, make more resonance tiles so we can stop having generation issues on that line
it will be delete
say goodbye to your resonance tiles
There are no more from base game so we will have to take artistic liberties!
yeah you better put on your artist socks or else we have to make some nodes
OR
My artist socks are not washed in a while
1/4 your length guys

I told them to behave and not have a archetype for resonance
No one is crossing that entire 40 tile'd path, when there's 3 more paths like that
yeah I am also skeptical about our size Lady
I tried to dial it back and then this GUY here made quarantine longer when we don't even have that many tiles in it

I did not
but yeah I think the interior size is a little big @lone plover
we quadrupled the size and I only scaled it down by like a factor of 2 maybe iirc
and then you made it even bigger
my dungeon is only 3-4 tiles long for the main paths
quarantine looks as big as lab rn
its not always true, bigger isn't always better
Quarantine having multiple tent rooms is actually cool tho
I genuinely never expected 1 player to be able to fully explore the whole dungeon
Orginally wanted each path to each be worth it to explore
🫡
I see 3 of one big quarantine tile in this generation
3 more of another
3 more of another
we will not be short on tents
we will see how it goes
we got more to do for that path later anyways which might help
think about it this way
the less of each tile you get in a generation, the more experiences players can have with different seeds
Plus at this point it is yours and Zac's project too anyways too lol
I trust your judgment
also weren't you looking at experimentation still?? lmao
I distinctly remember you saying you weren't seeing quarantine and then we looked at it and you were generating experimentation, where the path length got cut off due to the two starting tiles
well arent u guys setting time speed to be lower than default?
not yet no
oki
that's something Crab has been wanting to do but I am still unsure about my thoughts on it
retries after halving the lengths are much better
under 50 so far
even with the problematic line
in the resonance line I assume you mean
yuh
that would definitely track
maybe we can add some lab tiles into that line to improve things or something
I will consult with Zac when he's up
I might bring the length up a little if we can make that work
[Debug :dev.ladyalice.dungenplus] Main branch gen failed at Branch 1 (Length: 5, Ratio: 1)
Prev tile: SM_Kitchen_V2_FINAL_24x16 Tile
Archetype: NULL
Tilesets: SM_Bedroom_WeightAdjusted_Tileset (DunGen.TileSet), SM_Servants_WeightAdjusted_Tileset (DunGen.TileSet), SM_Kitchen_WeightAdjusted_Tileset (DunGen.TileSet), SM_Library_WeightAdjusted_Tileset (DunGen.TileSet)
Reason: OutOfBounds
Available Doorways: Doorway,Doorway,Doorway,Doorway
Used Doorways: Doorway
Next Possible Tiles: SM_Library_V3_FINAL_16x24 Tile,SM_Library_V1_FINAL_24x16 Tile,SM_ServQuarters_V5_FINAL_16x16 Tile,SM_Library_V5_FINAL_16x16 Tile,SM_ServQuarters_V4_FINAL_24x16 Tile,SM_MasterBedroom_V5_FINAL_8x16 Tile,SM_ServQuarters_V1_FINAL_24x16 Tile,SM_MasterBedroom_V3_FINAL_16x24 Tile,SM_MasterBedroom_V1_FINAL_16x16 Tile,SM_Library_V2_FINAL_24x16 Tile,SM_MasterBedroom_V2_FINAL_24x16 Tile,SM_MasterBedroom_V4_FINAL_16x24 Tile,SM_ServQuarters_V2_FINAL_24x16 Tile,SM_ServQuarters_V3_FINAL_24x16 Tile,SM_Library_V4_FINAL_24x16 Tile
generation times still vary quite drastically with the shorter lengths
nah me spamming ctrl c on the window console for some reas
also that looks bery nice I like it
oh I've never done that lol interestng
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
yours
when resonance main fails, there are no valid tiles (usually)
ill push this debugging stuff live
For now that's my contribution to your pain
Unless there was something else you kinda needed
oh that is not good, but actually doesn't really surprise me
thank you for your work 🫡
wait in this part
[Debug :dev.ladyalice.dungenplus] Main Room Length Index: 2
[Debug :dev.ladyalice.dungenplus] Alt. main branch at 0 ended with Military Storage Room 2
[Debug :dev.ladyalice.dungenplus] Main branch gen failed at Branch 2 (Length: 6, Ratio: 0.4285714)
Prev tile: Lab Alien Autopsy Small
Archetype: Lambda
Tilesets: Lambda Lab (DunGen.TileSet)
Reason: TileIsColliding
Available Doorways: Doorway (1)
Used Doorways: Doorway
Next Possible Tiles:
shouldn't the reason be that there are no valid tiles? why does it think a tile is colliding still?
is that the reason including previous AddTile attempts that it doesn't include next possible tiles from?
Whenever I watched it generate asynchronously it would seem to fail in Resonance even though the tile it was trying to place looked fine. I think there's something off with the tile bounds for some of the Resonance tiles
it would make more sense for it to be the fact that it can't connect any tiles
the tiles that it's visibly trying to place are the precursors to the ones that are either colliding or can't find any valid tiles
What does it look like when it can't find any tiles?
same thing unfortunately, that's why we have those logs above to differentiate and narrow the issue
Hmmm I'll be on in a little bit, keep me updated if you figure something out. You're fine to make the paths smaller btw 😛
already done
You try out the global props at all?
what about me
if you really want to...
are u bald
nooooo
we can shave him
bug in my part since im using a hack to get the tilePlacementResult
But if the next possible tiles debug string is empty, then the error is actually noValidTiles
no know what
this version of DunGen makes no attempt to record noValidTiles
oh wait how do you mean?
TilePlacementResult tilePlacementResult = TilePlacementResult.NoValidTile;
TileProxy tileProxy = null;
while (doorwayPairs.Count > 0)
{
DoorwayPair pair = doorwayPairs.Dequeue();
tilePlacementResult = this.TryPlaceTile(pair, archetype, out tileProxy);
if (tilePlacementResult == TilePlacementResult.None)
{
break;
}
this.AddTilePlacementResult(tilePlacementResult);
}
ohh huh I see
if doorwaypairs is empty, it will never call AddTilePlacementResult() for a noValidTile
ohh you were hooking that? gotcha
ya behold my hack
public static TilePlacementResult lastTilePlacementResult;
[HarmonyPrefix]
[HarmonyPatch(typeof(DungeonGenerator), "AddTilePlacementResult")]
public static void AddTilePlacementResultPatch(TilePlacementResult result){
lastTilePlacementResult = result;
}
that also explains why the DunGen logs only say TileIsColliding x21 and nothing else for 250 attempts
makes a lot of sense
so we really are just killing our generation with limited connections or something
limited something yuh
could patch start of AddTile to set last result to NoValidTile right? just to make your printouts clearer
My poor Resonance archetype 😔
it has to be transpilier unfortunately, this result is created and only used in this function, which is why the hack exists
transpilier annoying
i patch it real quick though, maybe even in the DunGen fix too
oh wait but also why not save the last result from TryPlaceTile postfix?
wait
that doesn't solve iteither nvm
no I mean
AddTile(..., ..., ..., TilePlacementResult result)
that result isn't used anywhere
I am a little confused what you mean by this though, wouldn't you be able to reset your static field in a prefix to the method?
and then set it again to the actual last result in AddTilePlacementResult
sorry for asking again but I may be dum
I think you saying to result my lastResult field to NoValidTile with an AddTile prefix patch, then record the real result with AddTilePlacementResult?
Well AddTilePlacementResult isn't even called if the validTiles list is 0/empy
right exactly, so if AddTilePlacementResult isn't called you get NoValidTile out of your static field
which should match what the variable is I think?
I suppose I can setup a PostPatch to do that to catch the function not being called
Well I'm already 50% in setting up the transpilier so time to finish it lol
lmao fair enough
prolly cause resonance has 4 tiles and none of them can be repeated
what....
the tile rules for those are set to never be allowed to repeat

Plastered
cause that would be dumb looking if you see the same resonance room
Prepare for death
some tiles that are more generic looking are okay
lady can we go to his house for a nice chat
I swore we went over this before Zaggy lmao
3 weeks of debugging due to this
but to be fair
I don't think you ever mentioned to me that they were set to not repeat
they are the ones who wanted that archetype to be that theme
I brought this up to zac!
lmao
pointing fingers
I remember talking about how there were not that many tiles in that archetype but I don't remember you ever mentioning that they were set not to repeat
I told him I was worried about DunGen being mad about only having so many to choose from since they are not allowed to repeat

whatever you say pal
you aren't escaping this one
Respecfully, I think you just gave a decent reason to why
Anyway, Ill push this better logging in a bit
thank you
I will see you in 100 years when Zaggy releases me from his dungeon
he thinks he's getting off easy
Hey don't leave me out, I call dibs on his kneecaps
I never knew this🫠
surely you explained it clearly and concisely
Always

Was a rare instance of me being actually serious for once
I explained that DunGen will fail more due to it having fewer tiles to use because they cannot repeat T.T
I remember the fewer tiles part
I am treated as the old man yelling at clouds

don't you finger point_up_2 zachary lmao
actually I'll have to confirm, but maybe the DunGenPlus dev tools are making Black Mesa bigger somehow
it looks experimentation-sized to me in Unity Editor, so I'll revert my resize and check how it compares in player between dev tools and normal landing
also, the entirety of the Resonance archetype was set not to repeat, so instead I'm trying making 7 nodes to generate each non-repeating tile and then switch back to Lab after, that should work pretty well
i would die of cringe if true
plz no
it seems like the length it's listing in the dev tool is 150% of the length set in the level from what we can tell





