9 ms·
How did so many Dungeon Crawl: Stone Soup players miss such an obvious bug?
- personjerry 5y agoSeems like having tests would've easily solved this issue.
- Supermancho 5y agoThe question is "why didn't the players notice" not why the developers didn't notice. The article leads with a clickbait question. The reason they didn't notice is because the stats aren't readily available and public to everyone, to see the sharp uptick in wins paired with the game being filled with opaque systems. No player playing for the first time would notice or have a chance to notice. To put it another way, this is an article about a (secret and mistaken) massive change to a very difficult game that made it slightly less difficult. Same article turns around and asks why nobody noticed, like that's an interesting question.
- hnxs 5y ago“Slightly less difficult” is a huge understatement. I don’t know specific stats, but I’d say the average player had their winrates at least double (eg 2% to 4%)
- cortesoft 5y agoIt is not easy to notice a change of 2% success to 4% success without a lot of samples.
- djmips 5y agoI thought it was an interesting question followed by an interesting take. There was a bit of ego salve in the conclusion but it seemed plausible.
- thaumasiotes 5y ago> The question is "why didn't the players notice" not why the developers didn't notice. No, lots of players noticed. The question is phrased as "how did the players miss this?", but that's not what the author means - what he means is "why didn't the community come to a consensus on what had happened within two weeks of the introduction of the change?" Which is a much stupider question.
- mandmandam 5y ago> Which is a much stupider question. I don't think it's a stupid question at all; not when the effect is so large. It was literally double what it should be, leading to a 3x overall win rate. Coming from Dota 2, if there was a bug like this it would be caught within minutes, if not seconds, and patched within an hour or two. - Yes, the Dota player base is orders of magnitude larger, and the damage numbers are easily available. Also I have never played Crawl.
- tsimionescu 5y agoIt's not a stupid question at all, it's actually a good pretext to discuss the difficulties inherent in reasoning about an opaque system you are interacting with. The article also brings evidence that many players didn't notice or believe that anything changed, they specifically believed that nothing did change, which is a surprising belief for such a huge change - but understandable in the context of of such an opaque system. I also believe that other players noticed something had made the game easier, but no one realized what specifically had changed, or most likely suspected how big of a change it was.
- thaumasiotes 5y ago> The article also brings evidence that many players didn't notice or believe that anything changed, they specifically believed that nothing did change, which is a surprising belief for such a huge change Not really. The article cites responses in online discussion to that effect. But there is no evidence that those responses came from someone who had ever played the altered version of the game. With certainty, many of them didn't. You don't have to do a playthrough on the latest version before leaving a new comment in a forum thread. It's a safe bet that the majority of the player base never encountered the bug at all, since it was only available if you downloaded the game within a two-week window.
- kibwen 5y ago> the stats aren't readily available and public to everyone The stats have always been public and instantly available, impressively so. Here's the bot command to query the stats in question: !lg * start>"2015-03-06 00:00:00" start<"2015-03-21 00:00:00" cv=0.16 / won Output: 1180/39437 games for * (start>'2015-03-06 00:00:00' start<'2015-03-21 00:00:00' cv=0.16): N=1180/39437 (2.99%) So that's a 3% winrate for the major version in question during the dates the bug existed. Using another query to determine the all-time winrate across all versions: !lg * / won We see the historic winrate to be about 1%. The listgame interface is documented at https://github.com/crawl/sequell/blob/master/docs/listgame.md https://github.com/crawl/sequell/blob/master/docs/listgame.m... , and the bots can be found on IRC and Discord.
- muzani 5y agoThis is an interesting idea. Let's say there's a new feature where electric damage and cold damage ignores metal armor. But suddenly there's a bug where if the weapon does both electric and cold damage, the physical damage also ignores armor. How would someone design tests that work well for roguelikes? It's not simply Human strikes Orc for 10 damage. Damage range may be a bell curve of 5-15. There's misses and hits. There's little bonuses that increase the miss probability, probably to ridiculous levels. There's armor, calculated from things like race, constitution, magic, divine bonuses, class mastery bonus. And then you have procedurally generated... stuff. Equipment are the easiest to control. Some games have procedurally generated monsters, some have procedurally generated deities. To be able to reduce this stuff to tests kind of defeats the purpose of doing it, which is to be unpredictable. Sometimes you have a combo of things that add up to 40% damage resistance. Is 40% too much or too little? After all this, how do you detect that the bugged spear is doing an unreasonable amount of damage?
- personjerry 5y agoIn cases like this we use mock functions to replace the rng dependent functions during testing. https://en.m.wikipedia.org/wiki/Mock_object https://en.m.wikipedia.org/wiki/Mock_object
- deleted 5y ago[deleted]
- muzani 5y agoThis won't catch the procedurally generated edge case though unless it mocks every possible combination. It could well run into millions of scenarios just to test damage.
- a_e_k 5y ago(a) Set a deterministic RNG seed before each test. and/or (b) Have each test loop enough to get a good estimate of the probability distribution.
- 5y ago
- soared 5y ago> try to design an experiment that would prove whether the value written in the system is correct. If designing the experiment is very hard, that should be interpreted as a risk factor - if no one can check that the system is doing what it ought to, then maybe it really is wrong!
- nimih 5y agoIt sure would be inconvenient for your hypothesis if the crawl project had a `test` directory which predates the bug in question...
- cridenour 5y ago> Computers are warm rocks we tricked into doing math and it’s a miracle they do anything. This might be my favorite way to describe programming.
- meowster 5y agoThe energy that made those rocks warm, came from spinning other rocks really fast.
- teruakohatu 5y agoI might be missing the joke, but it mostly comes from burning rocks (coal), shining sunlight on rocks, water flowing downhill or wind/gas/steam spinning metal.
- meowster 5y agoElectricity comes from spinning loadstones (magnets).
- mrob 5y agoBig generators in power stations typically use field coils (electromagnets), not permanent magnets.
- p1necone 5y agoAll of those energy sources are then somehow converted into spinning rocks (magnets) really fast to convert them into electricity though.
- ben_w 5y agoAll but one of them, though PV is quantum magic and rather more mind-bending for most people than non-euclidian geometry was for Lovecraft.
- tsimionescu 5y ago
- kleinsch 5y agoI play online games that have variable winrates bc you’re playing with a match made team. If I go on a 5 game win streak, did I improve? Is the game bugged? Nah, I probably got lucky and got good teammates. If I go on a 5 game loss streak, that’s definitely what I’m telling myself. There’s an element of luck in roguelikes too. It’s part of what makes both types of games compelling. The outcome is uncertain when you sit down to play. So are there psychological traits that make players likely to mistake this bug? Maybe. But on an individual basis, without aggregated winrate data, how would I know it’s not just a lucky winstreak? Especially when I’m playing a style of game where that’s the point?
- dota_fanatic 5y agoBig fan of DCSS, but this doesn't surprise me. After getting a few all rune wins I stopped playing largely because it is so opaque. Even after spending a LOT of quality time with the (sometimes incorrect) wiki and in-game lookup system, I realized I would never have an intuitive sense of the effects of my choices wrt stats, skilling, weapon and armor choices, and so on. I watched some of the best crawl players in the world play to see how they approached these very common situations and even there I didn't see as much consensus as I hoped to find given common scenarios. Part of the joy of being human is understanding systems and working with them efficiently to achieve goals. Good luck doing that with crawl. You can sort of achieve this by dumping a lot of time and building up intuition via experience, but you still won't be able to say why you chose this over that for all your choices. I found myself getting into scenarios, wondering, which choice is better along one particular dimension? STR vs DEX? This armor vs that? What are the trade-offs? The only real way to find that out would be to dump the game at its current state and then simulate both choices against a suite of enemies to see how it plays out at least in 1v1 situations, never mind when handling many enemies. It's frustrating playing a game with so many numbers yet the output of the systems they feed into are so opaque. It's really unfortunate because although it already feels like a gem of a game, it could be soo much better if the interplay of the various combat / character systems wasn't so ridiculously complected. I would love to see some of the sensibilities of the Factorio team applied to crawl's UI and underlying combat/character systems.
- eeegnu 5y agoIt's worth noting that at least in recent versions, the in game formulas have been getting simplified. For instance armor used to give you both AC and GDR (guaranteed damage resistance), whereas now GDR is a direct function of AC regardless of its source. Similarly DEX now more directly influences Evasion, whereas before it was artificially capped to give very diminishing returns past ~25 DEX, and now allows you to get very high Evasion.
- dota_fanatic 5y agoThat's good to hear. I hope they keep going down that path. To refer to another game, in any of the Soulsborne games (Dark Souls, Bloodborne, ...) by From Software, as you level up you get to contribute points towards stats which affects your ability to wield weapons and how much damage they do. You don't even have to equip them, the game gives you a diff of what your new damage will be along various dimensions (physical, magic, etc) as well as how your "equip load" is affected just by inspecting it. Although this doesn't necessarily mean you can understand the difference between a really heavy, highly damaging weapon vs a fast weapon, by reading a wiki or by playing through once or twice you'll have a very good base understanding of what different weapons bring to the table and how your character drives those strengths/weaknesses. With DCSS? Well... how much damage you do is going to depend on whether or not you're wearing a shield (what size?), what kind of armor you're wearing if any, how much you've trained for that weapon class, how much STR you have, what bonuses it has, and what bonuses you have from gear. Then RNG will play a significant role on top of that. Maybe RNG applies twice, once for your swing, once for their defense? It's been too long, I can't say confidently. I realize it's challenging for the interface design because everything is already tight but I'm sure there's a solution. If I equip this armor/weapon/jewelry, how fast will I be attacking compared to now? What will my damage distribution look like before enemy resistances? Same with allocating stats, please give feedback in the form of derived data that is closer to the thing I care about (surviving).
- thaumasiotes 5y ago> Since time travel is impossible even for Apple, the past should remain constant no matter how far ahead in time you’re looking at it. For example, you look the same in your 2010 yearbook whether you’re reading it in 2011 or 2021. The time you’re reading the book doesn’t have any bearing on what the book says. A lot of historians and archaeologists would be ecstatic if this were actually true.
- Jarwain 5y agoTechnically wouldn't the main impact of time be not what the book says, but how it's interpreted? Barring issues from degradation ofc
- slim 5y agoCommunication = context + information. There's no communication without context. So there's no reading without interpretation directly tied to the context of the reader. You can't read the same book twice without it being different.
- goodcanadian 5y agoAlso, over time, the book wears out, so someone makes a copy. Mistakes and misunderstandings creep in. Or, even, the copyist changes a few things to better fit his world view. It is possible that the book isn't as static as you think.
- thaumasiotes 5y agoDegradation is a very serious, and inherently time-based, phenomenon.
- tsimionescu 5y agoAs others have pointed out, degradation and imperfect copying are serious issues, they can't really be ignored. Also, language itself changes over time, adding significant difficulty to understanding what the book was supposed to have said. And of course, metaphor and references to then-well-known people or events become unrecognizable very quickly.
- soared 5y agoIn my day job I manage ~8 deep learning models that make decisions automatically. I adjust 3 inputs, and the models output a lot of data that I use to make adjustments the next day. The issue is.. its incredibly muddy. Making the same change across models, according to documentation, will produce similar results. Having only had this job for a couple months I honestly cannot tell if the input -> output is just very very muddy, or if the documentation is wrong and the models all behave differently. Similar to Crawl I can't see behind the curtain.. my inputs are generic "factor 1", "factor 2" and my outputs have more meaning but are subject to unknowable fluctuations from outside sources. > holding the system constant enough that you can evaluate your changes over time I do not know if I can learn from the system because I'm not sure if its trustworthy. Good thing there are directions on how to test it included in the post :)
- zijoud 5y agoPretty funny.. I happened to have picked up DCSS during this bug and I'm just now learning about it. http://crawl.akrasiac.org/scoring/players/zijoud.html http://crawl.akrasiac.org/scoring/players/zijoud.html I was only playing the game for a week before I had a "streak" of wins, which is something you shoot for. And it was all during a tournament. I felt cool then, but not now.
- eeegnu 5y agoTo give another example of a bug in DCSS that went unnoticed for a while: there's a spell called Ozocubu's Refrigeration that for 6 months [1] dealt 1/3 the damage that it should have. It was considered very weak with a steep drawback before this (for a short duration after casting, you couldn't drink any potions), so it was ignored, and no one really questioned why it was useless. [1]: https://github.com/crawl/crawl/commit/ab847a317b82e2fb0316bf19c0c5e8f66163f2a7 https://github.com/crawl/crawl/commit/ab847a317b82e2fb0316bf...
- Gunax 5y agoI don't think this is player stupidity at all. Actually, I suspect it's perfectly rational. The game is so noisy that no one can really predict what will happen. If I hit the grue with my sword--it could reasonably do 10% of damage or 40%--and both seem plausible. In a statistical sense, the greater the standard deviation is, the more difficult it is to detect a sample population that differs from the established distribution. In a bayesian sense, the players may have been perfectly rational--the likelihood of doubling or tripling your winrate is just not very unlikely when you're playing a game which is very random. Perhaps players can rationally conclude they were in the top 1% of luck at the moment, and that the chance of a major bug is less than that. As evidenced by the referenced posts, it only becomes obvious when the sample size is huge (eg. the sample of all players reading the subreddit).
- ajuc 5y agoYes. It's very similar to when you encounter compiler or operating system or hardware bug as a programmer. You are trained for years to NEVER BLAME THE LOWER LAYERS because that makes you a worse programmer. So when it is actually their fault - you might look stupid for exhausting every other possibility before checking these basic assumptions. But this is still a good rule, because it breaks very rarely.
- Retric 5y agoReminds me of the utter hell it was to discover the test machine had bad RAM.
- ajuc 5y agoI've had a bug in linux driver for a very shitty touchscreen we used in our embedded devices. It needed manual calibration and you had to save the calibration matrix in a config file read on system startup. They used locale-aware input function in a driver so when the locale was German (or other with "," as a decimal separator) it broke and users got kernel panic at startup :) It bricked all our devices in Germany. We worked around it, notified the device driver developers and forgot about it. A year later we shipped with new version of kernel and it broke again - because the bug was fixed in kernel and our workaround was now causing the bug :)
- ballenf 5y ago> ... remember that the Systemic Stability Principle is completely false, and just happens to be a false belief that it’s often useful to hold. A system being stable in the past doesn’t mean it’s stable now, and evidence that the Systemic Stability Principle works is not the same thing as evidence that it’s right. That is, the only way you can get better at a game like this is to assume that the system is stable (otherwise you'll attribute failure to bad luck instead of bad strategy). > It’s also important to avoid refuting observations by appealing to system definitions. If someone says “This feels like it’s doing more damage than it says”, resist the impulse to say “Nope, it does exactly this value; it’s written right here.” Instead, try to design an experiment that would prove whether the value written in the system is correct. If designing the experiment is very hard, that should be interpreted as a risk factor - if no one can check that the system is doing what it ought to, then maybe it really is wrong! Play yes-and with systems skeptics, letting them invest their time into correspondence work if they think something is wrong. Or be the system skeptic yourself, if a certain observation sits wrong with you. That skill is a superpower in software development when dealing with complex systems that behave unexpectedly.
- throwawaygal7 5y agoI'm a former DCSS player. I actually love the opacity and lack of documentation in the game. One of the truly enchanting elements of older rogue likes was the randomness, undocumented features, and various other things along those lines. It has been very sad to see crawl lose a lot of these elements as the pave of development has increased... The new player base wants everything to be optimal and so has gradually militated for the removal of the more unique and strange elements of the game play. Simplified combat and magic, removal of extraneous skills, crippled food system... soon no doubt they'll try to 'balance' the mutation system which is the last of these old school rogue like features to still maintain a large presence. I think the dispute is generational... I love crawl and had some modest victories but never defined myself around it. to me it was a distraction and just a fun game to sink time into in undergrad - not something to be relentlessly optimized.
- kibwen 5y agoTry any of Crawl's zillion forks that add all sorts of weird things. Or you can just play old versions; even the official servers still host versions from over a decade ago.