LADXR icon indicating copy to clipboard operation
LADXR copied to clipboard

[ideas]: entrance randomizer (general)

Open foxsouns opened this issue 2 years ago • 25 comments

inclusion of excluded rooms:

  • rooster key cave, pit exit: treat rooster key cave as a one-way (two-entrance) cave: whatever gets linked to it would be a teleport to within rooster key cave, and pitting out would link back to said linked entrance.
  • mabe well: treat like desert cave, aka put mabe well as a one-entrance cave with the rest, and have room linked to a different exit
  • outside d4 cave: make entrance staircase to be always a tile, and place a tile next to it. allows player to dead-end without the key, but not softlock.

sub-modes:

  • "Split": split pools, as it works currently
  • "Crossed": the single and double entrance pools are mixed together, allowing for any entrance to be either typing

foxsouns avatar Jan 27 '23 15:01 foxsouns

I think Daid has said that the connector/simple pools weren't mixed because generation often failed. I think we've added quite a few new connections in logic recently, especially for ER - I'd be curious to see if the situation is different these days.

kbranch avatar Jan 27 '23 22:01 kbranch

I've always been of the opinion that the entrance rando categories should be reworked anyway. The entrances added between Advanced and Expert isn't all that large of a difficulty change, and the two entrances added for Insanity are also really not that big of a jump either to be honest.

My take:

  • Simple: All single-entrance caves, whether or not they have a check behind them
  • Split: Simple, but connector caves are shuffled amongst each other
  • Mixed: All entrances shuffled amongst each other

I use "Mixed" instead of "Crossed" to match the wording used by other Zelda randoes. "Crossed" is used by the ALttPR community, but specifically for connectors between the light and dark worlds, I wouldn't want to cause confusion.

I also like the idea of shuffling the back doors to D6 and D8 into the entrance pool like how Z4R did once upon a time. I don't know if those would be considered connector caves at that point, so I don't know if/how dungeons would be considered part of my Simple/Split pools.

muffinjets avatar Jan 27 '23 23:01 muffinjets

you know, i think i like that maybe something like this?:


Entrance Randomizer Mode:

  • Vanilla [Entrances are not randomized.]
  • Simple [Single entrance caves are randomized.]
  • Split [Simple, and connector caves are shuffled amongst each other.]
  • Mixed: [Split, but all entrances share the same pool.]

Entrance Randomizer Difficulty:

  • Casual [Does not randomize empty single-entrance caves, excludes problematic entrances.]
  • Normal [(Only) excludes problematic entrances.]
  • Advanced [Split/Mixed] [Allows minorly problematic entrances. Excludes a few really annoying entrances.]
  • Expert [Split/Mixed] [All entrances will be randomized.]

foxsouns avatar Jan 27 '23 23:01 foxsouns

or, maybe, just a checklist? options being:

Entrance randomizer:

  • Vanilla [Entrances are not randomized.]
  • Simple [Single entrance caves are randomized.]
  • Split [Simple, and connector caves are shuffled amongst each other.]
  • Mixed: [Split, but all entrances share the same pool.]

Options: [ ] Allow non-check single-entrances? [ ] Allow softlocks? [ ] Allow annoying entrances?

foxsouns avatar Jan 27 '23 23:01 foxsouns

I like that, the vanilla/simple/split/mixed and the checkboxes. I am curious as to what the "annoying entrances" are, though I admit I play ER often enough that I simply don't know what a casual player finds harder

muffinjets avatar Jan 27 '23 23:01 muffinjets

I like that, the simple/split/mixed and the checkboxes. I am curious as to what the "annoying entrances" are, though I admit I play ER often enough that I simply don't know what a casual player finds harder

The water rooms (mambo, damp cave), and raft return, all to prevent softlocks, i think.

foxsouns avatar Jan 27 '23 23:01 foxsouns

OH WAIT SORRY

foxsouns avatar Jan 27 '23 23:01 foxsouns

@muffinjets those are the softlocks category: oops. the "annoying entrances" are raft shop and ~desert cave i think?~ people should not let me think lol. it's raft shop and mamu.

foxsouns avatar Jan 27 '23 23:01 foxsouns

(i dont mind desert cave :> i think we should make more >:3 can you tell? hehe)

foxsouns avatar Jan 27 '23 23:01 foxsouns

first comment update: had an idea on how to make outside d4 cave work

foxsouns avatar Jan 27 '23 23:01 foxsouns

Entrance randomizer dropdown options:

  • Vanilla [Entrances are not randomized.]
  • Simple [Single entrance caves are randomized.]
  • Split [Simple, and connector caves are shuffled amongst each other.]
  • Mixed: [Split, but all entrances share the same pool.]

Checkboxes: [ ] Allow non-check single-entrances? [ ] Allow softlocks? [ ] Allow annoying entrances?

@daid, do you approve of something like this? I'm working on mixing the pools and don't want to get too deep if this approach wouldn't get merged.

kbranch avatar Feb 15 '23 03:02 kbranch

How will you make sure that mixing pools actually works? As I split them to actually get working seeds.

daid avatar Feb 15 '23 19:02 daid

I actually went ahead and put together an initial pass at it on my fork: https://github.com/daid/LADXR/compare/master...kbranch:LADXR:mixed_er

The general idea is:

  • Create a Logic object and count how many locations are created with the default entrance map
  • Assign entrances totally randomly without separate pools
  • Create another Logic object and compare the count against the correct one
  • If the counts don't match, pick a random inaccessible entrance and swap it with a random accessible entrance
  • Repeat until the location count matches the reference

It's not particularly clever, but I feel like it's in the spirit of making things as random as possible. It adds very little time to generation, as far as I can tell so far.

I still want to take another pass at it and clean things up, but it seems to work.

kbranch avatar Feb 15 '23 19:02 kbranch

oh, swapping, that is smart :) I think the counting might be done differently/smarter, but not 100% sure.

daid avatar Feb 16 '23 13:02 daid

Yeah, I don't love the mess of list comprehension. It also occurred to me that bingo 25 could potentially be unbeatable as it stands - it needs to look at locations rather than items.

kbranch avatar Feb 16 '23 14:02 kbranch

All entrances should be reachable, I think that would be a minimal test...

daid avatar Feb 16 '23 17:02 daid

oh, about this: world state: beatable is going to affect this too, right?

foxsouns avatar Feb 16 '23 18:02 foxsouns

All entrances should be reachable, I think that would be a minimal test...

Oh, true, that's an easy one. I should have some time tonight, I'll go over it again.

oh, about this: world state: beatable is going to affect this too, right?

I think it would take more extensive work to allow actual checks to be totally disconnected. I think junk entrances could be left orphaned, though.

kbranch avatar Feb 16 '23 19:02 kbranch

It's also worth thinking about what "allow softlocks" means, exactly. There's the watery entrances, but it's actually kind of a sliding scale:

  • Watery entrances
  • Exiting from a closed D7 gets you stuck in the wall (only an issue with a connector mapped to D7)
  • Exiting from a locked/bombable entrance (again, a connector issue except there's usually also a way forward)
  • One way connectors like raft return

All of these will or can require the house warp, it's just a question of probability. The watery entrances definitely feel the most annoying because you have to know to hold the S&Q combo, though.

I have a version up for testing, btw: https://kbranch.dev/LADXR/www/ https://dev.magpietracker.us/ should be able to handle mixed pools now too.

kbranch avatar Feb 16 '23 20:02 kbranch

For what it's worth, Z4R had a setting that changed the one-way connector caves and made them two-way, to help with routing

If adjusting certain screens is the route we wanna go down, we might be able to add a standable tile at the top of D7 and at the droppoint of the damp cave as to not make it a softlock

muffinjets avatar Feb 16 '23 23:02 muffinjets

Personally I'd draw the line at a setting for watery entrances and leave everything else alone. I see those as a bigger deal because a newer player trying simple ER could lose progress by not knowing you can buffer S&Q.

I don't have strong feelings about it, though - definitely interested in other takes.

kbranch avatar Feb 17 '23 05:02 kbranch

By "leave everything else alone" what do you mean?

muffinjets avatar Feb 17 '23 05:02 muffinjets

Sorry, I mean I wouldn't address the stuff lower down on that sliding scale than the two watery entrances. I'm more adding a data point than arguing against going further, though.

I think I feel the same about the tile changes, but I could see making the one-way connectors two-way being interesting.

kbranch avatar Feb 17 '23 06:02 kbranch

The watery entrances could be disallowed in casual/normal logic, but fine in higher ones (with glitched/hell accounting for jesus jumping in damp cave, if that's even possible?) I don't think buffering S&Q is more obscure than other hard logic stuff.

D7 entrance should just never be a connector in my opinion, since if it is, the shack also has to be a connector (or the check there would be unreachable, which might still be okay, but only in specific settings). But if both are connectors, then either the D7 peak is pointless (since both connectors are reachable from the other side) or locked (if the connector to the shack is itself not reachable)

Most locked/bombable entrances are just "hold down and you're fine" except for locked D8 entrance (which is "hold left/right" instead). So D8 not being a connector in casual logic, otherwise it's fine?

One way connectors are mostly fine, imo. There's only 3 of them anyway, iirc, raft return, west tal tal connector and inner rainbow connector. They make stuff more complex at generation though.

In general, wouldn't a double wave function collapse work here? it would mean that item generation and entrance shuffle are considered at the same time, but this way there shouldn't be a way to not have "a path to victory". (actually, this might be a good topic for a research paper)

Tarokarr avatar Feb 17 '23 11:02 Tarokarr

I'm not sure how I feel about the entrance pool being controlled by logic. Zelda randos seem to keep those separate, but there is something to be said for reducing the number of settings to sift through. A lot of people who use glitched/hell strategies like to play with normal logic, though.

I think you're right that preventing D7 from being a connector makes sense, now that you've thought it through for me.

I'll have to let Daid comment on the double wave function collapse part - that's a much bigger change than I'm comfortable making, haha. Generation doesn't seem to be much of an issue with my entrance swapping approach, though - it seems to add maybe 200ms on average, at least on my PC with the settings I tested with.

kbranch avatar Feb 18 '23 04:02 kbranch