Let's begin with some terms so we're all on the same page.


Video Games, Speedrunning, Randomizers

Super Mario World, SNES

A video game is defined as follows: a game where a player or players control (via some kind of controller) something virtual.  All of these terms are going to be vague because — well, what is a game?  What is a controller and what is virtual rather than real?  Is Augmented Reality "virtual" or "quasi-virtual" or something stranger? But we're not here to philosophize so let's move on.  

A speedrun (of a video game) is an attempt to complete a certain task (usually to finish the game with some requirements) as quickly as possible.  For example, someone might speedrun Super Mario World and do all of the levels (called a 100% Run) or simply do whatever you need to to beat the game — even using developer unintended glitches (sometimes called an Any% Run).  One of the most famous examples of a run which absolutely destroys the game using developer unintended glitches is given below:

Currently, this is the world record for the 0 Exit category (which is essentially an Any% Run but, you know, sometimes people name things different things).  I'm not going to go over how this is done but it should show you that there are different sorts of speedruns and different sorts of speedrunners.  Some speedruns abuse glitches, some don't.  Some play all the levels, some play nearly no levels.

Each category is different, each runner has a different style, but the commonality is that each runner has a certain set of rules given to them and a goal and they have to complete that goal given the rules.

In the past ten-or-so years speedrunning has exploded in popularity with events like AGDQ, SGDQ, and ESA bringing in hundreds of thousands of viewers and making millions of dollars for charity.  It's not unreasonable for some fans of certain runners to sit in a Twitch chat and watch them grind out a single level of Super Mario Bros for three or four hours.

Okay, so, around the same time (and I'm fuzzy on these details; I'm not a historian) Super Metroid's code was altered so that items would not be in the same places as they normally were — the items would be in random locations.  Eventually, this was refined to make it reasonable for runners and gamers to complete the randomized games and other game communities (Zelda 1, Link to the Past, etc.) followed suit and started to make modifications which randomized items in their respective games.  This made speedrunning (and, indeed, simply finishing) the game significantly harder.  

Games which have certain elements of their "vanilla" gameplay randomized are called randomizers.  Each time you randomize a game (via an application or patch) it will be randomized in a completely different way; the game along with the way it is randomized is called a seed; if you and your friends download the same seed, it means that both of you will have a ROM that contains the game with the exact same randomization.  This lets you race your friends in a randomized game without the problem of some seeds being easier than others.

But why did people want to run these randomizers at all?


Different Strokes for Different Folks

Andy and Christos racing LTTP Randomizer. Note that Christos gets the Bug Net in a random chest instead of from the Sick Kid.

Speedrunning can be tedious.  It's doing the same thing over and over and over until you can do it as well as, say, a robot created to optimally beat the game (the types of attempts which slow down the game or go frame-by-frame to play optimally, allowing for redos and rewinds are called TAS attempts — Tool Assisted Speedruns — and are not counted in the same category as "Real Time Attempts").  

One common question speedrunners get is: "How long have you spent practicing this game?  Don't you get bored?"  And for many, yes, it would be a slog, and they would get bored.  


I like speedrunning The Legend of Zelda: A Link to the Past (henceforth, ALttP) but I was never great at it.  I loved the community, I loved playing the game, and I loved streaming it on twitch — but I didn't want to be the fastest or the best player, I just wanted to have some fun with it.  Around the time I finished up my NES Project (another post, I promise) I wanted to get back into speedrunning something — instead, I found the ALttP Randomizer (henceforth, ALttPR).  

This was awesome.  I'm a player who doesn't like to grind out things to save every possible second, but I do love puzzles and I do like light competition with others on puzzles.  All of a sudden, ALttP went from trying to optimize my movement up ladders (see below) to something different: trying to figure out where to go next to get the next item needed to progress.

I'm a huge fan of the puzzle aspect and the combinations for logical progression are surprisingly large and varied.  


To end this post with something concrete, let's dive in real quick to the ALttPR and establish what it actually is, what it does, and what is required of you.

As of right now, the Link to the Past Randomizer is on version 31 and things have changed since the beginning, but I'll explain the basic setting for the game (there are more advanced settings like boss shuffle, enemy shuffle, and even entrance shuffle).

  • Every item is in a near-random location.

Why near-random?  Because there is some logic built into the game.  I'll paste a spoiler below so you see what I mean:

    "playthrough": {
        "1": {
            "Light World": {
                "Chicken House:1": "ProgressiveSword:1",
                "Blind's Hideout - Top:1": "OcarinaInactive:1",
                "Blind's Hideout - Left:1": "Powder:1",
                "Bottle Merchant:1": "ProgressiveGlove:1",
                "Lost Woods Hideout:1": "ProgressiveGlove:1",
                "Mushroom:1": "BottleWithGoldBee:1",
                "Maze Race:1": "Flippers:1"
            },
            "Hyrule Castle": {
                "Link's Uncle:1": "Lamp:1"
            },
            "Eastern Palace": {
                "Eastern Palace - Compass Chest:1": "BigKeyP1:1"
            }
        },
        "2": {
            "Light World": {
                "Sick Kid:1": "MoonPearl:1"
            }
        },
        "3": {
            "Dark World": {
                "Stumpy:1": "Hammer:1",
                "Hype Cave - NPC:1": "ProgressiveSword:1",
                "Mire Shed - Right:1": "Hookshot:1"
            },
            "Skull Woods": {
                "Skull Woods - Big Key Chest:1": "FireRod:1"
            },
            "Thieves Town": {
                "Thieves' Town - Big Key Chest:1": "BigKeyD4:1"
            }
        },
 ...

This complicated-looking thing tells us the approximate way that the logic dictated we should go through the game to the end — that is, during the randomization, the randomizer makes sure we can actually complete the game.  There isn't a place where, say, you need the Moon Pearl to get the Moon Pearl.  

How does the player know that these items are in these chests?  They don't.  How could this be fun then if it's just checking hundreds of random chests?  

Because it's not random chests.  Every chest after the initial group of chests has items which are required to get to it.

Once you get the initial set of items ("Shell Zero Items" I call them, since they don't require any other items to get them) then you need to make a judgment call.  What items do I currently have?  Given what I have, where can I go?

The main question you'll be asking in ALttPR is: What do I do next?  Sometimes it will be choosing between one of many possible locations to check, sometimes it will literally be asking, jez, where the hell do I go next?  We've all had that moment of panic where we look at our items and think to ourselves: wait, where else can I go?  What else is in logic that I can check with these items I have?


If we wanted to formalize the ALttPR (and, to an extent, randomizers in general), then, it would be as follows:

  • Given no items, check the Shell Zero (no requirements) chests.
  • Given the Shell Zero items, create (in your head, on a tracker, etc.) what possible chests you can get next.
  • Continue until you beat the game.

There are trackers that do exactly this, but many individuals can do planning in their heads and will know exactly what to do next.  As a trivial example, suppose you did all of the Shell 0 items and (tragically) only got the Book of Mudora — you'll know that the next step is most likely the Desert Palace.

In another post, I'll go more into the ALttPR and how I approach it.


Check'em Out

Is this the same for all randomizers?  No, some add items, some remove items, some have totally different mechanics to make the randomizer more fun or more reasonable — there are even randomizers which join two games together: there is a Link to the Past + Super Metroid (in the same game!) randomizer which you can check out here.  

If this kinda thing appeals to you, check out some runs on Twitch, Youtube, or search for videos of SGDQ, AGDQ, ESA, etc., with "Randomizer" or "Rando" in the title.  It's a real good time.