在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:SteamDatabase/FileDetectionRuleSets开源软件地址:https://github.com/SteamDatabase/FileDetectionRuleSets开源编程语言:PHP 97.7%开源软件介绍:SteamDB File Detection Rule SetsThis is a set of scripts that are used by SteamDB to make educated guesses about the engine(s) & technology used to build various games. It makes educated guesses, but they are just that, guesses. You can browse the result of this here: https://steamdb.info/tech/ OverviewEvery app on Steam is associated with a number of file depots. For each app on Steam, SteamDB will run these scripts over all the filenames in all of its depots. Note that it is filenames, not files. These scripts only scan the names of the files, not the data they contain. Note that there are over 100 million files on SteamDB, so scanning filenames alone is already a pretty big task. These detections rely on SteamDB being able to access the file lists. Use SteamDB's token dumper program if you can to improve the coverage! Pattern-matching rules
The ini file defines multiple sections, each with its own sub-patterns:
Here's an example of some rule patterns:
This snippet defines a section named "Engine." On SteamDB pattern names are prefixed with the section name. So that becomes "Engine.AdobeAIR", "Engine.AdventureGameStudio", "Engine.XNA", and so on. Let's look at that first line which mentions AdobeAIR: Some things to note:
Engine means game/software engines. The definition for this is pretty fuzzy and invites endless debate but basically if it is a big library or toolkit that many people use to make games and software we call that an engine. Evidence are patterns that get fed to the script on a second pass to help identify things that weren't identified on the first pass. Container is a category to refer to things like Electron, a common wrapper for HTML5 games. This is because games that use Electron often have some other technology they're using that they would consider their actual engine, such as PixiJS, Phaser, OpenFL, Heaps, etc. Emulator is for identifying packed-in emulation technology. For instance, many DOS games come packaged with DOSBOX, and so we note those files with AntiCheat is for anti-cheat files like BattlEye, EasyAntiCheat, and PunkBuster. SDK are all other libraries and software development kits that an app might be using. How it worksA two-pass script runs over every file. On the first pass it tries to make a "slam dunk" identification based on a strong signal from any file. Engine patterns are primarily used here, looking for obvious things like Unity, Unreal, MonoGame, RPGMaker, XNA/FNA, AdobeAIR, etc. These game engines often have very clear signatures — ie "UnityEngine.dll". An "Engine" pattern should be strong enough to confidently match against a particular engine based on one single positive match against any file in the depot. Evidence patterns are meant for building up "hints" about what kind of engine or technology might be in use when a slam-dunk identification is not possible from a single pattern match. Once all the obvious tests have been made, if a particular app has no clear identification it will do a second pass in TestsIf you have PHP installed locally, you can run the tests from the root directory by typing ContributingSee CONTRIBUTING.md file. How SteamDB uses this informationSteamDB makes two sets of identifications — the technology the file likely represents, and the technology the app makes use of. Each file will match against at most one rule in a section. Therefore the order of the rules and the two-pass tests matters, but an app can have multiple rulings applied to it. It is even possible for an app to have multiple game engines — this happens when an app represents a multi-game compilation, or uses one technology for its launcher app and one for the game itself, or whatever. False negatives and positivesReport false classifications here It is inevitable when working at this scale that we will have both false negatives and false positives. False negatives are when a game is made with a certain technology and we fail to identify it as such. For many engines, there is nothing we can do about this because there simply isn't enough information left by the filenames alone to reliably detect them. Some engines leave no reliable trace of their identity whatsoever (particularly HTML5 game engines), others like GameMaker and Godot leave subtle patterns that allow us to make educated guesses, and others are super obvious. We try to err on the side of avoiding false positives, even if that causes us to have more false negatives. That said, this is all fuzzy at best and all we can do is try to select for the best tradeoffs. Don't expect this tool to be an omniscient oracle, it's operations are quite simple. Absence of evidence is not evidence of absenceSomething to emphasize is we are certainly undercounting engines/technology in three main ways:
For instance, the HaxeFlixel game engine likely represents a large percentage of Lime/OpenFL games on Steam. However, HaxeFlixel does not leave a particular signature that easily distinguishes games made with it from conventional Lime/OpenFL games. We can't even distinguish between games made in Lime (a low level framework) and games made in OpenFL (a high level framework based on Lime). This pattern likely repeats with many other game engines and technologies. So please note these limitations any time you use this data for anything important. One game can match multiple enginesSometimes games will include extra software like a level editor, a launcher, or configuration tool and that will be written in an engine other than what was used to build the game itself. Therefore it is not uncommon to find games that match multiple engines. The script is not able to disentangle this information, so an appid matching for multiple engines is simply saying that it found files matching the signatures of all of those engines within the depots associated with that appid. Nothing more, nothing less. For a practical example: The Witcher: Enhanced Edition contains a digital comic book that is displayed in a standalone app created with the Unity Engine. The game itself was written in the Aurora engine. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论