mcpField
S
se-dev-game-code

se-dev-game-code

github.com/cometworks開発10126 回インストール4 日前に更新
リポジトリ

se-dev-game-code について

se-dev-game-codeは、Space Engineers version 1の逆コンパイル済みC#ソースとテキストデータを検索するスキルです。Mod、プラグイン、スクリプトの開発者がAPIや実装、バージョン間の差分を調べられます。

主な機能

  1. 01ゲームソースの逆コンパイル準備
  2. 02C#のクラスとメソッド検索
  3. 03クラス階層の確認
  4. 04ゲーム内テキストの検索
  5. 05ローカルGit履歴でのバージョン追跡
  6. 06ゲームファイルのハッシュ記録と検証

活用シーン

  1. 01プラグイン作成前のAPI検索
  2. 02パッチ作成前のメソッド実装確認
  3. 03ゲームバージョン間のソース比較
  4. 04コードが参照する定義ファイルの特定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cometworks/skills --skill se-dev-game-code

インストール後、Claude Code で/se-dev-game-codeを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.python-version
Advanced.md
check_index.py
check_version.py
Clean.bat
clean.sh
CodeSearch.md
CommandExecution.md
CommandExecutionDetails.md
common-posix.sh
ContentTypes.md
copy_content.py
Decompile.sh
DecompileDll.sh
DetectGameRoot.bat
fix_case_collisions.py
GameFileHashes.md
hash_game_files.py
hierarchy_tree.py
HierarchySearch.md
Implementation.md
index_code.py
index_content.py
Prepare.bat
Prepare.md
prepare.sh
actions/
bash.md
prepare.md
search.md
test.md

詳細

SE Dev Game Code スキル

Space Engineers バージョン 1 の逆コンパイル済み C# コードを読み取れます。

⚠️ 重要:コマンドは UNIX シェルで実行します。bash 構文を使用してください。Windows では BusyBox、Linux ではネイティブシェルを使用します。

例:

  • ✅ test -f file.txt && echo exists
  • ✅ ls -la | head -10
  • ❌ if exist file.txt (echo exists) - これは動作しません

アクション:

  • prepare:1 回限りの準備を実行します(Windows では Prepare.bat、Linux では prepare.sh)
  • bash:UNIX シェルコマンドを実行します(Windows では busybox、Linux ではネイティブシェル)
  • search:search_game_code.py を使ってコードを検索します
  • test:Windows では test_search_game_code.bat、Linux では test_search_game_code.sh を実行して、このスキルをテストします

ルーティングの決定

次のパターンを上から順に確認し、最初に一致したものを使用します。

優先度パターン例ルート
1空または引数なしの呼び出しse-dev-game-codeこのヘルプを表示
2準備キーワードse-dev-game-code prepare、se-dev-game-code setup、se-dev-game-code initprepare
3bash/シェルのキーワードse-dev-game-code bash、se-dev-game-code grep、se-dev-game-code catbash
4検索キーワードse-dev-game-code search、se-dev-game-code find class、se-dev-game-code lookupsearch
5テストキーワードse-dev-game-code test、se-dev-game-code verify、se-dev-game-code checktest

要件

ホストシステムの PATH に次のものが必要です。

  • Python 3.11 以降
  • git コマンドラインクライアント(逆コンパイル済みの各ゲームビルドをバージョン管理するために使用)
  • dotnet SDK(ilspycmd のインストールに使用)

はじめに

⚠️ 重要:コマンドを実行する前に、コマンドの失敗につながるよくあるミスを避けるため、CommandExecution.md を読んでください。

このフォルダーに Prepare.DONE ファイルがない場合は、最初に 1 回限りの準備手順を必ず実行してください。prepare アクションを参照してください。

フォルダー構成

準備が完了すると、スキルフォルダーに Data ジャンクション/シンボリックリンクが作成されます。実際のデータはスキルフォルダーの外に保存されるため、Clean.bat/Prepare.bat/prepare.sh の実行を繰り返しても保持されます。

skills/se-dev-game-code/
├── Data/                 (junction/symlink → per-user persistent game-code data)
│   ├── .git/             local Git repository tracking decompiled sources
│   ├── .gitignore        ignores CodeIndex/, graphify-out/, __pycache__, *.py[cod], *.bak, *.log
│   ├── game_version.txt  recorded SE_VERSION / CLIENT_BUILD_NUMBER / SERVER_BUILD_NUMBER
│   ├── game_files.json   SHA256 of every original game file (committed - diffable)
│   ├── Decompiled/       decompiled C# sources only, organised per assembly (committed)
│   ├── Content/          textual game content (committed - definition changes reviewable)
│   ├── CodeIndex/        CSV indexes (NOT committed - regenerated)
│   └── graphify-out/     Graphify graph of Decompiled/ (NOT committed - regenerated)
├── Bin64/                (junction/symlink → game's Bin64, removed after preparation)
└── ...                   skill scripts and documentation

Data フォルダーは、ユーザーごとの永続的なゲームコードデータディレクトリ(Windows では %USERPROFILE%\.se-dev\game-code、Linux では ~/.se-dev/game-code)へのジャンクション/シンボリックリンクです。Data/Decompiled、Data/Content、Data/CodeIndex は、これまでと同じように扱ってください。

Graphify グラフ

準備処理では、Data/Decompiled(または SE_DEV_GAME_CODE_GRAPH_ROOT)の下にある逆コンパイル済みゲームコード用に、別個の Graphify グラフを構築します。グラフはグラフ化されたツリーの隣にある Data/graphify-out(または SE_DEV_GAME_CODE_GRAPH_OUT)へ書き込まれるため、Data/Decompiled には逆コンパイル済み C# コードだけが格納されます。Prepare は、高速なネイティブ Rust Leiden クラスタリングバックエンドを備えた Python 3.12 に Graphify をインストールし、そのバックエンドを利用できる場合(uv が必要)は、グラフを自動的に約 1~2 分で構築します。高速バックエンドを用意できない場合は、低速なシングルコアのクラスタリング(約 10~30 分)にフォールバックし、SE_DEV_GRAPHIFY=1 を指定してオプトインする方式になります(最初にユーザーに確認してください)。SE_DEV_GRAPHIFY=0 を指定すると無効になります。以下の資料は必要に応じて参照してください。通常の検索作業では読み飛ばしてください。

ヘルスチェックとクエリのテスト(グラフが構築済みの場合にのみ意味があります):

bash ../se-dev/graphify-check.sh Data --deep   # is the graph usable?
./test_graphify_game_code.sh                # run a few graph queries

デコンパイルしたソースのローカルバージョン管理

Data フォルダーはローカル Git リポジトリです。準備が正常に完了するたびに、デコンパイルした C# ソースのコミットが作成されます。コミットメッセージにはゲームのバージョンラベルが使用されます(例:1.208.015 b4)。

つまり、次のことができます。

  • これまでにデコンパイルしたすべてのゲームバージョンがローカル Git の履歴に保存されます。Data/ 内で git checkout を実行すれば、過去のコミットをチェックアウトして、古いビルドを調査したり差分を確認したりできます。
  • **バイナリに埋め込まれたバージョン定数を Data/game_version.txt と比較して、ゲームの更新を自動検出します。**値が異なる場合(またはファイルがない場合)は、Decompiled/、Content/、CodeIndex/、graphify-out/、game_files.json が削除され、新たにデコンパイルが実行されます。
  • 新しいゲームリリースとの互換性を保つために、プラグイン、MOD、スクリプトを更新しやすくなります。Data/ 内の2つのコミット間で該当するソースの差分を確認すれば、変更箇所を正確に把握できます。

リポジトリでは内部用の作成者メールアドレス(se-dev-skills@localhost)を使用するため、グローバルな Git ID が設定されていないマシンでもコミットできます。

元のゲームファイルのハッシュ

準備中に、Space Engineers のインストール先にあるすべてのファイルの SHA256 も Data/game_files.json に記録されます(インストール先ルートからの相対パス → 小文字の 16 進数ダイジェストをアルファベット順に並べ、1行に1組ずつ記録)。このファイルはバージョンラベルを付けてコミットされます。

2つのバージョンコミット間で差分を確認すると、ゲーム更新によって変更されたバイナリを正確に特定できます。アセンブリでもテキストでもないアセットも含まれるため、Data/Decompiled と Data/Content のどちらにも現れないファイルも確認できます。

記録されたダイジェストを使って、./verify_game_files.sh(Linux)または .\VerifyGameFiles.bat(Windows)でインストール内容を検証できます。ファイル形式、差分の確認方法、検証結果については、GameFileHashes.md を参照してください。

必読のドキュメント

  • CommandExecution.md - ⚠️ 最初にお読みください - Windows でのコマンド実行の詳細。Linux では bash 構文を使い、prepare.sh を実行してください。

コード検索のドキュメント

  • QuickStart.md - その他の例とクイックリファレンス
  • CodeSearch.md - クラス、メソッド、フィールドなどを検索するための完全ガイド
  • HierarchySearch.md - クラス/インターフェースの継承関係や実装の検索
  • Advanced.md - 複雑な検索に役立つ上級者向けのテクニック
  • Troubleshooting.md - 検索結果が NO-MATCHES の場合や、多すぎる場合の対処方法
  • GameFileHashes.md - 元のゲームファイルの SHA256 ダイジェスト:形式、ゲームバージョン間の差分確認、インストール内容の検証
  • Implementation.md - スキルの貢献者向け技術情報(任意)

クイック検索の例

# Find class declarations
uv run search_game_code.py class declaration MyCubeBlock

# Find method signatures
uv run search_game_code.py method signature UpdateBeforeSimulation

# Find class hierarchy
uv run search_game_code.py class children MyTerminalBlock

# Count results before viewing (useful for large result sets)
uv run search_game_code.py class usage MyEntity --count

# Limit number of results
uv run search_game_code.py class usage MyEntity --limit 10

# Paginate through results
uv run search_game_code.py class usage MyEntity --limit 10 --offset 0
uv run search_game_code.py class usage MyEntity --limit 10 --offset 20

正確な API、メソッド本体、IL を確認する必要がある場合は、呼び出しやパッチを適用するコードを調べてください。システム全体の仕組みを把握するには、se-dev-game-book ハンドブックがインストールされている場合、まずそちらを読んでください。検索するよりも早く確認できます。ハンドブックがない場合は、このスキルがその用途にも役立ちます。

カスタムスクリプト

インデックスやデコンパイルしたコードを扱う独自のユーティリティスクリプトを作成する方法:

  • ScriptingGuide.md - Python スクリプトの作成方法、BusyBox の使い方、Windows パスの扱い方

ゲームコンテンツデータ

ゲームの Content のテキスト部分は、自由にテキスト検索できるよう Data/Content フォルダーにコピーされます。

  • 言語翻訳(文字列 ID を含む)
  • ブロックやその他のエンティティの定義
  • デフォルトのブループリントやシナリオ
  • コンテンツタイプの一覧は ContentTypes.md を参照してください
コンテンツ索引

Data/CodeIndex/content_index.csv は、各テキストコンテンツファイルと、そのファイルを参照する逆コンパイル済み C# ソースファイルとの対応を示します。列は rel_path(Data/Content/ からの相対パス)と usage(参照元の Data/Decompiled/ 内の C# ソースファイルのパス)です。各コンテンツファイルは参照元ごとに 1 行で記録されるため、rel_path でフィルターしてページを切り替えると、特定のコンテンツファイルを読み込む、または参照するすべての C# コードを確認できます。使用箇所が見つからないファイルは、usage 列が空の行が 1 行だけあります。

一般的なルール

  • Data/Decompiled フォルダーでは、通常は C# ソースファイル(.cs)のみを検索してください。トランスパイラーやプリローダーのパッチを作業する場合は、準備処理で生成されていれば IL コードファイル(.il)も検索してください(デフォルトでは無効です。DecompileDll.sh を参照)。
  • Data/Content フォルダーでは、作業に適したファイルを検索してください。種類の一覧は ContentTypes.md を参照してください。
  • Data/Decompiled フォルダーの外では、逆コンパイルされたゲームコードを検索しないでください。準備が成功していれば、逆コンパイルされたゲームソースツリーはこのフォルダーにあります。
  • Data/Content フォルダーの外では、ゲームコンテンツデータを検索しないでください。準備が成功していれば、コピーされたゲームコンテンツはこのフォルダーにあります。

アクションの参照先

詳細な手順は以下を参照してください。

備考

このスキルの元のソース:https://github.com/CometWorks/skills

コメント