1. 27

They also have a paper on this issue, which is pretty hardcore IMO. I added the [java] tag since there is some discussion on Java’s pseudo-random number generator.


  2. 19

    Dream’s uploads are spectacles. In his recent Youtube uploads, there are videos where he attempts (and typically completes) a full any% run while being hindered by other players. These videos include flashy playing, like narrowly escaping pursuers with good movement, or setting explosive traps and successfully luring other players into them. Some of these uploads have now been supplemented with their original recordings, which helps dispel the idea that they were pre-planned; this video is an edited-down 50-minute summary of this original three-hour run. We would be remiss not to notice that these videos have tens of millions of views; this investigation is into a very popular member of the community.

    There is something to be said for luck. One person’s luck is another person’s attention to detail. It is always possible that speedrunners intuitively make microdecisions which unconsciously influence their times. A variety of techniques have been discovered this way. I run Link to the Past, where wall pumping was discovered by accident and eventually became an entire collection of movement quirks.

    I enjoy the paper’s careful attention to self-doubt and essential epistemic uncertainty. It doesn’t just make the conclusions more solid, but also reflects the internal struggles of the speedrunning community to always be looking for better ways to validate their athletic feats.

    I also, as a reverse engineer of Minecraft, appreciate the valuable understanding that Vanilla MC does not use RNG responsibly. Minecraft’s RNG correlates all random events, commutes nothing (no observable random behaviors commute), and does not mix player input into RNG, so the entire game experience includes a hidden variable which non-deterministically but reliably shapes gameplay, akin to classic 8- and 16-bit consoles. In my from-scratch implementation of Java’s RNG, we can clearly see that it is a linear congruential generator and is vulnerable to the same sorts of tight-gameplay predictability as in older consoles. At the same time, the RNG is called so unreasonably often that it is nearly useless for predicting anything. In the category any% Set Seed, where the world seed is fixed, the geometry still can be randomized if the player does not follow specific pre-planned movement.

    Some parts of the paper remind me of how powerfully expressive a vernacular language can be. For example, in the context of which items might be useful for a player to obtain via cheating:

    Obsidian is an option, possibly allowing for nether travel. Another option is string, which runners have recently started hoping for with the advance of “hypermodern” strats that involve skipping villages – but hypermodern strats were not well-developed during the time that Dream ran, and Dream did not go for string.

    The conflation of strategy and tactics into “strat”, the reference to items like “obsidian” and “string” not just as elements of an inventory but as entire portions of a run’s path, the word “village” as a reference to a possible but undetermined place in spacetime, and the delightfully compact phrase “Dream did not go for string” to indicate both empirical truths and also the runner’s emotional state and intent, are all interesting bits of shorthand.

    1. 2

      I have long been convinced that while the “manhunt” series videos are not cheated, they are not fully truthful either. Given the amount of luck in these videos, it seems pretty incredible that all of them are always more spectacular and unlikely than the last one. There is no episode in which he just dully dies from a creeper in a cave, or falls into a ravine, or gets killed in the first five minutes. When he loses, it’s always at the end of the game, exactly where it would make the video most entertaining… except when competing against people outside of his circle of friends. The runs have also never been streamed.

      I think the most sensible explanation is that, despite denying it, there are some agreements in place. For example, restarting the run if the ending is too anticlimactic, or he dies before a certain point. That also explains the amount of narrow escapes, as his opponents would want to deliberately avoiding killing him before the video is long enough to upload.

    2. 7

      For fairness, we should find some way to include Dream’s perspective.

      My perspective on his perspective is that he goes through a lot of handwaving and psychological arguments to explain his situation. The speedrun team’s paper has a basic statistical argument which convinces me that something is unexplained, but I don’t feel like Dream has an explanation. But without a clear mechanism for how cheating was accomplished, it’s premature to conclude anything.

      In a relative rarity for commonly-run games, the Minecraft speedrunning community allows many modifications to clients. It complicates affairs that Dream and many other runners routinely use these community-approved modifications.

      1. 5

        But without a clear mechanism for how cheating was accomplished, it’s premature to conclude anything.

        This is the argument that always confuses me. At the end of the day, Minecraft is just some code running on someone else’s computer. Recorded behavior of this code is extremely different from what it should be. There are about a billion ways he could have modified the RNG, even live on stream with logfiles to show for it.

        1. 1

          I like to take a scientific stance when these sorts of controversies arise. When we don’t know how somebody cheated, but strongly suspect that their runs are not legitimate, then we should not immediately pass judgement, but work to find a deeper understanding of both the runner and the game. In the two most infamous cheating controversies in the wider speedrunning community, part of the resolution involved gaining deeper knowledge about how the games in question operated.

        2. 3

          But without a clear mechanism for how cheating was accomplished

          Are you asking for a proof of concept of how to patch a minecraft executable or mod to get lucky like Dream was?

          1. 3

            Here’s one:

            • open the minecraft 1.16.4.jar in your choice of archive program
            • go to /data/minecraft/loot_tables/gameplay/piglin_bartering.json
            • increase the weight of the ender pearl trade
            • delete META_INF like in the good old days (it contains a checksum)
            • save the archive

            Anyone as familiar with Minecraft as dream would know how to do this.

          2. 2

            But without a clear mechanism for how cheating was accomplished, it’s premature to conclude anything.

            We have a clear mechanism : he modded his game. That’s because when he was asked for game logs, he deleted them. Just from the odds alone, he is 100.00000000% guilty.

            1. 3

              As the original paper and video explain, Minecraft’s speedrunning community does not consider modified game clients to be automatically cheating. Rather, the nature of the precise modifications used are what determine cheaters.

              While Dream did admit to destroying logs, he did also submit supporting files for his run. Examining community verification standards for Minecraft speedruns, it does not seem like he failed to follow community expectations. It is common for speedrunning communities to know about possible high-relability verification techniques, like input captures, but to also not require them. Verification is just as much about social expectations as about technical choices.

              From the odds alone, Dream’s runs are probably illegitimate, sure, but we must refuse to be 100% certain, due to Cromwell’s Rule; if we are completely certain, then there’s no point in investigating or learning more. From the paper, the correct probability to take away is 13 nines of certainty, which is a relatively high amount of certainty. And crucially, this is the probability that our understanding of the situation is incomplete, not the probability that he cheated.

              1. 4

                But you said there’s no clear mechanism for how cheating was accomplished. Changing the probability tables through mods is a fairly clear and simple mechanism isn’t it?

          3. 5

            This is a great showcase of high-school statistics, my initial impression is that this [the paper] is high-quality work.

            1. 2

              Some general background, for those like me who are neither into Minecraft nor speed running.


              1. 1

                As somebody who thinks Dream seems like a decent, well-intentioned guy, I prefer to err on the side of caution. If any of the six runs is conceivably possible when considered separately, then it seems to me conceivably possible that all of them could occur consecutively.

                Furthermore, assuming not all of the six consecutive streams analyzed in the paper were new records, I find it weird that he would have activated this potential hack/mod for six consecutive streams. If I were him, I’d imagine that I’d use such a hack less consistently, in order not to draw attention to myself.

                Sure, ego, or whatever, impairs your judgment. But this supposed cheating doesn’t really seem like the result of an impaired judgment, the way it usually looks when top-level speed runners start cheating for no obvious reason.

                Then again, I tend to give people the benefit of the doubt, perhaps too much, especially if I find them sympathetic.

                1. 2

                  The thing is, a single “god run” is a lot more probable than a string of a really good runs. If the seed needs you to get, let’s say, 4 ender pearls, a single “god run” that gets all 4 from 4 trades (100 percent success rate) the run is around 0.0005% probable, which is about 88 thousand times more likely than the stream of the Dream’s runs. Those streams had multiple run attempts(a single run takes ~15 minutes). Such a run might gain a lot more scrutiny due to the obvious nature, but this string of highly successful runs is more suspicious in the end.

                  1. 2

                    These streams were recorded after he suddenly returned to speedrunning 1.16.2 after previously quitting them for being too luck dependent. It’s understandable, as it’s extremely frustrating to do everything right just to have your run ruined by bad luck. Presumably, he thought that the increase in odds would be enough to let him finally get a run with good luck and the manipulation would not be noticeable, or extremely hard to prove. That of course turned out to be incorrect.

                  2. 1

                    What would be the way for Dream to completely dispell the suspicion of cheating, if in fact he is innocent? If the entire setup and software of his runs can be verified ahead of time, and monitored, it would create legitimacy for his success. That is, if he could replicate his runs.

                    1. 3

                      Replicating such an unlikely run would presumably be further evidence of undetected cheating, I would imagine.

                      1. 2

                        I expect the community to publish more stringent lists of permissible client modifications. Right now, modifications are usually only allowed for improving game performance, but even that may be brought into question as we learn more.

                        However, stricter verification is not what will save Dream’s reputation. Rather, I would hope that he can help reveal something which is not yet understood about the behavior of Minecraft. If his runs are legitimate, then there must be some way, however unlikely, for other runners to replicate his circumstances.