LostArtefacts / TRX

Open source re-implementation of Tomb Raider I and Tomb Raider II, along with additional enhancements and bugfixes
https://lostartefacts.dev/
GNU General Public License v3.0
591 stars 37 forks source link

Allow speedrun "buffering" in TR1M #591

Closed Richard-L closed 1 year ago

Richard-L commented 2 years ago

Explained by @Rapora9 on Discord:

Btw, if tomb1main wants to appeal for speedrunners, it should support "inventory buffering". This means that if you

  • open the inventory
  • press a button to close the inventory
  • hold the button to open the inventory -> inventory should open immediately again after closing (2 frames from that iirc)

Currently if you hold the button to open the inventory again, it won't open. I guess this is because of some checks to make things not skip too quickly or something? You can try tombati to see how it works there.

Footi the other day complained it wasn't working in TR1M: https://www.twitch.tv/videos/1531467943?t=03h48m18s

Could be worth considering.

Is it at all to do with the fades?

walkawayy commented 2 years ago

I think changing this line from g_InputDB.option to g_Input.option would allow buffering. I was able to do it after that change, but I am no speedrunner expert so that would need additional confirmation.

In any case, do we want to make this change? @rr- might have changed it for a reason to prevent accidentally opening the inventory again immediately after closing it? And making an entire config option for this seems like possible overkill. I guess we need to decide if we want to try and gather speedrunner support for T1M which would require working with them and making a speedrunner config .json probably. It also might require code tweaks like this issue, so we would need a robust way to handle all the changes if we don't want to make a config option for each of their requirements. Speedrunners are a tiny part of the playerbase but could give the game good visibility on Youtube, Twitch, etc, so I think it's worth considering.

rr- commented 2 years ago

There aren't that many things they expect to be working. Stuff such as sidestep and fixing bump triggers already has config options so I'd say "enable_inventory_buffering" it reasonable.

(But only if there is actual legitimate interest to adopt this project by speedrunners)

walkawayy commented 2 years ago

@Richard-L do you know if speedrunners are interested in T1M? I'd think they would be but some people don't like change so who knows lol. I can open a small PR to allow buffering if so. And if there is interest, we would need to get a list from them of what we need to support. AFAIK, most of the key bugs like corner, QWOP, etc have optional fixes, so we might be farther along than we think.

Rapora9 commented 2 years ago

I don't know if speedrunners are interested in T1M but I feel they could be. This project has advantages that are useful for them, like the cheat codes and enemy health bars to make it easier and faster to test things, easy set-ups for challenge runs like no damage, easier way to verify that you've collected and killed everything in max% runs, Japanese mode for new interesting speedrun category if it doesn't exist already (at least in TR3 they use Japanese mode for this exact reason, and it's the default category I think), and possibly more.

If you want to get them join the project, I think it would be good to make a list of all possible improvements and properly market it to them.

A short reasoning of why you want to get speedrunners to join this project. Well, it depends on whether you want this to become popular. Speedrunners, challenge runners (who mostly are speedrunners too) and level builders are the biggest active groups who play TR1. So there are most likely many instances where someone interested in TR1 joins a stream of speedrunner and asks how they can play TR1 on PC. Again most likely the speedrunner will give instructions of the version they play. If they play tombati, they will explain how to get tombati running. If they play tomb1main, they will explain how to get tomb1main running. Also when those who already play TR1 on PC see the bigger names have switched to tomb1main, they might follow too. There's no guarantee, but that's how I see it.

Richard-L commented 2 years ago

I agree completely with both walkaway and Rapora.

I'm not runner myself but I've enjoyed following some of the streams of the leading runners across TR1-3. There have been quite a few occasions where someone in chat asked how they can get TR1 to look this good (since they have Steam or GOG). The answer has then usually been to google TombATI, as "it gets rid of the Dosbox". Just this week someone explored the Japanese Saturn version via an emulator since magnums apparently have triple damage. I also thought that speedruns are semi-supported by TR1M already, given the respective JSON settings.

The main issue I see is that the speedrun community do seem to hate change and usually don't consider a "mod" viable. What I've learned so far is that their reasoning makes zero sense, yet they're still very stubbornly committed to it. For example they do use TombATI instead of Dosbox, already a semi-mod if you will. At the same time they don't allow resolution upscaling of the PS1 version via emulators. Then there are many small things, such as TR1M fixing TombATI's bug where ESC skipping an FMV will immediately open the inventory in the level. This is now common practice for them, and losing the 2-3secs it takes to open and close the inventory is commonly accepted. With TR1M, those seconds would be won, and to their reasoning probably unjustly. Another thing might be that TR1M got rid of the texture wobble completely. But since it's still in TombATI, they would argue older runs were disadvantaged and thus TR1M shouldn't be accepted. Clearly though TR1M can't purposely include bugs just to cater to speedrunner expectations.

I'm pretty sure all this stuff wouldn't matter once they are won over by the QoL features Rapora mentioned: easier tools to explore levels and do route planning, easier access to the Japanese damage settings, no accidental glitches when they want to do glitchless, more save slots to organise their research, etc. I always felt like the config tool should exist before we approach them. But I could be wrong and it might be a good idea to try and obtain a speedrunner list now. I could try to speak to Tombeaux who seems reasonable, and who established a new glitchless world record just the other day. But let me know first.

Richard-L commented 2 years ago

More on-topic: another case of "buffering" or frame stepping is done at hand of the F2 key in TombATI, which essentially halts the game. You can see it exploited for difficult jumps in speedruns here: https://youtu.be/StjS6GfPwOo?t=3067

The player holds F2 to halt the game, adds holding F3, lets go of F2 (=one frame step), adds F2 again, let's go of F3 (=another frame step), and repeat as necessary. This allows for frame precise timings. A bit of a hack, and a further example for the arbitrariness for what's allowed in a speedruns.