Hacker News new | past | comments | ask | show | jobs | submit login

Watching speed runners play through games is a great way to visualise not only this aspect (that games are flimsy at best), but to visualise the same practice in any software - if you don't code defensively, often a simple mis-input breaks the game.

A common pattern in many speed runs is finding some glitch through a door, and then the game logic kicks in and says "you are past this door, so you must have got the key".

If you are curious, watch the five or so minutes of this speedrun: https://youtu.be/0Ct8n1CClUM?t=3072 First, the player jumps through a game world, getting to a race he shouldn't be able to get to yet. Second, he glitches into the "solid" wall, which is just a thin wall around the racetrack.




During the Hotline: Miami run this year the runner mentioned that on certain GPUs the game would crash unavoidably after 25 minutes due to a memory leak, and that if you wanted to increase the FPS you could plug in more mice.

None of that precluded it from being a great game, though.

https://youtu.be/aPnobTZfnfU


> and that if you wanted to increase the FPS you could plug in more mice

I am having trouble imagining what sort of event handling bs this might be taking advantage of...

I am too vanilla a coder at this point in my life.


I'm not a game dev, but rough guess: the framerate is artificially limited to some 'sane' range by the equivalent of a short sleep() which is cancelled by an input event. More devices, more events, more chance to prompt the next frame early?


Yep, almost certainly what's happening.

It's very common to constrain your central "game loop" for several reasons. A game like Hotline presumably has some basic loop like "process inputs, process events, update AI plans, process AI actions, redraw screen". When the logical tasks are easy (e.g. most of the AIs are dead and you're standing still), that's essentially just a busy-wait that redraws your screen as fast as it can. Constantly maxing system resources is obnoxious, and it can be jarring when things slow back down. 40FPS might look just fine, but you can still 'feel' the change when you ramp up and down from 60FPS, so it's nicer to just cap the whole thing at 40FPS. Mouse inputs probably don't adjust the cap itself, but to avoid laggy responses they're usually interrupts which might refresh the screen.

A fun aside: some games fill out the time until the next redraw with more "thinking time" instead of sleep(), which leads to bizarre behaviors like an AI that gets smarter when you turn down the graphics settings.


Yes, a typical artifact of not resuming the remaining sleep after the event handling.

Does not work with pushing random keys only because those are buffered separately.


Not gonna lie that is hilariously ingenious if its the case.


I've been in game dev for 10 years and I'm as stumped as you are.


Rendering is likely blocked on mouse interrupts.


For anyone interested in speed runs, you should check out Games Done Quick - https://gamesdonequick.com/. And it's all done for a great cause too.

I recently watched the fallout anthology run and some of the things the speed run community have discovered are amazing.


One of the best GDQ runs I've ever seen was one of the FFVII speed runs. This is a game that normally takes like 50 hours to complete start to finish. The RNG of the game is able to be manipulated by keeping the number of steps taken by the player absolutely perfect. This is a "speed run" that they play without any kind of tools or cheats for hours and the entire time they're keeping the exact number of steps taken through different levels on perfect track to be able to beat the game without spending dozens of hours training their characters.


Thanks to Breath of the Wild, I've recently enjoyed watching a few speedruns and it's amazing to see the number of glitches in BoTW. Check this out https://www.youtube.com/watch?v=JEtHpCfi_DE

I also don't understand how anyone can accept speedrunning through glitches as a world record, but I guess if everyone does the same run with similar or the same glitches then it's fair? Seems like it just becomes a race to know every glitch in the game.

EDIT: I just want to say thank you to the replies that explains the mechanics and categories of speedrunning.


A lot of the glitches in breath of the wild are just systems of the game interacting in weird ways. There are sometimes "glitchless" categories, but sometimes it's very difficult to figure out what is and is not a glitch. Calling something a "glitch" or not is a surprisingly subjective thing. To one player it may be a legitimate use of the bullet-time mechanic to turn frozen enemies into physics cannons while shield-surfing on them. To another it's a glitch. A lot of what gets decided as for the run comes down to the amount of time that using that strategy results in. Lowest wins. Any% in breath of the wild means "kill Ganon ASAP".


This can get super heated. There was a controversial "glitchless" run of Mirror's Edge at GDQ a few years back...

Sometimes people make a "no major glitches" or "no OOB" category, where specific glitches are disallowed, but others are allowed.


If we're thinking of the same Mirror's Edge run, that was meant to be a joke and to bring to light the ridiculousness of a "glitchless" run as a lot of things can be interpreted as a glitch or not.


Interesting! Thanks for this; this happened just as I was getting into speed running, and I, like many others apparently, didn’t realize that, but I did some googling over lunch and it appears this was the case! Thank you for the extra context.


They break it into categories. 100%, Any%, glitched, glitchless, etc. To set a record with glitches doesn’t put you against people that run without them.


Yeah, to give some examples, [1] is a world-record ("WR") Hollow Knight Any% run with "No Major Glitches" ("NMG") completed in 33:07 just a few weeks ago. [2] is an Any% run that takes full advantage of glitches, and is over 10 minutes faster as a result (20:21 from November last year). [3] is an example of doing a complete 112% (i.e. getting everything that counts towards the regular completion percentage plus the DLC), and consequently takes over 3 hours. (That particular run was 3:23:34 from last June.) I mostly understand what's going on in the first -- a few minor bugs get used (like falling faster when the menu is open) and it takes advantage of things like changing the language to Chinese to skip text faster as well as quiting to the main menu to warp back to the last bench, but primarily the run depends on exploiting mechanics that are intentionally part of the regular gameplay but which allow the player to sequence break (like dying deliberately by the charm vendor to spawn your shade so that you can bounce off the shade while fighting it to get into the Resting Grounds quickly) and knowing exactly how to move to get through areas as fast as possible. For [2], I'm honestly not sure what is even going on for a lot of it. I think the speedrunner gets outside the level geometry by exploiting a bug with how loading works?

[1] https://www.youtube.com/watch?v=FFZy2gtwpI4

[2] https://www.youtube.com/watch?v=SAw-_uYhAlU

[3] https://www.youtube.com/watch?v=MCOmg5kpCM8


Playing the meta is part of the game. If you're not loading in other code or using 3rd party assistance, it's fair.

Understanding the buy strategy in CSGO doesn't make you a "cheater", in means you understand how to stretch the game to it's limits.

Mike Vrabel taking penalties to burn the clock might seen unfair, but he was just leveraging the rules as written to improve his chances of winning.


> Understanding the buy strategy in CSGO doesn't make you a "cheater", in means you understand how to stretch the game to it's limits.

the economy in cs is a core mechanic of the game. I don't know of any buy strategies that are even close to considered "exploits".

a better example would be illegal boosts. in the old days, there were many OP positions you could get into by boosting on top of other players (or even throwables in midair). each competitive league would have its own lists of illegal boost spots for each map. boosting on throwables was almost always illegal. you could also do stuff like defuse through walls, which was always illegal.

bunnyhopping was something of a grey area. some leagues allowed it, while others didn't. it was eventually patched out of the default game settings behind an svar.

allowing literally anything that didn't involve loading external code would have severely broken cs:source. there were even ways of replacing assets that would effectively give you wallhacks without injecting any code. these decisions always comes down to "how much does this deviate from the balance designed by the developer?" and most importantly "is the game still fun with this behavior?"


All good points, but additionally: sometimes it's good to wait and see where a glitch takes a game, rather than banning it straight away because it 'breaks' the version of the game that everyone has been playing so far.

A classic example is the Quake series, where the movement mechanics that gave the games lasting appeal were all originally accidental. (And Carmack even briefly patched strafe-jumping out of Q3, before quickly reverting -- but only because his fix caused other problems: https://www.rockpapershotgun.com/2014/09/02/quake-3-john-car...)

David Sirlin also writes well about this sort of thing (with more of a focus on 'cheap' use of intended mechanics), though his tone could be offputting to people who think hyper-competitive videogaming is a bit silly: http://www.sirlin.net/articles/playing-to-win


I totally agree. "skiing" in tribes is another classic example. fun mechanics take priority over everything. after all, it's a game!

as an aside, strafe jumping is pretty similar to bunnyhopping in cs, probably because the source/goldsrc engine had its roots in quake code. I brought it up as a grey area. it's a fun mechanic, but timing is really important on cs maps, and it definitely breaks the balance on some of them. personally I think it was a mistake for valve to patch it out of the vanilla game (leagues, 3rd party servers, and matchmaking could have just disabled it through the svar), but that's all history now.

my main point is that the mere fact that games take place in virtual environments doesn't make whatever the client/server permits the ultimate law of the land. just like in real life, the rules of the game are the intersection of what's possible and what's fun.


> Mike Vrabel taking penalties to burn the clock might seen unfair

Certainly not unfair to do it against Bill Belichick, who did almost the exact same thing earlier in the season--first time I'd ever seen a delay of game or false start penalty declined.


For some extra context here, the "100%/any%" thing comes from Metroid, which would give you a percentage score at the end of the game. So "any%" came to mean "literally anything goes, get to the end of the game." This culture has carried over to games that don't explicitly tell you how much of the game you've completed.


Sorry for the downvotes. For the speedrunning community, somebody pointing out that using glitches during a speedrun is cheating is a bit like making an obvious joke about somebody's last name. Not the first time they've heard it, and won't be the last :)


I only pointed it out because I wanted to understand the reasons, especially when world records are being set. However, I accept your apology and reasoning for downvoting me, and I would never point it out during someone's speedrun since I would just want to enjoy their achievements.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: