Spoiler Tournament Format and Rules Reasoning

Spoiler races offer interesting opportunities to run a tournament in a different way that is not ordinarily possible, and they also present unique challenges as far rules are concerned. We’ve made decisions about the Spoiler Tournament which try to respect: player time; ease of setup and play; fairness; reasonable enforceability, and; just plain practicality.

Qualifier Format Reasoning

We use qualifying matches as a measure to reduce the duration of the tournament in respect to player and administrator time. As this is not a “main season” tournament, and as Spoiler races are currently a relatively fringe gamemode, we’ve limited the number of qualifying participants to 32.

Since the 2018 Summer Tournament, we’ve seen ALttPR tournaments implement a system of qualifying matches where a racer is given a list of qualifying match dates and is asked to participate in a certain minimum number of races. This solution gives runners a bit more freedom in scheduling which of the qualifiers to participate in while also ensuring that there is at least a minimum level of crossover among participants in races - ensuring that the outcome of who qualifies will not be too determined by which race a runner chooses to enter, and who else enters that race.

However, Spoiler races present an interesting opportunity. Competitive speedruns of randomizers are ordinarily done concurrently to avoid a runner getting an edge over an opponent after having a location spoiled to them. In a spoiler race, however, this is not an issue. By allowing qualifying races to happen non-concurrently we get two benefits:

Benefit 1) Qualifiers will be incredibly easy for runners to schedule

Our tournament format allows a runner to request the permalink to one of the qualifying matches and run their race at any time. The qualifying period is a little over two weeks which will be ample time for most people to run three races - particularly since they can be scheduled at their leisure.

Benefit 2) We have perfect participant parity

Every runner eligible to qualify will run all three qualifying races. This means that we will have perfect crossover of participants among all races, and we do not have to consider variance in seeds or in participants. This is also what allows us to get away with as few as three required races compared to the 2018 Fall Tournaments required 5: since we have better parity we need less data.

However, in order to accommodate non-concurrent races we need to consider some unique problems:

Problem 1) A runner could share the spoiler log with other runners, circumventing the 15 minute limitation

Ordinarily in Spoiler races runners have a limited time before the race begins to look at the log and plan their route, and this is how the bracket stage of the tournament will be run as well. However, if we allow people to run the same seeds non-concurrently, runners could easily share the spoiler log amongst each other, circumventing this limitation and giving some participants an unfair advantage. We could not practically enforce a rule limiting people from sharing the log.

Solution:

For the qualifiers only, we’ve decided to lift the ordinary 15 minute limitation and give every runner “unlimited” time to look at the spoiler logs and plan their route.

Problem 2) A runner could share the permalink to the seed with others who could then practice the seed in advance

If the seed is shared with other participants, a runner could practice the seed in advance, giving them an unfair advantage over others. We could not enforce a rule limiting people from sharing the seed, and with the spoiler log available from day one of the qualifiers, a person could also easily recreate the seed in the customizer themselves without access to the permalink for the seed.

Solution:

For the qualifiers only, we’ve decided to distribute the seeds for the three qualifier seeds in advance. Runners are free to practice this seed as much as they like, but they must attempt their actual qualifier run live.

Problem 3) A runner could record their best attempt at the qualifying seed and then playback the recording, pretending to run it live

Because the log and permalinks are available to everyone at the start, a runner could simply pre-record their attempts and pretend to run it live, giving them an unfair advantage.

Solution:

When you issue the command to begin your qualifying race for a seed, our bot will DM you a unique code that you must put in the first four characters of your file name. You must also stream your race and begin your run promptly. This makes it more difficult for runners to play back a pre-recorded attempt. It is possible for a person to splice in footage, but this limitation makes it much more difficult for a runner to cheat this way successfully since it means splicing live footage with pre-recorded footage with exact timings.

Problem 4) A runner could watch someone else’s stream or video to see how they routed, gaining an unfair advantage over people who ran their qualifying races earlier

Because the races are non-concurrent but are still being streamed and archived, a runner could watch another runner’s race live or simply watch their vod to glean routing information, thus improving their own route unfairly. This would encourage people to run their qualifying races later and would give an unfair disadvantage to runners who choose to run early if new, faster routes or sequence breaks were later shown off.

Solution:

Twitch unfortunately does not have a way for you to stream to a private/hidden/unlisted area. Youtube, however, does. We require participants running their qualifying races to stream to Youtube as unlisted stream so that only people with the link to the unlisted stream can view it live or watch the recorded vod. Although this requires participants to create and setup streaming on a different platform, this was the simplest and most easily enforceable solution we could find to solving this problem. Once the qualifying period has concluded, participants’ times and links to their unlisted videos will be published along with the final placement results.

Problem 5) Allowing runners to upload their local recording if they were to have connectivity or power issues during their stream is too easily exploitable in a non-concurrent format

In concurrent race settings, if a runner were to have hardware or connectivity issues they would be expected to upload their local recording for verification by an admin. In a non-concurrent race setting, this presents too much opportunity for people to fake a hardware problem in order to exploit this exception and to upload a prerecorded and/or spliced run. If we were to make no exceptions whatsoever for these situations, people who have intermittent internet or hardware issues would suffer an unfair disadvantage.

Solution:
We allow each runner to have one “retry” during the qualifier period. If a runner invokes their retry their previous score is erased and their new score is used,
even if their new score is worse. Runners are allowed to use this “do over” for any reason, including because they simply didn’t like their previous time, although the new score will be used even if the new score is worse.

Conclusion:

These are not perfect solutions since it means the qualifying race format does not exactly match the bracket race format, and since we are asking people to create a new streaming setup to stream to Youtube for the qualifiers. However, this rule allows us to schedule qualifying races non-concurrently while also ensuring that there is a fair and level playing field among all participants. As an added advantage, we have perfect participant crossover in our qualifying matches, ensuring we have the best data to make the best determination of who is most qualified to qualify.

The runners who will most benefit from the changes in this qualifier format will be those who would benefit most from extra practice and who might otherwise lack game knowledge about routing and sequence breaks. However, as spoiler race game winners are often determined by who can run the fastest with the least safeties and the best execution, we expect that this will not have a significant impact on the placement order of runners who would otherwise have high scores anyway.

Bracket Format Reasoning

The format of the races of the bracket stage of the tournament are run as traditional spoiler races: a runner is given 15 minutes prior to the race starting to look at the spoiler log and plan their route. This time limitation helps to ensure that the race is testing not only a runner’s execution, but also their routing and general game knowledge.

We’ve chosen single-elimination brackets because they are easy to follow and broadcast. Seeding based on the qualifier performance will also aid in keeping the bracket as fair as possible.

Game Settings

Open state provides the most options at the beginning of a run. Goal is set to Defeat Ganon to provide a decent length to the race.

Difficulty is set to Normal to provide ample opportunities to make "safety vs. speed" decisions, which makes gameplay and viewing more interesting.

Winning Condition and Ties (brackets)

SpeedRunsLive (SRL) will be the the official timing mechanism of the bracket phase of this tournament. There is a small amount of lag when it comes to registering a finish in SRL. Ruling that a 2 second difference constitutes a tie compensates for the lag by allowing a match to be replayed if it becomes too close to call.

v30.4 Randomizer Version

In order to get seed permalinks without the spoiler log, so it can be provided at the start of the study phase of the race, we had to make a new instance of the randomizer website (https://spoilertourney.the-synack.com). When a new version of the randomizer website is released (such as v31), this site would have to be updated as well. Any automation created would also need to be re-tested and potentially fixed as well. Locking this tournament to v30.4 provides a stable environment for this tournament's automation.

The special instance of the randomizer website will always be available to all players throughout the tournament so they may practice. A "$practice" command is available on the discord server for generating a practice game and spoiler log as it would appear during a tournament match.

Exceptions to Normal Tournament Rules Reasoning

Normally in a randomizer tournament, the race is played blind (players cannot see what other players are doing). For this tournament the following normally prohibited actions are allowed during the bracket phase:

  1. Players are allowed to view their opponent's stream during the course of the race.
  2. Players are allowed to view the restream.
  3. Players are allowed to chat in their stream's Twitch chat.
  4. Players are allowed to chat in the restream's Twitch chat.

This rule, combined with other rules in this tournament, allows us to ignore stream-sniping as a cheating consideration and even encourages a more social form of gameplay where runners are able to watch each other and even interact with chat. It is a legitimate element of strategy in this tournament to adapt your route based off of what and how well your opponent is doing.

Confidentiality of spoiler logs (brackets)

This rule, combined with other rules in this tournament, allows us to ignore stream-sniping as a cheating consideration and even encourages a more social form of gameplay where runners are able to watch each other and even interact with chat. We prohibit the sharing of spoiler logs in order to avoid situations in which a runner may get an advantage by having other people develop their route for them. Because limited time to route is a part of this tournament format during the bracket stage, limiting access to the public of the spoiler log is an anti-cheating measure.

Prohibiting use of automated tools to parse spoiler log

The intent behind the prohibition of spoiler log parsing is to:

  1. Ensure players with the technical ability to do so do not have an unfair advantage over those who cannot create tools to parse the spoiler log.
  2. During brackets, properly test the player's ability to route a game within the allotted 15 minute period.

We understand that this restriction will be hard to enforce. We ask the participants in this tournament to play fair in this regard. If you need to be able to view the spoiler log in a different format, please ask a tournament admin for assistance.

Reporting suspected rule violations

Those accused of violating the rules have the right to not be on the receiving end of a witch hunt. Resolving these matters privately is the best way to ensure both the accuser, and the accused, are not subjected to harassment.

Changing Discord Name or Discriminator

The tools that help us automate this tournament rely on the player's discord name and discriminator remaining constant throughout the tournament. If this information changes, we need to know about it so we can update our records and prevent issues from occurring.  The broadcast partner system also relies on the Discord tags to be up-to-date so that runners can get invites to the broadcast server (post-race interviews, etc.); if this is not correct, players will not be able to receive invites.  We also caution against using special symbols in your Discord name as the broadcast partner is unable to utilize these in its invite system.  If you have any questions as to whether a name change will be useable, please contact an administrator and they will let you know.