Coder Social home page Coder Social logo

steamdatabase / filedetectionrulesets Goto Github PK

View Code? Open in Web Editor NEW
173.0 173.0 71.0 565 KB

🔎 Rules to detect game engines and other technologies based on Steam depot file lists

Home Page: https://steamdb.info/tech/

License: MIT License

PHP 97.04% JavaScript 2.22% Dockerfile 0.74%
automation hacktoberfest regex

filedetectionrulesets's Introduction

SteamDB.info

Welcome to the GitHub page for steamdb.info! This repo only serves as a public issue tracker.

For the actual code, see other repositories on our GitHub organization page.

Intro

This tool was made to give better insight into the applications and packages that Steam has in its database. We are not affiliated with Valve in any way. Apps and packages in the database will update the second Steam sends out the update to the Steam client.

FAQ and Contact

Check out our FAQ if you have any questions about SteamDB.

filedetectionrulesets's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

filedetectionrulesets's Issues

Detecting GameMaker

Currently there are plenty of false negatives for GM games, which is attributed to the following factors:

  • GMS1..GMS2.2 (or so) games compiled with YYC would embed data.win file into the executable as a resource instead of keeping it external.
  • snd_* naming convention is non-obligatory - mus_ is also common, as is camelCase/PascalCase. And some games might not have external audio at all! (it's a thing you tick a checkbox for on sounds)
    In a way I also personally made the matters worse due to releasing a tool that rewrites audio file paths and moves them to a sub-directory
  • GMS1 had an option to use a compressor (cabinet extractor IIRC) to pack everything into one large executable.
  • Pre-GMS1 games are hard to detect since there was always a single executable.
    Since almost all games would resort to using at least one DLL for specific features, collecting legacy DLL names from GMToolbox could help, but would take a while.
    Binary signature detection is also problematic.
  • options.ini is not required for the game to run so some people would delete it

Suggestions:

  • game.unx and game.ios are Linux/Mac versions of data.win
  • Furthermore, OSX builds will contain libYoYoGamepad.dylib for concrete results.
  • runner (+x) + run.sh + lib/libsteam_api.so + assets is a good tell of a GM Linux build that has not been customized
  • audiogroup<index>.dat are packages of audio files to be loaded on-demand and can be a good tell.
    These are always labelled sequentially starting at 1, so audiogroup1.dat, audiogroup2.dat, and so on.
  • D3DX9_43.dll without D3DCompiler_43.dll can be a good hint of GMS1 YYC game given presence of other evidence.
  • If you can afford to: see if the depot contains a single executable and try extracting it via 7z e that.exe.
    This would also fix some other false negatives with games that used self-extracting executables.
  • If you can afford to, scan the executable bytes for FORM <any 4 bytes> GEN8 - this is a tell of a data.win file embedded into the executable.
    image
    (pictured: Cavern Kings' executable)
  • Checking for GameMaker-specific DLLs could help:
    • CleanMem.dll: this thing.
    • Steamworks.gmk.dll: my Steamworks wrapper for pre-GMS1 GameMaker versions (as far as I can tell, adds a couple games)
    • Steamworks.gml.dll: my Steamworks helper for current GameMaker versions
    • GOG.gml.dll: my GOG wrapper
    • joydll.dll + SDL.dll: a DLL for SDL-based gamepad support
    • GMS-WinDev.dll: an ancient DLL of mine with Windows-specific curiosities.
    • Apollo.dll: my Lua wrapper. Might be worth combining with other evidence since the name is generic enough.
    • gmlive-server.exe: the local server from my live-coding extension. You are not supposed to ship it to the end user, but people sometimes forget.
    • geon_fx: a folder with bits from Geon FX particle editor. Similarly, you are not supposed to distribute it to the end user, but guess what
    • display_mouse_lock.dll: a native mouselock extension of mine.
    • window_set_cursor.dll: an extension for native cursors by me.
    • rousrDissonance.dll: a Discord Rich Presence wrapper extension.
    • window_frame.dll: an extension of mine that prevents the game from getting frozen in an event loop while resized... and causes a handful
    • catch_error.dll: an extension of mine that monkey-patches exception handling and crash reports into versions of GameMaker that didn't have those.

Some false-negatives:

  • Caveblazers: no .win, no options, camelCase sounds - needs .exe scan
  • Circuit Breakers: self-extracting executable on Windows, but Mac version is easily detectable
  • Witchinour: no .win, no sounds, but has display_mouse_lock.
  • Cavern Kings: self-extracting executable, no .win, music_-prefixed OGGs
  • Devolver Bootleg: no options, no sounds - needs .exe scan
  • Downwell: self-extracting executable
  • Duke of Defense: no options, no sounds, has rousrDissonance.dll
  • Ghost Croquet: no .win, custom sound names, Steamworks.gml.dll
  • Gun Done: also a self-extracting executable
  • Heat Signature: no .win, custom sound names - needs .exe scan
  • INK: a self-extracting executable
  • Last Horizon: a self-extracting executable, no .win, no options, custom sound names - needs .exe scan
  • Momodora III: no .win, no options, but has CleanMem.dll
  • Momodora RUtM: same author, same deal
  • Nidhogg 2: no .win, custom sound names, Steamworks.gml.dll, audio groups.
  • Nuclear Throne: no .win, custom sound names, a whole lot of my DLLs (because I extensively worked on this game)
  • Pilot Unknown: no options, no sounds, window_set_cursor.dll
  • Pixel Beef Battle: no options, no sounds, geon_fx folder
  • Prime Mover: no .win, no options, no sounds, window_set_cursor.dll
  • Samurai Gunn: no options, custom sound names, joydll.dll
  • ROFLNAUTS in Awesomenauts: the mini-game is made in GameMaker and spots joydll.dll... but what should SteamDB do if a game uses multiple engines as result?
  • Super Mutant Alien Assault: a self-extracting executable
  • Taco Gun: no options or sounds, but has audiogroup#.dat
  • Wild Glory: no .win or options, but has audiogroup#.dat.

Luck be a Landlord

SteamDB link to the game

https://steamdb.info/app/1404850

What should it be detected as?

Godot

Additional information

(Note: There's no box in the issue form to provide additional details when relevant, might be worth adding.)

Luck be a Landlord is made with Godot, but it's a tricky one to detect as it uses the "Embed PCK" option that embeds the .pck file with the game data inside the Godot executable (so it ships as a single .exe).

There's one way this can still be detected if we have access to the Mac files, as the .pck is included in the .app:

Luck be a Landlord.app/Contents/Resources/Luck be a Landlord.pck

There's no "Embed PCK" option for macOS exports, so for games which do provide a macOS build this should be a fairly good rule.

OGRE

Some reference to the engine, such as the developer site or a wikipedia article.

https://www.ogre3d.org/
https://en.wikipedia.org/wiki/OGRE

SteamDB links

https://steamdb.info/app/200710/
https://steamdb.info/app/288750/
https://steamdb.info/app/270150/
https://steamdb.info/app/910830/
https://steamdb.info/app/404680/
https://steamdb.info/app/233860/
https://steamdb.info/app/23460/
https://steamdb.info/app/215160/
https://steamdb.info/app/339570/

Possible way to detect it

Windows:
OgreMain.dll
OgreMain_x64.dll

Linux:
libOgreMain-1.6.5.so (https://steamdb.info/depot/339574/)
libOgreMain.so.1.7.2 (https://steamdb.info/depot/248453/)
libOgreMain.so.1 (https://steamdb.info/depot/200715/)

OS X:
Universal solution is not found. Some games have "Ogre.framework" folder:

Hotel - Collector's Edition.app/Contents/Frameworks/Ogre.framework
Book of Unwritten Tales.app/Contents/Frameworks/Ogre.framework
enemy.app/Contents/Frameworks/Ogre.framework

Other files that potentially could be checked:

Torchlight2.app/Contents/Frameworks/libOgre.1.dylib
enemy.app/Contents/Resources/libOgreNewt.dylib
Hotel - Collector's Edition.app/Contents/Resources/lib/python2.5/lib-dynload/ogremac/renderer/OGRE/_ogre_.so

Suggested rules:

Ogre[] = (?:^|/)OgreMain(?:_x64)?\.dll$
Ogre[] = (?:^|/)libOgreMain
Ogre[] = (?:^|/)Ogre.framework$

HaemimontSol

Some reference to the engine, such as the developer site or a wikipedia article.

The Sol engine is the in-house engine of Haemimont Games (https://en.wikipedia.org/wiki/Haemimont_Games). It has been in constant development since 2005, and has about 10 titles on Steam, with more on the way.

https://steamdb.info/search/?a=app_keynames&type=1&keyname=23&operator=3&keyvalue=Haemimont+Games

(Note: some of the older titles like Tzar and Rising Kingdoms are based on an earlier engine, not Sol)

SteamDB links

Surviving Mars: https://steamdb.info/app/464920/
Victor Vran: https://steamdb.info/app/345180/

Possible way to detect it

A folder called Packs/ contains multiple *.hpk files in it.
A folder called Local/ contains more *.hpk files, and all games so far have English.hpk (the default localization, English)

Photon networking

Some reference to the SDK, such as the developer site or a wikipedia article.

https://www.photonengine.com/
used in many popular games for networking/multiplayer

SteamDB links

https://steamdb.info/app/1124300/
https://steamdb.info/app/761890/
https://steamdb.info/app/794260/
https://steamdb.info/app/471710/
https://steamdb.info/app/1557740/
https://steamdb.info/app/823130/subs/

Possible way to detect it

Photon3Unity3D.dll
Photon3DotNet.dll
PhotonLoadbalancingApi.dll
PhotonRealtime.dll
PhotonChat.dll
PhotonUnityNetworking.dll
PhotonUnityNetworking.Utilities.dll

my brother lives in a canyon

SteamDB link to the game

https://steamdb.info/app/1641020/

What should it be detected as?

Godot

Additional information

Both Windows and Linux depots look like they should match Godot fine. It's a recent release so maybe it's just a matter of not having had a token for it at the time of the last analysis?

NetEase NeoX

Some reference to the engine, such as the developer site or a wikipedia article.

NetEase Proprietary Engine.

Only mentioned in passing describing EVE Echoes in press releases.

https://www.neteasegames.com/news/game/20191113/30576_848390.html
https://www.neteasegames.com/news/game/20190807/30576_826962.html

SteamDB links

Possible way to detect it

any of (optionally)

  • npk.dll
  • nxmalloc.dll
  • nxapp.dll
  • nxasset.dll
  • nxcore.dll

always has at least one file that has an .npk extension.

The Albino Hunter wrongly detected as ChromeEngine

SteamDB link to the game

https://steamdb.info/app/355520/

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

It's a RPG Maker game. Currently detected as both RPG Maker and ChromeEngine.

The rest of the games on the ChromeEngine list look correct. There are plenty more games using this engine but they are not available on Steam. I checked the SteamDB engine list against the list on Wikipedia and searched for all titles on Steam.

Side note: the upcoming Dying Light 2 Stay Human (release date December 7) is using ChromeEngine 7, no depot files yet so it can't be detected at the moment.

Infinity Engine games are being detected as Aurora

Rewired for Unity

Some reference to the SDK, such as the developer site or a wikipedia article.

https://guavaman.com/projects/rewired/
https://assetstore.unity.com/packages/tools/utilities/rewired-21676

SteamDB links

https://steamdb.info/app/632360/
https://steamdb.info/app/900270/
https://steamdb.info/app/1393420/

Possible way to detect it

  • Usually a .dll resides in a sub-folder of Unity game, like Managed\, Plugins\, Plugins\x86, Plugins\x86_64\ etc.
  • Can contain one or several files with names:
Rewired_Core.dll
Rewired_CSharp.dll
Rewired_DirectInput.dll
Rewired_Linux.dll
Rewired_OSX.dll
Rewired_Windows.dll
Rewired_Windows_Lib.dll

Engine: orx

Some reference to the engine, such as the developer site or a wikipedia article.

Orx is an open source (zlib license), heavily data-driven, lightweight, cross-platform 2D game engine written in C.
It currently supports Windows, Linux, MacOS, iOS and Android.

Home page: https://orx-project.org
Github repository: https://github.com/orx/orx
Wikipedia page: https://en.wikipedia.org/wiki/ORX

SteamDB links

As far as I know, so far there's only a single game made with orx that has been published on Steam (I was part of the dev team):

https://steamdb.info/app/352210/

Possible way to detect it

The engine is always contained inside a single file. Its name depends on the target platform:

  • orx.dll on Windows
  • liborx.so on Linux
  • liborx.dylib on MacOS

Evochron Mercenary

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?

It's being detected as a godot game. So far i haven't found anything hinting to that.
Also, the game was released in 2012 and godot's source code was released in 2014.

As a rule of thumb, any game from before 2014 wasn't made with godot unless it was made released by godot's developers (ir wasn't commercialized back then)

Village of Adventurers 2

SteamDB link to the game

https://steamdb.info/app/727090/info/

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

Detected as Godot, but it very likely isn't. I don't have the game to confirm but the file structure doesn't look too common for Godot, and the executable is too small.
https://steamdb.info/depot/727091/

Similar to #22 - based on the file names only, this could be Godot, albeit with a fairly rare use of it, especially for the data.pck (pre 3.0) era.

I'd suggest changing the heuristic so that data.pck + multiple other .pcks no longer match as Godot. There's only a handful of Godot games released on Steam with versions earlier than 3.0 (2018), and I doubt many of them use multiple PCKs.

Edit: If we can get a list of all entries with data.pck + multiple other .pcks, I'm happy to go through it and check if anything sounds like it might really be Godot. Otherwise we can use this exclude rule.

Other possibility: Check .exe file size. Current Windows 64-bit exe files for Godot are bigger than 30 MiB. Might have been closer to 20 MiB in the Godot 2.x era, but 4 MiB like here is definitely not possible.

Broken Age

SteamDB link to the game

https://steamdb.info/app/232790/

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

Detected as Godot, but it's Moai. Probably can't detect this engine reliablely, but it probably doesn't matter since there's so few games using it.

Other games (only?) on steam that use Moai from the wikipedia page:

Engine: 3D Gamestudio aka Gamestudio A8

Some reference to the engine, such as the developer site or a wikipedia article.

3D Gamestudio, oftentimes only referred to as Gamestudio, is a very old school toolset (engine + editors) which some people used before Unity was a thing. It might be referred to as A8 as well, short for Acknex 8 (rolls right of the tongue, right?).

Super old school homepage: http://www.conitec.net/english/gstudio/index.PHP
Manual and API reference: http://manual.3dgamestudio.net/

It's a Windows only 32bit DirectX 9.0c engine. It's hell to work with.

SteamDB links

(My game: ) https://steamdb.info/app/688130/

https://steamdb.info/app/724390/

https://steamdb.info/app/34900/

https://steamdb.info/app/259640/

https://steamdb.info/app/280640/

Some of those are made with previous iterations of Gamestudio (A4 through A8) but they all contain the same base data.

Possible way to detect it

The engine DLL acknex.dll should be included in pretty much every game made with this toolset.
*.wrs container files are present if the game creator owns the Pro version of the engine.
A file called acknex.wdf, a starter window definition, might be present, as well as d3dx9_42.dll and/ or d3dx9_32.dll and d3dx9_30.dll files. Furthermore, d3dcompiler_42.dll might be included in most games.

Torque

Some reference to the engine, such as the developer site or a wikipedia article.

https://en.wikipedia.org/wiki/Torque_(game_engine)

SteamDB links

https://steamdb.info/app/284160/
https://steamdb.info/app/250340/
https://steamdb.info/app/375810/
https://steamdb.info/app/18700/
https://steamdb.info/app/98200/

Possible way to detect it

  • main.cs in the root directory
  • *.cs.dso/*.gui.dso
  • *.t2d/*.t2d.dso

None of these are guaranteed to be in all Torque games; for instance:

  • BeamNG.drive (284160) only has main.cs (and I believe is the only sign of Torque going by filenames alone)
  • Blockland (250340) embeds main.cs in the exectuable (to be fair, the developer went out of his way to do so)
  • .t2d is exclusive to Torque 2D (formerly Torque Game Builder)
  • In some cases, there are no .dso files and instead only uncompiled .cs and .gui files. Unsure if there are any Steam games that do this.

*.cs.dso/*.gui.dso and main.cs should otherwise appear in most games.

Detect nw.js

Some reference to the SDK, such as the developer site or a wikipedia article.

https://nwjs.io/

SteamDB links

This is the only one I'm aware of (my own project). It's very similar to Electron, but less popular.

https://steamdb.info/app/853450/

Possible way to detect it

I believe these would be some good candidates to detect nw.js:

In the top-level directory:
icudtl.dat
node.dll
nw.dll
nw_100_percent.pak
nw_200_percent.pak
nw_elf.dll
nwjc.exe
payload.exe
pnacl (folder)
resources.pak

Many games after recent Godot changes

SteamDB link to the game

From pastebin that @larsiusprime sent me, all these have wrongly been removed from matching Godot. They have a pattern that we can properly match.

App 1041180 - Removed Engine.Godot
App 1269540 - Removed Engine.Godot
App 1389030 - Removed Engine.Godot
App 1412500 - Removed Engine.Godot
App 1429120 - Removed Engine.Godot
App 1507970 - Removed Engine.Godot
App 1539630 - Removed Engine.Godot
App 1561390 - Removed Engine.Godot
App 1660050 - Removed Engine.Godot
App 1684810 - Removed Engine.Godot
App 388490 - Removed Engine.Godot
App 498310 - Removed Engine.Godot
App 863330 - Removed Engine.Godot

What should it be detected as?

Godot

Wrong games on CRYENGINE. 👍

SteamDB link to the game

https://steamdb.info/app/373420/ - Divinity: Original Sin Enhanced Edition
https://steamdb.info/app/435150/ - Divinity: Original Sin 2
https://steamdb.info/app/1086940/ - Baldur's Gate 3
https://steamdb.info/app/230230/ - Divinity: Original Sin (Classic)

https://steamdb.info/depot/736221/ - Post Scriptum
https://steamdb.info/app/844630/ - Post Scriptum - BETA
https://steamdb.info/app/746200/ - Post Scriptum Dedicated Server
https://steamdb.info/app/844650/ - Post Scriptum - Beta Dedicated Server
https://steamdb.info/app/728540/ - Islands of Nyne: Battle Royale
https://steamdb.info/app/310380/ - Fractured Space
https://steamdb.info/app/427100/ - Fernbus Simulator
https://steamdb.info/app/491541/ - The Bus
https://steamdb.info/app/953580/ - Tourist Bus Simulator

https://steamdb.info/app/924810/ - Idle Kingdom Builder

https://steamdb.info/app/1057240/ - Crucible
https://steamdb.info/app/583240/ - Coffence
https://steamdb.info/app/613580/ - The DRG Initiative
https://steamdb.info/app/949520/ - Lost On The Island
https://steamdb.info/app/1426320/ - New World Alpha

https://steamdb.info/app/256030/ - Heretic Kingdoms: Devourer

https://steamdb.info/app/366530/ - Esenthel Engine
https://steamdb.info/app/218640/ - Lucius
https://steamdb.info/app/366810 - Dungeon Hero
https://steamdb.info/app/510000/ - Xecryst Remains

https://steamdb.info/app/955840/ - Slide to finish

https://steamdb.info/app/291480/ - Warface

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

Custom in-house engine.
It is being reported as CRYENGINE.

Unreal Engine games being reported as CRYENGINE.

Unity being reported as CRYENGINE.

Lumberyard being reported as CRYENGINE.

It is using OGRE3D.
If you look on the depot, you will notice:

OggressEngine.dll
ogremain.dll
OgreMeshLodGenerator.dll
OgreOverlay.dll

  • Lucius is made using the Esenthel engine, whose logo you can see when loading up the game.
    I believe the other games (Lucius II and Lucius III) switched to Unity.

  • Esenthel Engine is the engine used on Lucius. :P

  • Dungeon Hero was developed by the Esenthel engine developer.

I don't know what that is, probably something custom.

Warface is CRYENGINE.

Add Blender Game Engine (UPBGE)

Some reference to the engine, such as the developer site or a wikipedia article.

Link: UPBGE Website

UPBGE is an open-source, 3D game engine forked from the old Blender Game Engine and deployed with Blender itself. This unified workflow is its main strength, as you can make your game from start to finish without leaving Blender.

SteamDB links

https://steamdb.info/app/814590/
https://steamdb.info/app/324240/
https://steamdb.info/app/499460/
https://steamdb.info/app/788890/
https://steamdb.info/app/1324560/
https://steamdb.info/app/1375640/

Possible way to detect it

It's very simple to detect blender game engine (upbge) games: The way the engine works is by running a player, called "blenderplayer.exe". Most of the games will have this player located somewhere (99,9% of the time is in the root folder where you launch the game.

Some rare projects (like I will escape, in the SteamDB link) will rename or "encapsulate" this player into other files (it's not the engine default, btw), but when they do this, the source files are easily recognizable by the extension ".blend" (blender files).

Another very obvious hint (that may be a bit hard to track) is that there is a folder names by the version of the blender used to make the game in the root directory (with the blenderplayer):

  • /2.72/
  • ...
  • /2.78/
  • /2.79/
  • /3.0/ (new Blender/UPBGE)

It may be a bit hard to track this folder name because it's dependent on the engine's version. But inside the folder we'll have at least a /python/ and a /datafiles/ subfolder. We may have more, but those two are guaranteed to be in there.

Some developers may also include the debug blender.exp, blender.lib, blenderplayer.exp, blenderplayer.lib files.

TLDR:
If there is a file called "blenderplayer" (or upbgeplayer, they'll rename it to this soon), it's a BGE/UPBGE game 100%. If not but the're is a folder containing some version number (like 2.79 or 3.0) and some .blend files, it's a BGE/UPBGE game.

Gamedec - EOS

SteamDB link to the game

https://steamdb.info/app/917720

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

EOS is being detected, when the developers themselves have confirmed using separate builds for different platforms, having removed unneeded SDK's unnecessary for the related platform. In this case, the EOS SDK is only used for the Epic build, and not on Steam.
https://steamcommunity.com/app/917720/discussions/0/4615641262430689175/#c4615641483008049994

Fix detection of Construct games

SteamDB link to the game

n/a

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

Thanks for your work reviewing engines used on Steam!

Construct comes up as the 5th most popular engine on the engines list, but it looks like the detection merely comes down to this code:

		//If I have a package.nw file and it matches nodeJS, it's probably Construct
		if( $has( 'Evidence.PACKAGE_NW' ) && $has( 'SDK.NodeJS' ) )
		{
			return 'Engine.Construct';
		}

This won't be accurate: it will produce both false negatives and false positives. In particular not all Construct games even have a file named package.nw - this is optional in Construct.

An accurate way to detect Construct games is to look for a file named either c2runtime.js or c3runtime.js, in the main files (including searching in subfolders) OR inside package.nw (as Construct supports exporting with either packaged or unpackaged assets). The package.nw file is just a zip file, so it can be searched or extracted like any old zip file in order to look for the tell-tale files c2runtime.js/c3runtime.js (which again should include searching in subfolders).

So to be clear there are four cases that indicate a Construct game:

  • c2runtime.js anywhere in main files
  • c3runtime.js anywhere in main files
  • c2runtime.js anywhere inside a zip file named package.nw
  • c3runtime.js anywhere inside a zip file named package.nw

You can ignore any other signals, this alone should be reliable enough to identify Construct games. I think implementing this will produce a significantly different number for Construct... but I'm not sure whether it will be higher or lower! It would be interesting to see.

Greenworks SDK

Some reference to the SDK, such as the developer site or a wikipedia article.

Greenworks Github Page

SteamDB links

There are many other Steam Applications that use it that are listed on the github repo wiki;
https://github.com/greenheartgames/greenworks/wiki/Apps-games-using-greenworks

Possible way to detect it

Requires a native node.js module, usually found in a lib folder but the filename should be similar to the following regex expression;

greenworks\-(win|osx|linux)(32|64|)\.node$

Some files that are included with a Windows 64-bit release would be;

- greenworks.js
- lib/greenworks-win64.node

Evochron Mercenary, false positive for Godot

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

Clickteam Fusion 2.5

Some reference to the engine, such as the developer site or a wikipedia article.

Hi, I'm a moderator of the Clickteam community, I noticed that Clickteam Fusion never appears anywhere on Steam, meaning its apps/games aren't detected in any way.
I really would like to see it getting a bit more attention since there are amazing games made with it that people have no idea about it.
So if I can provide anything to help identifying Fusion games, I will be glad to help!

SteamDB links

https://steamdb.info/app/251130/
https://steamdb.info/app/252010/
https://steamdb.info/app/319480/
https://steamdb.info/app/298630/
https://steamdb.info/app/248310/
https://steamdb.info/app/1151620/
https://steamdb.info/app/736260/
https://steamdb.info/app/601810/
https://steamdb.info/app/350070/
https://steamdb.info/app/274270/
https://steamdb.info/app/207530/
https://steamdb.info/app/315610/
https://steamdb.info/app/319510/
https://steamdb.info/app/332800/
https://steamdb.info/app/354140/
https://steamdb.info/app/506610/
https://steamdb.info/app/237740/
https://steamdb.info/app/777670/

Possible way to detect it

I now you guys currently only operate in filenames, but unfortunately Fusion games are usually a single EXE, so I really hope you guys could make a exception to detect it.

For starters there's 3 kinds of Fusion games (well, if you don't count Multimedia Fusion 2 games)

  • Packed EXE
  • Unpacked EXE
  • Chowdren exported

The Packed EXE is the default one, it has a mmfs2.dll inside of the EXE.
(Probably Multimedia Fusion 2.0 games/apps will also have this same DLL inside)

The Unpacked EXE has a dat file with the same name as the exe and a "modules" folder, this folder can have different names, but it will always have the mmfs2.dll inside.

Chowdren exported is a bit different, I don't know much of it since it's a paid conversion, but it usually has a Assets.dat and a data folder...

Lumberyard not being detected (or being detected as CryEngine)

Some reference to the engine, such as the developer site or a wikipedia article.

Amazon developed a variant of CryEngine called Lumberyard:

SteamDB links

https://steamdb.info/app/1057240/
https://steamdb.info/app/1426320/
https://steamdb.info/app/583240/

Possible way to detect it

engine.json file contains which might be useful:

{
    "FileVersion": 1,
    "LumberyardVersion": "1.17.0.0",
    "LumberyardCopyrightYear": 2018
}

Godot games with multiple PCK files

SteamDB link to the game

https://steamdb.info/app/498310/info/
https://steamdb.info/app/1079290/info/

What should it be detected as?

Godot

Additional information

These should be detected as Godot, but we currently exclude these knowingly as we fear a high number of false positives due to old games using .pck extensions for their multiple asset packs (data.pck, sounds.pck, etc.).

I do think that after the last few days' improvements to the Godot heuristics, we should be able to include them provided that they pass the other Godot 3.0+ criteria, i.e. there must be a mygame.pck that matches mygame.exe, mygame.x86_64, mygame.x86 or mygame.

I don't think that there is any pre-Godot 3.0 game using multiple PCKs, so it should be OK to keep excluding data.pck + other PCKs, as this is the case that would lead to most false positives.

Before pushing a potential fix for this, I would recommend sharing a list of what would be the new additions, so that I can review it and ensure that there aren't any false negatives.

IW (Call of Duty) Engine

Some reference to the engine, such as the developer site or a wikipedia article.

https://en.wikipedia.org/wiki/IW_(game_engine)

SteamDB links

https://steamdb.info/app/2630/
https://steamdb.info/app/7940/
https://steamdb.info/app/209650/
https://steamdb.info/app/393080/
https://steamdb.info/app/209160/

Possible way to detect it

Call of Duty uses "fast files" to store game data, so a regex looking for 'ff' is useful, so is 'iwd'. All games seem to also have a "main" and "zone" folder at root level. I don't have all COD games and my regex is not great but I'm guessing something like this will capture most of them

iwengine[] = .ff$
iwengine[] = .iwd$
iwengine[] = (?:^|/)main.
iwengine[] = (?:^|/)zone.

Unity's high definition render pipeline (HDRP)

Some reference to the SDK, such as the developer site or a wikipedia article.

HDRP is a new render pipeline from unity capable of high-end AA+ graphics built into the engine. It's fairly new, and is in many ways a different thing than the usual +20k games made in unity.

It's a major choice made at the start of a game's development, and is extremely hard and sometimes relatively impossible to switch to after heavy production. You can think of it as a different graphics engine within unity. Would be really interesting to have this on there. It's now starting to get more game releases, and it will increase dramatically in the next year.

https://docs.unity3d.com/Packages/[email protected]/manual/index.html

IMPORTANT: Some unity games use IL2CPP to compile, leading to C++ source code. To find the .dll files, you'd need to search through the meta data or dump game assembly.dll, which I did and confirmed all games in here I listed are using HDRP. I'm just not sure steamDB can do the same thing. But even if it can't, this is still worth it.

SteamDB links

https://steamdb.info/app/1190000/
https://steamdb.info/app/1466640/
https://steamdb.info/app/1213740/
https://steamdb.info/app/1161580/
https://steamdb.info/app/1078760/

Possible way to detect it

Unity.RenderPipelines.HighDefinition.Config.Runtime.dll
Unity.RenderPipelines.HighDefinition.Runtime.dll

These two are only included if HDRP is the render pipeline being used. There can only be one render pipeline.

Swordsman

SteamDB link to the game

https://steamdb.info/app/364110/depots/

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

Detected as Godot, but doesn't seem to be. According to https://www.arcgames.com/en/arc-news/detail/3037993-announcing-swordsman the engine used was called "Angelica III" (in house?).

Additional information

That's another tricky one as it's not detected as something else and falls back on this rule for Godot:

package/data.pck

https://steamdb.info/depot/364113/

Similarly to #30, there's a huge amount of files which are not idiomatic at all for Godot games, though it might not be easy to define which exactly can safely be used to exclude Godot.

However, the data.pck is not placed next to the game executable, which can be a way to exclude this from the Godot rule set.

Godot pre 3.0 (3.0 mandates that the .pck has the same basename as the executable) looks for a data.pck in the same folder as the executable, or recursively in parent folders, so that this structure can still be a valid Godot game:

bin/mygame.exe
data.pck

But it doesn't look for data.pck in subfolders, so this structure can't work out of the box:

mygame.exe
package/data.pck

It can theoretically work as one can specify the path to the PCK on the command line (in Godot 3.0+ that would be mygame.exe --main-pack path/to/file.pck), but that's not really something that games would commonly rely on for their distribution (and it would require either a custom Steam run command, or a shell or batch script).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.