Hello everyone!
A few days ago, thisishowmymindswork made another HUGE discovery. (Thank you a lot!) He found a flash decompiler software that allows us to actually make some modifictions to the file itself. Since all the game is basically contained in the ots.swf file in the game folder it means that we could potentially modify the game how we want. In practice we're still limited a bit so i'll try to explain all the things that we CAN and CAN'T do, as well as talking about what we should do about the different possibilities of abuse with it.
The software used is JPEXS Free Flash Decompiler that you can download here: https://www.free-decompiler.com/flash/download/
After finishing installing it, launch it then load the file ots.swf and you should get this:
The folders images/sounds/binaryData contains all the sprites/music/SE/text data of the game. We can very easily modify these files. Right click on the file then select "Export selection". This will make a copy on your computer that you can modify how you want. After finishing modifying it, right click again on the file you want to replace then select the one on your computer you just modifed.
After finishing your modifications, just save (it will take a few seconds) and that's it! (BTW, i think that's the right moment to warn you that you should keep a back-up copy of ots.swf) Modifying the image/sounds assets is pretty straighforward. Replacing the text data (that contains all the room names, NPC dialogues etc...) is a bit more tricky and i detail it in my (updated) guide on how to make custom levels you can find here http://www.speedrun.com/ots/thread/n64k0 This allows us to do all kind of modification. Here is a little showcase of some of them:
Now, let's take a look at the "script" folder that contains all the game code. Clicking on a file will show it's content.
Unfortunately, we can't modify it directly. (Well, you can do it but it will corrupt the file) In order to change something you have to click on the part you want to modify. This will open a second window with an alternative (and less comprehensible) code in it.
If you want to modify something you have to modify it there. If it's just changing a constant it's pretty easy.
Then saves and enjoy!
Now, i don't have a good enough knowledge to tell if we can make more complex changes in the code than just constant changes and deleting stuff. I'll let people with actual knowledge of programming telling this.
Anyway, the introduction of this new tool raises several points that we would like the community to discuss together.
-
What should we do about the potential abuses? Imposing more iconvenient rule that would make cheating impossible or changing nothing and just letting the mod be more vigilant? Also:
-
Is it possible to detect someone cheating, even if he just did minor changes?
Finally,
- Is there some modifications that would be considered authorized in a speedrun? Like changing some textures, some room names or making the game not auto-saving by default.
This is far above my head, and unless someone convinces me to start making levels, I don't think I will tinker with this at all. Here is the Reader's Digest of my thoughts, to each of your three questions:
- I used this analogy in Discord. The OTS Community is like a backyard bonfire. We have a nice flame going, and the best way to keep it going is to resist the urge to keep adding and moving logs. It's a small fire, so it's unlikely to escape the fire pit and burn down our house. We just keep a water bucket nearby, just in case.
In other words, I propose we do absolutely nothing, because Prettz already demonstrated how hard it would be to verify, irrefutably, that a run was not tampered with. Anything we could impose would be more trouble than it is worth, and may not even achieve that goal. Cheating happens even in games with large communities; when someone notices, it is dealt with, but the community survives by being enthusiastic and altruistic.
- As I believe Ghuia brought up in Discord, even subtle changes will show up in rooms that have fairly constant timing. We know what jumps are and aren't possible, so you're not gonna sneak an extra pixel of jump height and "discover" some new trick. We have tweaked strats in rooms that don't have big exploits, so it will stick out like a sore thumb if somebody barrels through Amazing Horseshoe. There's nothing to do but sprint in Fresh Air, so movement speed would be obvious as well.
If it's subtle enough to escape us, then the runner is probably skilled enough without cheating that the net gain would be a second or two at most - in other words, the runner's time would be better spent practicing to shave a couple seconds than tinkering with the game. I think most runners would realize that, even if they WERE interested in cheating. (And if they're interested in cheating, they're probably interested in quick glory, and so are speedrunning something else.)
- I think, unfortunately, this is still a pretty resolute no. Even if my points above make it seem like modification is no biggie from an enforcement standpoint, it still stands to reason that we should set the expectation that you run the standard build of the game. I hope that's not frustrating for runners like Natos and Timbouton, who have already made incredible levels. Is it a pain to keep a separate set of game files handy for when you want to speedrun and when you want to run custom? Even for purely cosmetic changes, I can't think of a way to justify a modded game file.
Hope this starts/continues a discussion!
My two cents on this topic:
-
I agree with Busker on this one. Adding complicated rules will only deter people from wanting to speed run this game, and it might even discourage old runners from coming back. One of the big reasons I started speedrunning this game was that it was so simple to do, just hit record and play through the game. I also don't see any easy (or complicated for that matter) way of doing this reliably.
-
I can't think of any way to detect minor changes, but I also think changes like that wouldn't actually improve someone's time that much. Now there might be a grey zone where the change is small enough to not be noticeable but big enough to give an unfair advantage, but I doubt it would make a huge difference even then. Any large amount of time gained from cheating will probably be fairly easy to spot.
Also, most of the current active runners (including the mods) are very familiar with the game at this point. We would probably be able to tell if someone is pulling off a trick we know to be impossible without modification. If there was ever any doubt I guess we could ask the runner in question for further explanations or proof to verify that what they did is actually possible without modifying the game in any way.
- I am a bit on the fence one this last one. I see how allowing some modifications might be problematic and lead to grey areas about what can and can't be done, and it would be difficult to draw clear lines. And maybe in some cases purely graphical changes might affect the game in ways we aren't aware of. I do understand how a strict no modification rule is the best thing to go with.
On the other hand, we could also use this to even out the playing field a bit, as Rezoons suggested with the auto-saving, which can cause some trouble. Also, I'm not sure if it does create frame-rate issues for some people, but if you ever go "OOB" the game will start throwing a bunch of errors because it's trying to load the name of a room that doesn't have one defined. We could fix this now. I'm not necessarily saying we should. I'm just putting the idea of bug-fixes on the table. I would love to hear other people's opinion on this particular matter.
As I said, I'm still unsure. A no modification rule is probably the best option, at least for the time being. If we ever did allow some bug fixes, or changes to the auto-saving, I think we would have to put something together as a community. Figure out what part of the game creates issues for players, and in what ways we could potentially fix it. A sort of less-lag-pack that people could "install" if they wanted to is essentially what I'm thinking of here.
This is a bit off topic, but a response to the the last part of Busker's post regarding the hassle of "installing" and "un-installing" custom maps. There is a way to non-intrusively add custom maps, namely to put an entrance room somewhere out of bounds that you can get to from the main game. (My solution was to put it above "Lava Pits", since it's early on and not to hard to get to)
First, @kobepilgrim it's this one:
Second, here are my opinion on the topic.
-
I also agree with both of you. I don't want to add some complicated rules, at least not for the any% IGT category for all the reasons you've talked about. I know very well that if i had to do some complicated step to submit a run i would have probably never tried speerunning in the first place. There is also the fact that i'm pretty sure that whatever we would impose to try blocking cheating there would always be a way to circonvert it.
-
I've made some test myself and i can confirm that even small changes can be seen. This is mostly thanks to the fact that we all nearly have the same route and so we pretty much have yuri's behaviour entirely recorded in our head. We can then notice if he has some unusual behaviour. Of course very minor changes can be made so that they are nearly unnoticeable but i didn't saw any noticeable difference in time. It's possible to gain a few seconds so that's probably not worth risking getting banned for that. Also, as thisishowmymindworks said, cheaters usually prefer more popular games.
Nevertheless, i will still be more carfeull when watching sub 8 runs (i doubt people would cheat their way to the 15th place). I trust everyone here but by principle i'm still gonna take the carefull approach.
- I have really mixed feeling on that one. On one side i'd love to be able to have autosave automatically turned off when i run. Also, bug fixes like the OOB issue (that would cause frame drop on my old computer) thisishowmymindworks talked about would be great!
On the other side, i think it really goes against the principle of speedrunning in itself, that is running the game in it's current state. I don't really have any example in my head of a major speedrunning community that did that. In the end i'll see what other people think about it.
Also, i might add that we can still create new category if people are interested in making run with weird modification like 2x speed or removing all sprites (sorta like playing blind).
Finally, i will also bounce back on what BeardedBusker said. Even if you need to change some game file to add room names/custom dialogues these will NOT affect the main game in any way (unless the custom levels are in the main game itself). Even if it's technically tempering with the game file you can still run game without seeing any changes. Of course, there will still be the door that leads to the custom levels but that means you only need to remove this object to get back to the "normal" game state.
In the end it seems that our 3 opinions are close enough (at least for the first 2 points). Ghuia already gave a similar opinion for the first two points but i'm curious about what he thinks about the third one if he see this. Also, what i'm really curious is PrettzL's opinion! From what i felt when we talked about it, he seemed to have an overall different opinion on the matter. Otherwise i'll let the thread open for 1-2 weeks and i invite everyone to tell what they think about this just like when we talked about the mouse wheel rebinding issue. (Don't worry, you don't need to write as much as we do!)
-
We've been discussing this on Discord in the modgroup- as far as I can tell we've nailed down the vernacular to prevent major abuses and arguments that people could use to weasel major abuses in to their runs or force us to accept their run if it contains even a more subtle abuse.
-
From what I've been made aware of as to what can be changed some things could easily go unnoticed if they were changed, such as the firing times between teleshots and gauss shots. This could be reduced or eliminated entirely, though it would be fairly apparent if not utilized subtly and this change would be a major advantage in some rooms. I'd rather not list all of the subtle examples, but I am looking for them and I'm fairly aware of what subtle changes can be done to the game files now. We will be keeping a close eye for this type of abuse in the future.
-
If anyone can think of reasonable game modifications that do no more than setting a standard baseline for everyone to compete on I am welcome to discuss them, but as it stands currently any modifications to the game files that are outside of the developers original intentions disqualify a run.
This is a very serious topic that I am hopeful to hear from the rest of the community on, this isn't something that the mod team should have have the final say in. We need input from those who want their runs to be approved without being heavily scrutinized because of one thing or another.
We're here to help.