SteamDatabase / FileDetectionRuleSets

🔎 Rules to detect game engines and other technologies based on Steam depot file lists
https://steamdb.info/tech/
MIT License
186 stars 77 forks source link

Evochron Mercenary, false positive for Godot #30

Open akien-mga opened 3 years ago

akien-mga commented 3 years ago

SteamDB link to the game

https://steamdb.info/app/71000/

What is it being detected as and what should it be detected as? Any other information?

Detected as Godot, but it doesn't seem to be. Don't know what's the actual engine, might be in house.

Additional information

Windows depot: https://steamdb.info/depot/71001/

It matches the Godot rules as it has .exe and .pck with the same basename, which is indeed the main signature of Godot 3.0+ games:

EvochronMercenary.exe
EvochronMercenary.pck

But Evochron Mercenary was released in 2012, so 2 years before Godot's first open source release, and most importantly 6 years before Godot 3.0 which uses the ".pck with same basename as .exe" logic (previous releases required a main .pck named data.pck).

There's also a ton of other files which are not relevant for Godot, such as DirectX installer and MSVC redistributable DLLs. It's hard to say 100% that this could never match a Godot game as with a custom build and a custom-developed DirectX renderer one could get a distribution like this if one wanted to... but it's extremely unlikely.

If one can access the release date, the Godot rule could exclude games released before February 2014 (or possibly a few months later if needed - the first game released on Steam might be the Dog Mendonça demo: https://steamdb.info/app/330800/).

akien-mga commented 3 years ago

If one can access the release date, the Godot rule could exclude games released before February 2014 (or possibly a few months later if needed - the first game released on Steam might be the Dog Mendonça demo: steamdb.info/app/330800).

Worth noting: Original release date might not be a 100% accurate factor either as some games might have had a Godot port in a later update (that seems to be the case for e.g. https://steamdb.info/app/579230/ which has a Windows version using Godot and macOS/Linux versions still using Unity, i.e. not updated).

larsiusprime commented 3 years ago

This is a good catch and will be a false positive after the Godot PR goes through.

But Evochron Mercenary was released in 2012, so 2 years before Godot's first open source release, and most importantly 6 years before Godot 3.0 which uses the ".pck with same basename as .exe" logic (previous releases required a main .pck named data.pck).

I think release date checking is out of scope for SteamDB. You also rightly note that release dates are hard to rely on because of stealth updates.

There's also a ton of other files which are not relevant for Godot, such as DirectX installer and MSVC redistributable DLLs. It's hard to say 100% that this could never match a Godot game as with a custom build and a custom-developed DirectX renderer one could get a distribution like this if one wanted to... but it's extremely unlikely.

I think this is the better way to go. Look at all the Godot false positives for this pattern and throw in some easy rule-out evidence patterns we can check.

akien-mga commented 3 years ago

So I've been thinking about how to exclude this false positive (which is a bit annoying as it's the most "followed" "Godot" game so far on https://steamdb.info/tech/Engine/Godot/ :)).

We could exclude based on stuff like DirectX installers (e.g. DXSETUP.exe), but there's the risk of excluding games which might start with a DirectX engine, and get ported to Godot later. I've seen a number of Godot games with VCRedist depots which made me thought they wouldn't be Godot projects, but then it turned out that e.g. the Windows version had been ported to Godot. (And the VCRedist depots would just be leftovers from previous distributions.)

So... this might be worth a try.

At the same time, this is so specific that it might be just as well if we could have an exclusion list where we can specify that app ID 71000 should not match Godot. Would that be an option?

akien-mga commented 3 years ago

We could exclude based on stuff like DirectX installers (e.g. DXSETUP.exe), but there's the risk of excluding games which might start with a DirectX engine, and get ported to Godot later. I've seen a number of Godot games with VCRedist depots which made me thought they wouldn't be Godot projects, but then it turned out that e.g. the Windows version had been ported to Godot. (And the VCRedist depots would just be leftovers from previous distributions.)

Just found a Godot game with a DirectX install depot for some obscure reason: https://steamdb.info/app/1189230/depots/

larsiusprime commented 3 years ago

What about these files?

msvcp71.dll msvcr100.dll msvcr71.dll

larsiusprime commented 3 years ago

In general we are willing to accept false negatives if it avoids false positives. So I'm willing to trade a lost ID for not making a bad one, so let me know if you find any of the msv files, otherwise I'll go off of DXSETUP.exe

akien-mga commented 3 years ago

I think it's the same for DXSETUP.exe or msvc.dll, if the game was ported from another engine but old files have been left lying around, both are likely to be there. msvc.dll might be a valid scenario for a Godot game using a GDNative plugin that was compiled and linked statically against MSVC's DLLs though, so I'd go with DXSETUP.exe instead.

Or EvochronMercenary.pck, because it's the only false positive I see now ;)

akien-mga commented 2 years ago

I've just went through all Godot titles currently detected by SteamDB, and Evochron Mercenary is the only false positive I could fine.

Is it really not an option to simply exclude Evochron Mercenary's ID from the Godot detection heuristics?