GMSIdentify:GameMaker Studio バージョン識別ツール

Tool

概要

GMSIdentifyは、YoYo GamesのGameMaker Studio(GMS)で作成されたゲームのビルドバージョンを判別するためのツール兼データベースです。GMS2以降のバージョンでは、生成されるゲームデータにビルドに使用されたGMSのランタイムやツールのバージョン情報が含まれていません。これにより、ゲームの解析や改造時に使用されたGMSのバージョンを特定することが困難となっています。本プロジェクトは、その問題を解決し、合法的なリバースエンジニアリングやゲーム改造を支援するために開発されました。ただし、YYC(YoYo Compiler)やGMRT(GameMaker Runtime)でコンパイルされたゲームには対応していません。

GitHub

リポジトリの統計情報

  • スター数: 3
  • フォーク数: 0
  • ウォッチャー数: 3
  • コミット数: 2
  • ファイル数: 4
  • メインの言語: HTML

主な特徴

  • GMS2以降のゲームのビルドバージョン特定を支援するためのデータベースを提供
  • ゲームのVMファイル解析を通じてビルドバージョンを推定
  • YYCやGMRTでビルドされたゲームには非対応であることを明確に区別
  • 合法的なリバースエンジニアリングやゲーム改造への利用を目的としたオープンソースプロジェクト

技術的なポイント

GMSIdentifyは、GameMaker Studioで作成されたゲームのVM(仮想マシン)ファイルや関連データから、使用されたGMSのバージョンを推定する独自の解析手法を提供しています。GMS2以降では、ゲームにバンドルされるデータにビルド時のランタイムやツールバージョン情報が含まれていないため、これまでのように単純なバージョン番号の抽出が困難になりました。そこで本プロジェクトは、ゲームのバイナリや設定ファイルに含まれる微細な差異や特徴的なパターンをデータベース化し、それらを突き合わせることでビルドバージョンの特定を試みます。

具体的には、gmsidentify.jsというJavaScriptファイルがコアとなっており、VMファイルの解析ロジックを実装しています。このスクリプトは、HTMLベースのインターフェースから呼び出され、ユーザーは対象のゲームファイルをアップロードすることで解析を行えます。解析結果は、内部データベースのrunnerinfo_windows.csvと照合され、推定されるGMSのバージョン情報を提示します。

技術的には、バイナリの特定セクションに存在する命令列やメタデータの差異、例えば特定の命令コードの有無やシーケンス、ファイル構造の微妙な変化などを検出し、それらをバージョン固有の特徴として識別しています。これにより、単純なファイル情報だけでは判別できないビルド環境の識別を実現しています。

また、本プロジェクトはYYC(YoYo Compiler)やGMRT(GameMaker Runtime)でコンパイルされたゲームには対応していません。これらのビルド形式はVMファイルを使用しないため、解析方法が異なり現在のデータベースやスクリプトでは対応が困難だからです。この点はREADMEで明確に説明されており、利用者に誤解を与えない配慮がなされています。

さらに、GMSIdentifyはYoYo GamesやOpera Norway ASとは一切関係なく、公式のサポートを受けているわけではありません。あくまで合法的なリバースエンジニアリングやゲームの改造支援を目的とした自主的なコミュニティプロジェクトであることが強調されています。

このように、GMSIdentifyはゲーム解析に必要なビルドバージョン特定を、オープンソースの形で簡便に実現するためのツールを提供しており、GameMaker Studio製ゲームの解析や改造に関わる技術者や愛好家にとって有用なリソースとなっています。

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: プロジェクト概要や利用上の注意を記述したドキュメントファイル
  • gmsidentify.js: VM解析ロジックを実装したJavaScriptファイル
  • index.html: ユーザーがブラウザ上で解析を行うためのインターフェースファイル
  • runnerinfo_windows.csv: バージョン特有の特徴データを収録したCSV形式のデータベースファイル

まとめ

GameMaker Studio製ゲームのビルドバージョン特定を支援する実用的なツールです。

リポジトリ情報: