BS2: Detects games in wrong places
|Reported by:||fingolfin||Owned by:||bluegr|
|Cc:||Game:||Broken Sword 2|
The Broken Sword 2 engine's detector is not strict enough, making it very easy for a user to incorrectly "Add" BS2 with an incorrect path; more importantly, this screws the mass detector, as a single BS2 installation will result in multiple detected game instances, but only one of the config entries created this way will actually work... Moreover, it seems unable to distinguish full and demo versions.
As an example, consider this: I have a copy of BS2 installed, copied almost straight from CD; I did *not* put all files together into a single directory; rather, my BS sits in a directors "sword2", which has subdirs "CLUSTERS", "Smacks" and " Sword2" (which contains cd.inf). I can run BS2 quite fine this way.
Next to my "sword2" dir, I also have a "sword2demo" with a BS2 demo; this dir is "flat", having all files next to each other.
If I point the "mass detector" at the directory containing the "sword2" and "sword2demo" dirs, it will add the following *six* entries (each shown abbreviated): It detects the demo twice (once as demo, once as full version); it detects the files in "sword2" twice (once full, once demo); and it detects the files in "sword2/CLUSTERS" twice.
[sword2] gameid=sword2 path=/MY/PATH/Revolution/sword2demo
[sword2-1] gameid=sword2 path=/MY/PATH/Revolution/sword2
[sword2-2] gameid=sword2 path=/MY/PATH/Revolution/sword2/CLUSTERS
[sword2demo] gameid=sword2demo path=/MY/PATH/Revolution/sword2/CLUSTERS
[sword2demo-1] gameid=sword2demo path=/MY/PATH/Revolution/sword2demo
[sword2demo-2] gameid=sword2demo path=/MY/PATH/Revolution/sword2
Two things should be fixed:
1) We should correctly detect demo vs. non-demo. E.g. make an explicit list of all required files (*.clu and cd.inf, and...) for the full and the demo version. This wold also help detect incomplete installations. Or, add MD5 fingerprints of all files.
2) Don't incorrectly detect the "CLUSTERS" dir as a full game installation for people like me who just copy their CD's content straight. My particular example could be addressed by checking for the presence of cd.inf However, a more elaborate scheme may be necessary (in particular, the PSX version doesn't seem to need cd.inf).
We could also at the same time switch the engine to the advanced detector, but that might be overkill.
Ticket imported from: #3049336. Ticket imported from: bugs/5273.