Detecting GameMaker
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Lĩnh vực
- tooling
Hướng nghiên cứu
Start by reviewing the existing GameMaker detection entry points and how depot file lists are scanned; the issue does not name specific files or tests. Compare the listed false negatives and proposed markers, then define which detection signals to support and verify them against the example depots without introducing false positives.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.winfile 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.iniis not required for the game to run so some people would delete it
Suggestions:
game.unxandgame.iosare Linux/Mac versions ofdata.win- Furthermore, OSX builds will contain
libYoYoGamepad.dylibfor concrete results. runner(+x) +run.sh+lib/libsteam_api.so+assetsis a good tell of a GM Linux build that has not been customizedaudiogroup<index>.datare packages of audio files to be loaded on-demand and can be a good tell.
These are always labelled sequentially starting at 1, soaudiogroup1.dat,audiogroup2.dat, and so on.D3DX9_43.dllwithoutD3DCompiler_43.dllcan 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 adata.winfile embedded into the executable.

(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 versionsGOG.gml.dll: my GOG wrapperjoydll.dll+SDL.dll: a DLL for SDL-based gamepad supportGMS-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 whatdisplay_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 handfulcatch_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_fxfolder - 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.
- Ngôn ngữ chính
- PHP
- Star
- 234
- Fork
- 112
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của SteamDatabase/FileDetectionRuleSets
-
SQLiteĐang mởType: SDK
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
-
False positive
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
SteamDatabase/FileDetectionRuleSets#928 · 1 bình luận ·
-
Type: Engine
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
SteamDatabase/FileDetectionRuleSets#940 · 1 reaction ·
-
False negative
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 55/100
-
Messiah EngineĐang mởType: Engine
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
Tất cả issue của SteamDatabase/FileDetectionRuleSets
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
filamentphp/filament#20630 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
needs-maintainer-review review:approve
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Ultimate-Multisite/ultimate-ai-connector-compatible-endpoints#163 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100