kbuzsaki / bingosync

Collaborative bingo boards for speedrun races
https://bingosync.com
90 stars 104 forks source link

Added List and Generator for Zelda: Tears of The Kindgom #303

Closed akumar282 closed 4 months ago

akumar282 commented 1 year ago

Resolves #298 Credit to: @haylau @BrandonEcholsMusic @McBraggins @Alive527

BrandonEchols04 commented 1 year ago

@akumar282 I'm not exactly a programming genius, but if you're trying to copy how the BotW format was, then there may be an issue. There's some BotW code (I'm not exactly sure what) at bingosync/bingosync-app/testdata/gen_output/zelda_botw/

BrandonEchols04 commented 1 year ago

@haylau Again, I'm not a programming genius, but isn't bingoGenerator = require("./generators/generator_bases/srl_generator_v5.js"); supposed to be at the beginning of the goal list file?

akumar282 commented 1 year ago

@akumar282 I'm not exactly a programming genius, but if you're trying to copy how the BotW format was, then there may be an issue. There's some BotW code (I'm not exactly sure what) at bingosync/bingosync-app/testdata/gen_output/zelda_botw/

That looks to be generated output it's fine

There shouldn't be a problem with how it is now nvm added test data

BrandonEchols04 commented 1 year ago

@akumar282 There are going to be Short, Normal, and Long varients right? That's one of the main things that I wanted. We organized the SLRV5 list by difficulty, in hopes that we could use that 1 list to make the 3 varients. That's what the BotW one did, at least.

akumar282 commented 1 year ago

@kbuzsaki Can I get a review on this to see if there was anything missed? I created test data manually.

Alive527 commented 1 year ago

obviously with the test data the generator is working, but can someone who knows about the game just make a couple random boards on the website and calculate how early they could finish the board in maybe 3 lines, just to see if it really does end the board in a shorter length or longer length?

Alive527 commented 1 year ago

im not saying to play through the game, i mean just in your head roughly estimate how early into the game youd finish the board, and test on all 3 variants a couple times to see if its working as intended. Just a precautionary measure is all

BrandonEchols04 commented 1 year ago

@Alive527 I would, but as far as I can tell, it's not up one the website yet.

BrandonEchols04 commented 1 year ago

@Alive527 Once it's live, however, I would love to do so. :)

armuell commented 1 year ago

Umm hi, so I guess I should have checked this repo sooner but I'm one of the people that helped make the current version of botw's goal list. Something I want to say is that more goals isn't always better. Having 1-50 koroks or 1-30 shrines each having their own goal will dilute the goal list. This increases the odds of those types of goals showing up more often than unique one off goals which will rarely be seen. Kind of a quality over quantity thing.

Another thing that is important is to design the goal list with glitches/speedrun strats in mind (but not to balance around them). Every single collection goal like "get x of y thing" and rupee goals are made completely trivial because of duping.

Lastly, a lesson learned from botw's goal list is that some goals are just not fun at all. For example, 15 towers is a goal that requires a lot of overworld movement and watching the same 1-2 minute cutscene 15 times. That goal alone can take like 2+ hours for most people.

I've collaborated with a lot of people to make the first version of the goal list and it currently sits at 340 goals which is probably about how many goals your working list would have it the repeats were slimmed down significantly. There are some goals that are missing but were planned to be added later.

I feel bad asking this but would it be possible to use the goal list we created over the one in the commit? I think starting from a smaller more targeted list of quality goals would result in much better/more interesting boards and the list can always be added to in batches in the future

armuell commented 1 year ago

Here is a pastebin of the goal list we created: https://pastebin.com/EMHE762g

McBraggins commented 1 year ago

@armuell Hello there! Thanks for reaching out! For me, I would like to compare lists. My original idea was just a lot of those “x of thing” goals. I wasn’t sure where to limits those or shorten them because I didn’t do much of the BOTW bingo. I’d love to get feedback and insight to what philosophy you used when creating the BOTW board. I’ll take a look at your list and ours and I’d love to get in touch to make a solid finalized list!

armuell commented 1 year ago

Another issue I see with the goal list in the commit is that a lot of the goals are ambiguous due to the wording and will lead to a lot confusion. For example, "9 Necluda Koroks", the game does not have clear set boundary lines for Necluda, using the tower name regions would make it more clear. Internally, koroks are actually given ids based on the tower region they are in so saying "5 Mount Lanayru Koroks" would be better (again I picked 5 because in general, a majority of people do not find korok hunting in bingo fun as they are usually staring at an online map most of the time).

McBraggins commented 1 year ago

I see your point. That makes a lot more sense. The korok goals I had in place before I knew that the regions were totally different in TOTK. And I'm looking through your list and I'm confused as to the way it's layed out. Obviously I'm not code smart, I'm just a guy with a dream, so I was wondering what it all means.

BrandonEchols04 commented 1 year ago

@armuell We tried to balance it as well as we could, and we feel that the current amount of goals is sufficient. About the wording of the regions: We spent a good couple of hours deciding where the regions should be, and we figured that, even though there aren't set boundaries, it is easy enough to infer.

armuell commented 1 year ago

@McBraggins the pastebin I posted is the actual file/format that bingosync needs. So reading it might be a bit annoying. The philosophy behind the list we made is quite in-depth and isn't cut and dry. But I'll try my best to lay out some general bullet points:

Again this list really only scratches the surface as to how we went about making it. But the list we created was designed holistically, while keeping in mind how the generator works, with the intent to make boards that everyone would find fun to play, from the most casual player to speedrunners to bingo fiends.

McBraggins commented 1 year ago

That makes a lot of sense where you are coming from. I wanted to go overboard with the goals to start just so we had a large amount of them to choose from. Right now our current master list I believe sits at around 2300 goals and we need to shrink it significantly. Like you said, we have a lot of Koroks, Shrine, Tower, and armor goals. And I absolutely agree that it can be cut down. If possible, I'd like to go over our list with you and feel free to knock things off the big list if they don't fit a bingo environment. (And I would like Short, Normal, and Hard lists)

armuell commented 1 year ago

I disagree with the "easy enough to infer". There 1000 koroks in this game, many of which are right on the subjective and invisible border line between regions. And like I said before, more goals != better. So while you might think 2300 goals is sufficient I think it's way too many. Like when most people see "49 Koroks" they are gonna think "why 49? that is super random" and then the next thing they are gonna think is "wow that will take forever, probs not gonna do that line". And this goes for most goals not just koroks.

At the end of the day though if your goal list gets added because the pull request was made first it's whatever. We'll just use a fork of bingosync and use our list. I think trying to merge the lists at this point is more work then it's worth and I think we all just want something published now instead of waiting weeks.

EDIT: I keep writing out a comment before seeing you latest one LOL

armuell commented 1 year ago

I think starting with the list we made as a base first version and getting it merged to bingosync should be our first priority. Then once that's done, go over the goals in your list that are not covered by our list and adding them would be the best approach. The list I posted is formatted and designed to support short/normal/long (you don't need separate lists for the different lengths)

McBraggins commented 1 year ago

Awesome! I don't how to get it imported or how to read the code really but my biggest thing is making sure that doing shrines, light roots, towers, koroks, armor sets, paraglider fabrics, side quests, etc. are in there but not an excessive amount to make doing the bingo hard

armuell commented 1 year ago

Yes all of those things you listed are in there in some capacity. But certain goals were intentionally left out. Basically there is a unique reason why for each missing goal but here are some examples:

McBraggins commented 1 year ago

One thing I think should change, is every goal that says "Retain", change it to say "Obtain" That wording can make it a little confusing. At least for me it did.

McBraggins commented 1 year ago

So like there's a goal that called "Retain 25 Unique Zonai Devices" Instead it should say "Obtain 25 Unique Zonai Devices"

armuell commented 1 year ago

Actually, that was done intentionally. In lockout formats, those goals would be somewhat special in that if you lose a fairy or use the last of one of your zonai devices, you would need to unmark the goal which would allow your opponent to take that goal from you.

armuell commented 1 year ago

In the context of a single person playing bingo they could just treat it as "Obtain" if they wanted to.

McBraggins commented 1 year ago

That would definitely make lockouts more fun, but for people who play on versions past 1.1.1, that would be harder to as the rate at which you burn through devices without duping is very high.

armuell commented 1 year ago

That's fair but I think keeping the wording like this covers both cases. Basically if someone on 1.1.2 wants to just get 25 unique devices and mark the goal and play with the rule that unmarking isn't a thing they can. Then people on 1.1.1 or before can just follow the wording as is.

armuell commented 1 year ago

There's only like 3 unique goal types that have that wording so I don't think it's a big deal

McBraggins commented 1 year ago

I was skimming so I wasn't sure

McBraggins commented 1 year ago

And do you have goals for the full temple quests and full armor sets?

armuell commented 1 year ago

Yes there are two goals for each temple but they are just worded weirdly. Basically these 4 side adventures all require you to complete a temple then go to typhlo ruins for a short quest:

The Owl Protected by Dragons SA The Corridor between Two Dragons SA The Six Dragons SA The Long Dragon SA

Then these four goals all require beating a temple with an additional restriction for an extra challange: Defeat Wind Temple Boss by only Skydiving Defeat Fire Temple Boss without Yunobo's Ability Defeat Water Temple Boss without Sidon's Ability Complete Lightning Temple without using Ascend

We did not add spirit temple for this first release because we weren't sure how to handle it. Basically from a glitch user/speedrunning perspective it's a fine goal. But from a casual perspective it's way to hard. We did add "Deliver Mineru's Msk to the construct factory" as a compromise.

McBraggins commented 1 year ago

Okay sweet. And how are you supposed to defeat the wind temple boss by only skydiving? That wording is a little unclear.

armuell commented 1 year ago

You can skydive right through the weak spots and it does damage, The game actually kind of teaches this to you since there are circular breakable ice you encounter on the way up to wind temple.

McBraggins commented 1 year ago

I just used bomb flowers and my zonaite bow

McBraggins commented 1 year ago

I thought it meant more like, don't ever pull out the paraglider during the fight

armuell commented 1 year ago

Gotcha, yea using paraglider is almost required (technically you can do it without it but it's super hard). We were gonna word it like "without using weapons" but figured it was kind of long and might not fit in a bingo square.

McBraggins commented 1 year ago

Gotcha. That's a little more clear. I think this is a really great list, but adding armor sets that can be done without beating temples would be fun too. (Wing Armor Set for example)

armuell commented 1 year ago

Oh yea each piece of the glide set is it's own goal since they all felt significant to do.

armuell commented 1 year ago

Like I said the philosophy we used wasn't cut and dry. Another thing we tried to do was avoid repeats of botw goals (within reason) to try and make the list feel fresh in comparison.

McBraggins commented 1 year ago

That makes sense. A fresh list is good.

McBraggins commented 1 year ago

How do I import the list properly to bingosync?

armuell commented 1 year ago

Alright, @akumar282 or @haylau assuming everyone is on board can one of you push a new commit that replaces the contents of zelda_totk_english.js with this: https://pastebin.com/EMHE762g

I recognize this list is not perfect (some difficulties might be off and some tags might be missing) but I think it's a really solid base to start from and more goals will def be added (like the unique ones that are missing from your list and new ones that people think of over time).

akumar282 commented 1 year ago

Alright, @akumar282 or @haylau assuming everyone is on board can one of you push a new commit that replaces the contents of zelda_totk_english.js with this: https://pastebin.com/EMHE762g

I recognize this list is not perfect (some difficulties might be off and some tags might be missing) but I think it's a really solid base to start from and more goals will def be added (like the unique ones that are missing from your list and new ones that people think of over time).

Will look over and do! Thanks

BrandonEchols04 commented 1 year ago

@armuell @akumar282 We worked on the big list for around 15 hours. I really feel that we should start with that long list, and then edit it. I wouldn't want all of my work to go to waste! We worked on it really hard. :)

McBraggins commented 1 year ago

The list @armuell provided is less cluttered and more organized. Our list had a lot of repeating goals that would make the bingo tedious.

armuell commented 1 year ago

@BrandonEcholsMusic Myself and many other people worked on our list for 40+ hours (we did a lot of testing in game regarding specific goals). What you guys made is great and will not go to waste, I promise! In actuality, there is a lot of overlap between our lists. I would love to get into a call with ya'll sometime soon (probs not this weekend as I am quite busy) and go over your list and find the goals that are not represented in ours and add them in an update.

Assuming everyone is on discord, you should all join this server and ask for the totk role to get access to the channel: https://discord.gg/4hj2rAgyfe

haylau commented 1 year ago

Skimmed over the replies here, (there's a lot). It seems that the primary concern of this list that it might be over-saturated by certain goals? When we were making the list, this is definitely something we kept in mind. It's my understanding that SRLv5's generator takes measures to avoid these overlaps.

The only real way to tell if saturation is going to be a problem is to just test the list over and over and see if it spits out viable boards.

At this point we've primarily been waiting for the owner to lookover the merge and I'd much rather our list get trimmed and/or tweaked than replace it with a handful of manually picked goals as I still think our approach allows for enough variety.

Regardless of what list gets used, I'm in favor of whatever the majority of the community thinks is best. We're all just excited get one pushed haha!

armuell commented 1 year ago

It's my understanding that SRLv5's generator takes measures to avoid these overlaps.

It does but only in the context of a single line. So for example, it will try not to add two goals with the Korok tag in the same line during generation. But there could still be up to 5 korok goals on the same board if they just so happen to be spaced correctly. This is my understanding when looking at SRLv5 generator code but if I'm wrong someone please correct me.

I'd much rather our list get trimmed and/or tweaked than replace it with a handful of manually picked goals as I still think our approach allows for enough variety.

I think both lists have plenty of variety. The difference being that a list with more unique goals will make boards with more unique goals. For context botw's goal list is at around 700 goals currently and the boards it generates (which uses the same exact format as this PR) are quite varied and I've seen no complaints regarding seeing a certain type of goal too much. And when the goal list was first created for that game it was somewhere in the 200 range I think.

Like I said, the end game goal is to effectively merge out lists. But I think starting small with a hand picked list of unique goals and expanding over time is easier than cutting back/removing goals.

McBraggins commented 1 year ago

I believe we should be all good to resolve my original thread now. I'm not entirely sure how all this works, but we should be set with the list in place and everyone on the same page. I do suggest everyone join the discord link @armuell sent so we can all get connected easily.

haylau commented 1 year ago

It does but only in the context of a single line. So for example, it will try not to add two goals with the Korok tag in the same line during generation. But there could still be up to 5 korok goals on the same board if they just so happen to be spaced correctly. This is my understanding when looking at SRLv5 generator code but if I'm wrong someone please correct me.

I believe this is correct; I think when we were making our list we were okay with this outcome.

And I do agree that using a less programmatically structured list would allow for more unique goals, whereas our approach wouldn't allow for many of those types of goals to show up as they'd simply be outnumbered. But I think our goal was favor allowing for a lot of variety in those larger goal chunks than individual unique ones.

Also, our current goal list is designed for starting on the default game start as opposed to post GSI. I forgot that's how BotW's board was structured as when I use the board I tend to forget about save manip-ing to maintain a post plateau save since I tend to save scum in runs a lot.

It's cool seeing the a larger community that designed the BotW board be interested in helping with the TotK one too! I look forward to seeing whatever goallist ends up on the website.