mon / BemaniPatcher

Web based DLL binary patcher
MIT License
213 stars 135 forks source link

Alerts for game-breaking patches / remove obsolete patches? #340

Open LupinThidr opened 9 months ago

LupinThidr commented 9 months ago

Certain patches negatively impact and/or break the game without the user knowing.

Patches that users blindly apply, from reading various communities:

Patches that haven't been necessary for a long time (fixed in tools, since they were just string patches or skipping win32 functions) but people keep porting and adding them:

UX-wise I'm not sure how to deal with the problematic patches. Obviously you could remove them outright but that won't stop people from seeking out alternative ways. The first idea I had when writing this was to have a confirmation dialog (not javascript alert/confirm since browsers ask if a user can block them) that require 10 seconds before passing. Something annoying that will catch a user's attention rather than a tooltip, since knowing that a patch breaks your experience is more critical than knowing what "cursor lock" does.

Also plenty of patches have various labels and descriptions. Might be a good idea to have a central area for them somewhere so there isn't 15 variations what "dark mode" is for IIDX for example.

mon commented 9 months ago

You raise some good points, UX is always tricky.

I don't think it's valid to think enabling HDMI audio / shared mode audio is an undesirable state. Often people just wanna play the game in the easiest manner, timing be damned. Lots of games have an offset, so it's not like it's the worst thing in the world.

I believe the IIDX monitor check skip patch is so you can run TDJ at 60Hz, but don't quote me on that.

If you can more clearly describe how the 120Hz SDVX patches work, best to make a PR documenting them instead of assuming I want to go to the effort of finding out for myself.

I'm not sure if you've seen, but in addition to the normal tooltips, there is an orange "danger" tooltip that already alerts people to things that might break stuff: image

A fair number of pfree hacks already have this danger tooltip, if any are missing they should be added. I think calling them "massive hacks" is overrated, stuff like SDVX III and Museca work absolutely fine with them and it works great with their modular scene system.

Stuff like the instruction set, IIDX monitor check patches are probably worth upgrading from "tooltip" to "danger" any place they occur. But aren't the new ones able to force a specific monitor check value? If your setup is consistent, that seems valuable to me.

In addition to this, I could add a "warning" tooltip for things that people might still need, but have side-effects. This would be good for shared mode audio, DDR gold cab patches, etc.

"Not necessary" patches.... That is of course assuming that someone is using the latest spice2x, right? Does bemanitools patch all of those things for all games these days? If it takes you more than 20 seconds to look up that answer, and they don't cause any side-effects, does it really matter if people keep porting them forward?

That being said, another UI tweak that could work: patch categories. So we could group patches under "gameplay", "audio", "compatibility". Thoughts?

LupinThidr commented 9 months ago

Always assume the user is a complete fool, or mindlessly following a 3 years out of date guide that probably doesn't have crucial information about what shared mode WASAPI affects, other than "enable this if you want to hear discord sounds".

Skip monitor check seems to be for development convenience over playing. 60hz TDJ should be presented with a monitor error, though the game re-runs the monitor check a couple more times if it's under the allowed range so that might have led people to believe it was necessary. Older games have a patch that shortens it rather than skipping it, which is safer, but TDJ complicated a lot of the monitor check code so it's not directly portable. I didn't know there was a patch to force a value, I suppose that's what the poorly-named "Choose Fullscreen Monitor Check FPS Target" does. Though, I'm not skilled or knowledgeable enough to know if setting it to a flat 120.00 with a monitor check that's typically around 119.32 has any negative impact. A value input could work better instead of a dropdown, just needs a plain explanation to users. (and warn them not to lazily input 120.00)

Pfree in old SDVX games was always best done by external tools that write to memory (pfreepanic) instead of individual patches, so you don't get your game stuck in a loop and have to juggle dlls to play matching or events. I don't know about other games though, one of the key features of the spicetools patcher was being able to do this but it seems to be yet another overlooked feature (especially after SDVX officially got premium time).

I looked at the unnecessary patches and their tool support + dates:

It seems only volume is the recent one fixed by tools, everything else has been fixed for years. Patch categories could work. Maybe unnecessary ones could have their own category, too.

There's no risk for keeping the old patches around, but no benefit either. Other than a couple extra clicks for each new user and a little wasted time by people porting them by hand thinking they're still necessary, if they're even done by hand nowadays.

Though I still think bigger warnings should be added, a little orange tooltip is easier to ignore than a warning you're forced to read with 10 second delay. On a popular fork, people seem to even ignore big, red, bold text at the top of the page that specifically says "do not use SDVX PLUS patch unless you have SDVX PLUS"...

Gold cab patch should never be used, but it might be best to leave that can of worms alone... A scream test could have worked (replace the "type 6" patch with one that forces theme and golden league), but I've heard of players talking about new versions or gold mode feeling "better" despite no noticable timing changes (offsets were changed a bit 2017 apparently and windows have always been the same) so that might be those offset values at play. Or placebo :P

makoflagkk commented 9 months ago

So HDMI audio causes the latency. I guess I can change my audio settings then.. I just was troubleshooting a way to fix input lag. If anyone has a suggestions let me know. Thank you for explaining what causes the input lag. Now I will try to play it through a different audio output.

LupinThidr commented 9 months ago

https://github.com/spice2x/spice2x.github.io/wiki/PC-optimization https://github.com/spice2x/spice2x.github.io/wiki/Audio-modes-demystified worth checking out

mon commented 9 months ago

Would I be correct in thinking that most of your complaints stem from people asking for your help, only to find they have busted configurations? I wonder if there's value to a "ez troubleshooter" where someone can upload their DLLs and XMLs and it identifies common problems...

I will absolutely never implement any kind of timer delay to create a DLL. It's insulting to people who actually know wtf they're doing.

Thank you very much for investigating the versions that use HDD/audio fixes, as I'll be able to incorporate this into documentation.

Here's what I'm thinking as the actions based on this feedback: