glacials / splits-io

a speedrunning data store and analysis engine
https://splits.io
GNU Affero General Public License v3.0
133 stars 27 forks source link

Find a way to support SRDC variables #228

Open jhobz opened 8 years ago

jhobz commented 8 years ago

Specifically subcategories. See jnt. This is an All Worlds run on Expert difficulty, which we use subcategories for on SRDC. Thus the category is All Worlds with a Difficulty variable of Expert. Right now, All Worlds runs of either difficulty will (probably) show up in the same category.

Note that LiveSplit doesn't properly handle subcategories at the moment (LiveSplit/473, LiveSplit/523) and a differentiation between optional, required, and subcategory variables will need to be made.

glacials commented 8 years ago

Interesting. There are lots of ways to implement these at the data level.

Looking at the game edit interface on SRDC, they seem to treat all three styles as one "extra variables" type. Each has its own properties that determine if it acts as a category or a variable, so you're probably right that runs from sibling subcategories would still belong to the parent category at the data level, and the SRDC UI just knows to treat the extra variable as if it were a category.

I think I'd go a different route for splits-io by treating subcategories more like categories than like variables, then tackling optional/required variables as a separate feature. I need to think about it some more though.

What are some examples of optional/required variables? Platform and region are baked into SRDC as separate features. Maybe controller, control scheme, character, that sort of thing?

Also, are there any situations where it makes sense for a parent category to actually have runs in it, if it has subcategories?

jhobz commented 7 years ago

Wow, I never replied to this. Sorry about that.

What are some examples of optional/required variables? Platform and region are baked into SRDC as separate features. Maybe controller, control scheme, character, that sort of thing?

Yeah characters (when they don't define separate categories), use of a save file (e.g. Portal), console model, etc.

Also, are there any situations where it makes sense for a parent category to actually have runs in it, if it has subcategories?

If we follow SRDC's convention here (and I think we should), then no. Subcategories are simply further divisions of the umbrella that is the initial category. All runs of a category must fall under a subcategory just as all runs of a game must fall under a category.

CryZe commented 7 years ago

All runs of a category must fall under a subcategory just as all runs of a game must fall under a category.

I actually want to submit a patch to speedrun.com that fixes this restriction (in some way). So this may not be the case for long. Especially for games like Breath of the Wild or Odyssey, the Amiibo / No Amiibo variable should be a subcategory, but at the moment subcategories are mutually exclusive, which doesn't make sense, as No Amiibo is a subset of all the runs (So really it should be Any / No Amiibo).

jhobz commented 7 years ago

They already allow for subcategories to be created across multiple categories rather than individually for each. Would that not accomplish the goal you're looking for, or am I misunderstanding?

glacials commented 7 years ago

I think he means that because any valid No Amiibo run is also a valid Amiibo run, and the times for the two can be similar, as a runner you'd want to submit the same run to both. So the category layout would be something like

-Breath of the Wild-
         |
         V
--------Any%--------
    |       |     |
    V       V     V 
No Amiibo  run1  run2
    |
    V
   run3

Runs:
Any%: run1 run2 run3
Any% No Amiibo: run3

run3 didn't use an Amiibo, so it's a valid Any% No Amiibo run and a valid Any% Amiibo run.

I imagine you'd also want 100% and Low% to be subcategories of Any%, since valid 100% and Low% runs are also valid Any% runs (not talking about a specific game, just generally).

This is a cleaner data layout with the advantage of not needing to submit a run twice for those games where the times between the categories are similar, but it's less intuitive as a user, and it could lead to confusion around why your Any% run is showing up in 100%, or anger about showing a "bad" time recorded officially under your name (e.g. a 3-hour Any% time in Super Mario Sunshine because you only run 120 Shines).

I could go either way right now, I'm open to more pros / cons.

jhobz commented 7 years ago

Ah, that makes more sense. I personally doubt that is a change most communities would end up adopting, but I suppose it is a valid logic path.

glacials commented 7 years ago

Yeah that's likely. Out of curiosity, what would you say is the reason these communities use subcategories (All Worlds ->Expert) rather than flattened categories (All Worlds Expert)?

jhobz commented 7 years ago

Largely cosmetic. For example, here's one of the KH game's leaderboards after subcategories were introduced (mind the old SRDC layout): image And after: image

And here's Crash Bandicoot: N. Sane Trilogy's boards. Would get messy super quickly if subcategories didn't exist since there'd be at least 2 categories per each game in the trilogy. image