Anything special needed to support speed running?

Though not a major priority, I’d like to make sure my game is speed-run friendly. One barrier to this is that going from one level to another displays a loading screen that will take a different length of time depending on the hardware being used. I’d like to make sure that hardware isn’t a major factor in speed-run time.

My understanding is that speed runners use tools that can access the games memory, to stop the timers (among other things) when certain important things happen. For example, some of these programs will detect that the game clock is stopped, and perhaps stop the speed run timer. I was wondering what, if anything, I should do to make that feasible.

Right now, when going from one scene to another, I have a singleton one which I set a “IsInSceneTransition” property to true. Is it likely that speed run software could figure out how to access that value, and use it to stop the speed run timer? Or is there something I could easily do to make it possible/easy for speed runners to get reasonable timings when playing my game?

To be quite frankly, speed running is the art of abusing game mechanics to be faster than should be possibly in most cases. There is not really anything you need to do to support speed running. Having identical loading times for everybody would sure be nice, but is a physical impossibility given the hardware diversity people use. Often speedruns differ by milliseconds to seconds at most, so i’m pretty sure they have a way to get around those problems.

I’m honestly not super familiar with the speedrunning scene, but for some speedruns only times within levels count, some only run single levels at a time, others run through the whole game, some sites allow using tools, some others dont afaik.
As far as detecting a boolean goes, if it’s possible with something like cheat engine, i’m pretty sure more dedicated speed running tools (which i’m not familiar with) can do it too. Keep in mind that speedrunners are literally those people who will do their best to break your games in a way to let them get to the goal faster. Pretty sure they dont expect help from you for their runs. Not sure if my comment is all that helpful, but for now i’d focus entirely on making the game fun to play, which will attract the speedrunners in the first place. Adding a bool to the loading screens or something along those lines can easily be done in the aftermath, if that’s all you need to do.

1 Like

That’s mostly what I was expecting, and that I probably don’t need to do anything special to support speedrunning. My understanding was that they generally look at the program’s memory and identify information in it, in order to tell that the player has reached the end of a level, the game is paused, etc. If that’s the case, and as long as Unity doesn’t go out of its way to prevent people from gleaning this information from the program’s memory, I guess I’ll just punt on this.