EasyRPG / Player

RPG Maker 2000/2003 and EasyRPG games interpreter
https://easyrpg.org/player/
GNU General Public License v3.0
991 stars 186 forks source link

Should we create a game -> RPG_RT version database? #2299

Open fmatthew5876 opened 4 years ago

fmatthew5876 commented 4 years ago

Our auto detection logic does poorly on some games. Getting the version wrong can make a game completely unplayable. While it's easy to set a command line flag to fix the issue, this isn't really user friendly, especially for android. Most people won't even know about this, and just give up when the game doesn't work.

How far do we realistically we believe we can go with heuristic auto-detection? Is it worth continuing down this path, or should we just do it the brute force way?

One way out would be to maintain a game database. For example, we could hash the LDB or both the LDB/LMT and use that to identify versions. Then we maintain this is in a file and distribute that file with Player.

This can also be used to inform about custom patches.

It seems like creating this list would mostly be a one time activity, new games which use rm2k/3 will likely use the steam versions. It's the old games with all their quirks and custom patches that are hard to get right.

We may not need a full list either, only games which are problematic.

The format could be a simple csv:

Thoughts?

fdelapena commented 4 years ago

It could get the best of both worlds. This affects a reasonably small count, but lists are not future proof. The game list could be actually short, just for well known games which are well known to be problematic, but make not large and invasive heuristic changes for particular ones, but improve them when it is well known not affecting games.

This could be even mass tested to take better decisions, by running it on a game database, check bundled RPG_RT.exe sum, then compare with the expected detection like the executables weren't present. Changing heuristic strategy and run the test again and detect how much it broke/fixed in the game database, and so on.

RPG_RT check is obviously the most reliable way and reduces a large number of engine failure. There could be some kind of uncertain value where the engine heuristic is not powerful enough to let the interpreter decide in a flexible way when they appear, e.g. based on key input processing chunk sizes, but this approach is arguable.

The list could include amendments for bad encoding detection games, not just engine versioning.

Ghabry commented 4 years ago

This is a duplicate of #1210