FileDetectionRuleSets icon indicating copy to clipboard operation
FileDetectionRuleSets copied to clipboard

Evochron Mercenary, false positive for Godot

Open akien-mga opened this issue 2 years ago • 8 comments

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 avatar Aug 09 '21 10:08 akien-mga

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).

akien-mga avatar Aug 09 '21 10:08 akien-mga

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.

larsiusprime avatar Aug 09 '21 19:08 larsiusprime

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 avatar Aug 11 '21 16:08 akien-mga

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/

akien-mga avatar Aug 11 '21 17:08 akien-mga

What about these files?

msvcp71.dll msvcr100.dll msvcr71.dll

larsiusprime avatar Aug 11 '21 18:08 larsiusprime

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

larsiusprime avatar Aug 11 '21 18:08 larsiusprime

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 avatar Aug 12 '21 06:08 akien-mga

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?

akien-mga avatar Nov 24 '21 12:11 akien-mga