Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

[BUG] Outrageous Dice Rolls + Lag

So, today, I mistakenly rolled 5d6r<6, thinking that it would drop every result less than  6, rather than less than or equal to  6. What resulted was an insane dice roll that took up the whole screen, many times over. Here's the chat log, minimized to 33% zoom to fit the majority of the results . The primary problem with this is that it caused the whole interface to lag up, until such a time as I could spam the chat with enough garbage to remove the dice rolls that were clogging everything up. So it looks like there are a couple of bugs here. Rolling an impossible equation (5d6r<6) should throw an error rather than proceeding with the impossible roll. None of the ultimately highlighted numbers ( 6, 6, 3, 6, 5) are greater than six. Even if the interpretation was less than  six, this still produces buggy results. There has to be a way to force-clear the chat history visible in the interface (or at least purge it to chat log). I had to sit there and /gmroll over and over and over again at a snail's pace (with the lag) until the game was functional again. Leaving and coming back does nothing to fix it. Thank goodness the initial screw-up was also  a /gmroll, or my players would have been suffering as well. Thanks for your time!
1370920478
Gauss
Forum Champion
Thank you for reporting this. It is a known issue. When you asked it to roll (5d6r&lt;6) it will roll 5 six sided dice and re-roll anything that is less than or equal to a 6. That is everything. The dice roller worked properly. As a note: it will cap out the rerolls at 999 dice. At this time we have no function to drop dice rolls below a certain value. Here is the link to our Dice Reference guide:&nbsp; <a href="https://wiki.roll20.net/Dice_Reference" rel="nofollow">https://wiki.roll20.net/Dice_Reference</a> Regarding the lag, it is pretty bad. The Devs are considering the problem of what happens when people roll an extreme number of dice. One thing that helps is to go into your settings and disable the Advanced Dice. It wont remove the problem but it will reduce it until you get the excess dice off screen. Alternately, you can copy your campaign and remove the chat log that way.&nbsp; - Gauss
Gauss said: 1) Unfortunately, the 'impossible equation' is actually possible. You asked it to reroll everything equal to or less than a 6. It did so.&nbsp; I'm sorry? Is there a result on a d6 that does not satisfy the condition of " equal to or less than a 6 "? If your answer is yes, please specify the result. If your answer is no, please specify what makes you think this is valid input. Gauss said: &nbsp; 2) None of the actual dice results were buggy. It worked correctly.&nbsp; So if I understand you correctly, all of the following is true: 6 &lt;= 6 6 &lt;= 6 3 &lt;= 6 6 &lt;= 6 5 &lt;= 6 21 = 30 Gauss said: 3) This section is correct, the lag is pretty bad. The Devs are considering the problem of what happens when people roll an extreme number of dice. One thing that helps is to go into your settings and disable the Advanced Dice. It wont remove the problem but it will reduce it until you get the excess dice off screen.&nbsp; Thanks. But in the future, I will simply avoid using the operator, rather than eliminating functionality. This is simply a case of my reporting a bug after having witnessed it.
Gauss said: When you asked it to roll (5d6r&lt;6) it will roll 5 six sided dice and re-roll anything that is less than or equal to a 6. That is everything. The dice roller worked properly. As a note: it will cap out the rerolls at 999 dice. If that were the case, then it would not have highlighted random rolls within the sequence and produced a final result of 21. It should have produced a result of 0, or no result at all. But neither of those things are necessary; if you catch the error at the input stage, then you avoid wasting processor time on the arbitrary calculations and eliminate the problem entirely, including the subsequent lag. Gauss said: At this time we have no function to drop dice rolls below a certain value. Here is the link to our Dice Reference guide:&nbsp; <a href="https://wiki.roll20.net/Dice_Reference" rel="nofollow">https://wiki.roll20.net/Dice_Reference</a> That was never in question. The desired result would have been achieved with /r 5d6r&lt;5 instead of &lt;6.
1370922069
Gauss
Forum Champion
LOL I was in the process of editing my post to better explain when you responded. Ahhh well.&nbsp; In any case, rolling 5d6r&lt;X checks each die to see if it is less than or equal to X and if it is then it rerolls that die. It does not check the total. Just because all values are possible does not make it impossible. It just makes it useless.&nbsp; 21 does not equal 30, but you were not asking the dice roller to compare that.&nbsp; If you need anything else please let us know. :) - Gauss
1370922309
Gauss
Forum Champion
I cannot read your image since the quality is too low. I am not sure why you think it would have produced a result of 0 or no result. Eventually the dice roller caps out and stops rerolling. Then it will spit out an answer. That answer will probably be the last 5 rerolls that occurred. How they are graphically presented does not mean they are not the last 5 rerolls. They could have been the last of each string of rerolls for each individual die. &nbsp; - Gauss
Gauss said: In any case, rolling 5d6r&lt;X checks each die to see if it is less than or equal to X and if it is then it rerolls that die. It does not check the total. Agreed, but you were claiming that it was a valid input. If it were a valid input, then there would be an expected result (or range of results), and it does meet that requirement. Gauss said: Just because all values are possible does not make it impossible. It just makes it useless.&nbsp; We're obviously arguing semantics, but at the end of the day, if you think that this roll should be accepted by the dice roller, I would love to hear why. It is obviously erroneous input, and should be dropped (or at least throw a warning).
1370922558
Gauss
Forum Champion
I am not understanding why you believe it to be an invalid input. All of the possibilities are valid. Each die will be re-rolled infinitely until told to stop (at 999 dice). Is it useful? no. Is it valid? yes.&nbsp; Edit: I think I finally understand. We are defining valid differently. For you any roll that produces infinite rerolls should be invalid. I can see that logic and perhaps you should post a suggestion for the Devs to change that. However, mathematically it is valid. - Gauss
Gauss said: I am not sure why you think it would have produced a result of 0 or no result. Because the result of a command to "reroll until a number less than X is produced", upon failure, should be either "failure" (no result), or "no rolls meet that criteria" (0) — not "I gave up after Y attempts, but here's the last number I rolled that does not meet your criteria". In other words, it currently produces garbage data. Gauss said: Eventually the dice roller caps out and stops rerolling. Then it will spit out an answer. That answer will probably be the last 5 rerolls that occurred. Right. After further examination, the roller produced 1,000 results for each roll (999 rerolls) and accepted the last one as valid, even though it was not. What it should &nbsp;do is either reject the input or tediously execute each of the 999 rerolls and then report an inability to satisfy the criteria given. Either of those results would be expected functionality. What it currently does is not expected or desired. What is there to argue about?
At this point it's not really an argument of valid/invalid. The dice roller simply isn't "smart enough" right now to check your input to the degree of "well, this is clearly not what he wanted to do, since all rolls will be rerolls." I can look at adding that functionality in the future, but for now that's why there's a "hard limit" of 999 rolls, to prevent infinite loops like this.&nbsp; I'll look further at the issue with the lag on-screen when there are 999 rolls on the screen...although honestly I'm not sure what I can do except maybe automatically disable the advanced dice features (like the dice icons) if you roll say more than 100 dice at once?
Well I think the problem stems from the fact that you type in 5d6r&lt;6, which for someone who is used to math or just computer programming means "less than" but the dice roller interprets it as "less or equal than" which normally would be &lt;= Sure it's explained in the dice manual, but I can see why someone who's playing around with it can fall into that trap. Of course if you change it now, that would be too confusing as well, but you could just add two simple checks to the reroll function. Or the parser function at the beginning of the dice roller that tries to figure out what to do. If r&lt;X is used and X is equal or greater than the dice, then it doesn't do anything. If r&gt;X is used and X is equal or less than 1, then it does nothing. That should catch pretty much all of those infinite loops. Because honestly, I don't see a point in those infinite loops. The only times they happen is because either some players want to troll everyone else and crash the game, or because someone made a honest mistake. If I wanted to roll 1000 dice, I can still just roll 1000d6, and don't need 1d6r&lt;6. If I wanted to roll 1000 dice but ignore the first 995 and just use the last 5 (for whatever twisted reason I would ever want to do that that), I can just roll 995d6, completely ignore it and then roll 5d6. Or just roll 1000d6 and add up the last 5 manually. Again I wouldn't need 5d6r&lt;6
1370965029
Alex L.
Pro
Sheet Author
Quatar said: Well I think the problem stems from the fact that you type in 5d6r&lt;6, which for someone who is used to math or just computer programming means "less than" but the dice roller interprets it as "less or equal than" which normally would be &lt;= there is a good reason for having only "less or equal than" mainly because there is no dice that should product zero so if you used &lt;1 it would be infinate as well.
Well, as I said, I will take a look at what we can do.&nbsp; Also I moved this to the Bug Reports forum. You only need to post bug reports in the Mentors forum if they are for bugs that are on Dev specifically (like for a new in-progress feature). Thanks!
Does the cap really need to be 999? I think 200 would be much more sufficient until this can be resolved.
As of the next update, it will automatically turn off advanced dice features like the icons for rolls of 50 or more. So this should be "solved."
Alex L. said: Quatar said: Well I think the problem stems from the fact that you type in 5d6r&lt;6, which for someone who is used to math or just computer programming means "less than" but the dice roller interprets it as "less or equal than" which normally would be &lt;= there is a good reason for having only "less or equal than" mainly because there is no dice that should product zero so if you used &lt;1 it would be infinate as well. Actually let's look at that. &lt;1 wouldn't reroll at all, because no result could be "less than 1" and trigger a reroll. "less or equal 1" doesn't go infinite unless you roll a d1. And not sure you can do that. &gt;1 if interpreted as "greater as 1" wouldn't cause infinite loops either, because once it hits a 1 it stops. Depending on the size of the dice that can take a while. "greater or equal 1" can cause infinite loops though, since every dice result is 1 or higher, as you said there can be no zero. (and that's exactly what's happening) assuming a d6 for this example now: &lt;6 as "less than 6" wouldn't cause infinite loops, as once again it would eventually fall on a 6 and stop rerolling. "less or equal than 6" as it is now, does produce infinite loops, as obviously any result on a d6 is 6 or less. &gt;6 wouldn't produce loops either way, "greater than 6" wouldn't reroll at all, and "greater or equal 6" only rerolls sixes. I admit, using a &lt;6 and trying to reroll anything but sixes is kinda pointless anyway. I mean why roll dice if you gonna reroll anyway till you get a 6? There's nothing random about it anymore. So most people never fall into this particular trap and create infinite loops. The same for rerolling anything but a 1. But what might happen is one of these two things: 1) They want to reroll 1s and 2s and since they're used to the way &lt; and &gt; are defined in math write it as /roll 1d6r&lt;3 and maybe don't even notice it. "Reroll anything less than a 3" is what they want and "reroll anything 3 or less" is what they get. It doesn't produce any weird infinite loops, and unless you roll a lot of 3s in one roll and no 1 and 2 and wonder why theres a lot of rerolls, you will probably not see it. 2) They want to reroll 1s and messed up &lt; and &gt;. Instead of &lt;1 (reroll any 1s) they used &gt;1 (reroll EVERYTHING). It's a tiny typo and can happen in the heat of battle. Same if they just wanted to reroll 6s and messed up &gt;6 with &lt;6. Honestly, can't see the "good reason" except that it has been established like that and changing it now would cause every macro that's working correctly to malfunction, so I do not advocate changing it, I said that in my first post already. But those infinite loops should be closed anyway. My point was, nobody triggers those on purpose, so they should just throw an error message if someone attempts it. I suppose the fix Riley put in place helps to keep the aftermath in check, and also keeps players from trolling the game with 1000d1000 rolls or something, so that's a good start there.