se-dev-game-code について
se-dev-game-codeは、Space Engineers version 1の逆コンパイル済みC#ソースとテキストデータを検索するスキルです。Mod、プラグイン、スクリプトの開発者がAPIや実装、バージョン間の差分を調べられます。
主な機能
- 01ゲームソースの逆コンパイル準備
- 02C#のクラスとメソッド検索
- 03クラス階層の確認
- 04ゲーム内テキストの検索
- 05ローカルGit履歴でのバージョン追跡
- 06ゲームファイルのハッシュ記録と検証
活用シーン
- 01プラグイン作成前のAPI検索
- 02パッチ作成前のメソッド実装確認
- 03ゲームバージョン間のソース比較
- 04コードが参照する定義ファイルの特定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cometworks/ skills --skill se-dev-game-codeインストール後、Claude Code で/se-dev-game-codeを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.python-versionAdvanced.mdcheck_index.pycheck_version.pyClean.batclean.shCodeSearch.mdCommandExecution.mdCommandExecutionDetails.mdcommon-posix.shContentTypes.mdcopy_content.pyDecompile.shDecompileDll.shDetectGameRoot.batfix_case_collisions.pyGameFileHashes.mdhash_game_files.pyhierarchy_tree.pyHierarchySearch.mdImplementation.mdindex_code.pyindex_content.pyPrepare.batPrepare.mdprepare.shactions/bash.mdprepare.mdsearch.mdtest.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 init | prepare |
| 3 | bash/シェルのキーワード | se-dev-game-code bash、se-dev-game-code grep、se-dev-game-code cat | bash |
| 4 | 検索キーワード | se-dev-game-code search、se-dev-game-code find class、se-dev-game-code lookup | search |
| 5 | テストキーワード | se-dev-game-code test、se-dev-game-code verify、se-dev-game-code check | test |
要件
ホストシステムの 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 を指定すると無効になります。以下の資料は必要に応じて参照してください。通常の検索作業では読み飛ばしてください。
- 構築/ヘルスチェック/再構築:GraphifyPrepare.md
- 既存のグラフへのクエリ:GraphifyUsage.md
ヘルスチェックとクエリのテスト(グラフが構築済みの場合にのみ意味があります):
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フォルダーの外では、ゲームコンテンツデータを検索しないでください。準備が成功していれば、コピーされたゲームコンテンツはこのフォルダーにあります。
アクションの参照先
詳細な手順は以下を参照してください。
- prepare アクション - 初回の準備
- bash アクション - busybox を使用した UNIX シェルコマンドの実行
- search アクション - コード検索の実行
- test アクション - このスキルのテスト
備考
このスキルの元のソース:https://github.com/CometWorks/skills