Rejected Decisions on RNG Prediction in Showdown Battles Deserve Community Input

Status
Not open for further replies.

Precursory Remarks

I'm making this post because I think the community should have a greater say in how RNG prediction and implementation gets handled on Pokemon Showdown. Namely, there should be something akin to a suspect test, provided someone can make a tool that makes RNG prediction accessible to all (which I would like to do, though I need about 3-4 months of time).

Please respond if you have any thoughts on this, as I would like to hear the community's thoughts on the matter. Do you have another proposals? My goal here is ultimately to help more people enjoy playing Pokemon battles by asking for more options.


Before making any arguments, I would like to applaud the Showdown Administration team for patching the exploits so quickly, as they would represent a problem to fairness in their current state, due to the lack of accessibility. It is not easy to scramble together a new RNG system, especially with all the compatibility requirements that come from having seedable games, and I thank you for your hard work in maintaining the fairness of Pokemon Showdown.

The policy decision on RNG being referenced is here: https://www.smogon.com/forums/threads/on-rng.3758023/

The Crux of the Policy Decision

The main argument against having predictable RNG is stated here:
PS' RNG being crackable at all is, of course, a huge issue in fairness and competitive integrity, especially for gens like RBY and GSC with limited Pokemon and spreads.
This statement relies on RNG prediction being relatively inaccessible to be true. If one player is able to do RNG prediction and the other cannot, then of course this gives them an unfair advantage. With the current tools existing for RNG prediction from Myren Eario being rather difficult to use, players face a significant technical barrier to doing RNG prediction, as there's a large difficulty curve in learning how to make the tool work. Thus, most players wouldn't actually be able to use RNG prediction. However, if all players have a better tool for RNG prediction (something akin to showdex), does this statement still hold water? I'd argue that we don't know. If both players in a match can easily use RNG prediction, wouldn't the playing field be leveled in theory? Both players knowing the RNG call sequence of a battle would be a game of skill, as they would be able to respond to how the other player manipulates it. Sure, we don't know if it would necessarily be fair without testing it out, but if we don't know of the fairness for certain, shouldn't there be a suspect test for it? RNG prediction significantly affects competitive play, and if even modifications like GSC freeze clause gets some debate before being implemented, shouldn't the decision on how RNG prediction gets handled deserve some serious community input? Several people had expressed interest in Pokemon battles with RNG prediction in Myren's original thread, so there's already some evidence that people would be interested having decision making power over this.

One could make an argument that requiring a tool at all to make RNG prediction accessible makes it unfair. However, I'd then like to ask, what would make this much different from Showdex or a general damage calculator? It's difficult for most players (myself included) to do damage calculations quickly without the aid of a tool, yet damage calculators are very much allowed in Showdown. Memorizing calculations as a way to avoid using a calculator in-battle faces the same accessibility issues as a difficult to use RNG prediction tool scope-wise. It's not a viable way for most people to play.

Solution Proposals

Not everyone will want predictable RNG in their games, as it would definitely make playing battles more complicated and could seriously reduce enjoyment. However, there may also be some people who are really tired of focus blast missing and might enjoy playing a battle with RNG prediction so that the game feels more skill based. To balance this, I propose two options:
  1. Provide a separate format for a select number of metagames that output the RNG seed before the battle starts
    One issue here would definitely be an unnecessary amount of extra formats listed. This could be solved by restricting the number of formats available for this style of play -- we could maybe have one or two formats community voted for and then include things like the current gen randbats/singles ou/doubles ou. Or if people don't like it much, it could just be restricted to AG.
  2. Provide an option, similar to the open team sheets option that allows people to choose if they want the seed to be visible at the start of a battle or not. This could be restricted to certain formats or not.
If people are worried about a format being unfun because of things like paraflinching or zap cannon/dynamic punch/inferno becoming even more viable, this could just be restricted to random battle formats since the sets in these formats don't try to abuse luck based mechanics.

These solutions are also easy to implement from a technical perspective.

Precedent in Similar Situations

This situation is fairly similar to Mega Rayquaza being banned from ubers in gen 6. Mega Rayquaza was broken, even in ubers, so the smogon community decided to make the new format of AG so that it could still be used because Mega Rayquaza was a fundamental usable part of the game on cartridge. The same idea can be applied to RNG prediction. RNG prediction is currently broken due to its lack of accessibility, and it affects a fundamental part of the game (the RNG). At least in older generations, we know RNG prediction is possible on cartridge as they do not use secure PRNGs. Why shouldn't RNG be able to at least get a similar treatment to pokemon banned to AG?

Tools for Making RNG Prediction Accessible

Given that RNG prediction was only in a proof-of-concept stage as of recent, there are no easily accessible tools for this. I would be happy to work on an RNG prediction tool, as I think it would be interesting to see, and it would fulfill a class project I need to work on for the next 3-4 months anyways. The tool I create would likely be a browser extension similar to either showdex or the random battles tooltip, with an emphasis on being usable.

If the staff ends up ignoring this entirely, I'll consider making a custom showdown server with RNG prediction enabled as a technical project if there's enough interest from here (after I can make the tool of course).

A Brief Comment on Per-Generation Cartridge Accurate RNG Implementation (less important)​

The last two comments are on the security of the original games, which I agree with -- yes, the old game battle PRNGs are not secure, so it wouldn't make sense to use them if you wanted Showdown's battle PRNG to be secure.

However, the first point doesn't make sense if framed as something to implement later. The first point is as follows:
The RNG formulas for most games are not well-known or well-documented, requiring extensive testing and reverse engineering that we simply do not currently have the time or bandwidth for, especially on such a short timeframe
At least for early generations, the RNG formulas are actually well-documented. For gens 1-3, we have pret's disassembly of the entire pokemon games, which obviously include how RNG calls work in link battles. More specifically for generation 1, we also have pre's documentation of exactly how showdown's rng calls differ from the original games, besides speed ties which have a scuffed implementation in showdown. While I definitely agree that it would take a significant amount of time and effort to try and make showdown RNG compliant (both in its calls and its PRNG function), it doesn't seem fair to permanently withhold the community's input on the matter post-patch. If community leaders get to decide on whether or not to implement the freeze clause mod, why shouldn't they get to decide on how they want RNG to be implemented for their generation, given that it's an even more fundamental mechanic? Sure, it won't be easy to implement, but having the directive to make a generation RNG compliant makes it a lot easier to justify pull-requests that change RNG calls if someone did care about implementing RNG accuracy. Thus, I think this decision should be passed down to old gen community leaders, as to whether or not they desire RNG accuracy.

Requests and Thanks

Thank you for reading this! I really appreciate it, and I hope that we can have more options to play Pokemon battles on Showdown so that we can better enjoy competitive Pokemon :)

Overall Requests:
  • Give the community the chance to vote on how they want RNG prediction to exist on Showdown. (Of course should be subject to delay on when an accessible RNG prediction tool becomes available)
  • Give old gen leaders the opportunity to make their own policy decisions on how they want to see PRNG implemented for their generation.
 
No. Not all decisions need community input, and certainly not decisions that are made for the sake of competitive integrity. There is absolutely no positive in allowing players to predict the RNG even if both of them have access to the same tools; what's the point of removing an element of skill by providing yet another external tool when we could just, you know, just not add it and maintain the competitiveness? Probability management is part of the game and is a skill in and of itself, and there's only downsides to implementing what you're proposing.
Like it's literally just adding extra complexity for absolutely no gain when the status quo is more than fine and actually desirable, so no I don't think it's a policy question that needs further debating.
 
When I load up Pokemon Showdown it's because I wanna play Pokemon, not some jobless RNG-cracking circlejerk. If you want to completely destroy a competitive game with decades of history for the sake of dubious cart accuracy, then we should just cut to the chase and implement a mechanic where you can beat the shit out of your opponent and press the power button on their Nintendo Switch as an alternate win condition.
 
Personally I'd love having the seed available for recreative purposes and testing stuff with friends, but it wouldn't be advisable to have it accessible for ladder and tour matches. I think it would be crazy cool to have it in serious games too, but that's just too much and probably not even good for short and long term enjoyability. So, basically, make it accessible by a custom rule or something similar.
 
RNG itself is a very intended and core part of the game, and this sounds less like playing the game and more like playing the code itself. The simplicity and accessibility of the former is probably a key element in Pokemon being popular as a game. Cart accuracy being considered, we've also taken decisions in not making everything accurate to the cart games - removing Acid Rain and the adding Percentage Clause being very big changes themselves. Yes we have the RBY bugs, and maybe those are silly to keep, but not really a very strong supporting example in itself. So yeah we've taken some liberties with implementing cart accurate stuff.

This statement relies on RNG prediction being relatively inaccessible to be true.
I don't think the potential inequality to access such tools was the real concern for people, but rather it being possible at all.

The Rayquaza and AG example is just not applicable - banning a Pokemon has been happening since before Smogon existing, and is not comparable to fundamentally changing the Random part of RNG.

At the end of the day, Showdown is a Simulator for the games, not the hardware or limitations of what those games ran on 20 years ago. Kudos to you for voicing a controversial opinion, but this sounds at best an OM suggestion to me. Long ago Joim was working on Skillmons where RNG was trackable and predictable e.g. the 10th Ice Beam would get a freeze, so that's your shot maybe.
 
  • Give the community the chance to vote on how they want RNG prediction to exist on Showdown. (Of course should be subject to delay on when an accessible RNG prediction tool becomes available)
  • Give old gen leaders the opportunity to make their own policy decisions on how they want to see PRNG implemented for their generation.
We will not be implementing either of these.

RNG is obviously intended to be, well, random, and exploits that allow for RNG prediction are a bug, not a feature, and we do not need to have a community survey for a bug fix.

Implementing fully cart-accurate rng introduces a litany of problems for very little gain; as long as a 90% accuracte move hits 90% of the time (or 89.6% of the time in RBY), that is good enough for all intents and purposes.
 
Status
Not open for further replies.
Back
Top