mcpField
S
se-dev-server-code

se-dev-server-code

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

se-dev-server-code について

SE Dev Server Code Skill は、Space Engineers のサーバー開発者が逆コンパイルされた C# コードとテキスト形式のサーバーコンテンツを調べるためのスキルです。バージョン管理されたローカルデータを準備し、API、コード構造、コンテンツ参照を検索できます。

主な機能

  1. 01サーバーソースの逆コンパイルを準備
  2. 02クラス、メソッド、フィールドを検索
  3. 03クラス階層を調査
  4. 04サーバーバージョンごとにソース変更を記録
  5. 05テキストコンテンツとコード参照を検索

活用シーン

  1. 01API の呼び出しやパッチ前に実装を確認
  2. 02サーバーリリース間のコードを比較
  3. 03C# コードが参照するコンテンツファイルを検索

インストール

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

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

インストール後、Claude Code で/se-dev-server-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
DetectServerRoot.bat
fix_case_collisions.py
hash_server_files.py
hierarchy_tree.py
HierarchySearch.md
Implementation.md
index_code.py
index_content.py
Prepare.bat
Prepare.md
prepare.sh
pyproject.toml
actions/
bash.md
prepare.md
search.md
test.md

詳細

SE Dev Server Code Skill

Space Engineers Dedicated Server の逆コンパイル済み C# コードを読み取れます。サーバーの「ゲームロジック」は、ゲーム(クライアント)で実行されるものとほぼ同じです。エントリーポイント(メイン実行ファイル)のほか、ログと設定の一部が異なります。また、サーバーでは使用されないライブラリもありますが、必要なデータ構造や一部のバックエンド機能を提供するために含まれている場合があります。

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

例:

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

アクション:

  • prepare:一度だけの準備を実行します(Windows では Prepare.bat、Linux では prepare.sh)
  • bash:UNIX シェルコマンドを実行します(Windows では BusyBox、Linux ではネイティブのシェル)
  • search:search_server_code.py を使ってコードを検索します
  • test:Windows では test_search_server_code.bat、Linux では test_search_server_code.sh を実行して、このスキルをテストします

ルーティングの判断

以下のパターンを順番に確認してください。最初に一致したものが適用されます。

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

要件

ホストシステムの PATH に以下が含まれている必要があります。

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

はじめに

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

このフォルダーに Prepare.DONE ファイルがない場合は、まず一度だけの準備手順を実行する必要があります。prepare アクションを参照してください。

サーバーの自動検出に失敗した場合は、準備スクリプトを実行する前に SE_SERVER_ROOT を設定してください。Dedicated Server のルートを指定します(Linux では DedicatedServer64 ディレクトリを直接指定することもできます)。

フォルダー構成

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

skills/se-dev-server-code/
├── Data/                 (junction/symlink → per-user persistent server-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
│   ├── server_files.json SHA256 of every original server file (committed - diffable)
│   ├── Decompiled/       decompiled C# sources only, organised per assembly (committed)
│   ├── Content/          textual server content (committed - definition changes reviewable)
│   ├── CodeIndex/        CSV indexes (NOT committed - regenerated)
│   └── graphify-out/     Graphify graph of Decompiled/ (NOT committed - regenerated)
├── Bin64/                (junction/symlink → server's DedicatedServer64, removed after preparation)
└── ...                   skill scripts and documentation

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

Graphify グラフ

準備時に、逆コンパイル済みサーバーコード用の独立した Graphify グラフが Data/Decompiled(または SE_DEV_SERVER_CODE_GRAPH_ROOT)の下に構築されます。グラフは、 グラフ化されたツリーの隣にある Data/graphify-out(または SE_DEV_SERVER_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_server_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/、server_files.json が削除され、新たに逆コンパイルが実行されます。
  • この仕組みにより、新しいサーバーリリースとの互換性を保つため、プラグイン、MOD、スクリプトを簡単に更新できます。 Data/ 内の2つのコミット間で関連するソースの差分を確認すれば、変更点を正確に把握できます。

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

オリジナルのサーバーファイルハッシュ

準備時には、Space Engineers Dedicated Server のインストール先にあるすべてのファイルの SHA256 も Data/server_files.json に記録されます(インストール先ルートからの相対パス → 小文字の16進数ダイジェストをアルファベット順に並べ、1行につき1組)。このファイルはバージョンラベルを付けてコミットされます。 2つのバージョンのコミット間で差分を確認すると、ゲームの更新によって変更されたバイナリを正確に把握できます。アセンブリでもテキストでもないアセットも含まれるため、Data/Decompiled にも Data/Content にも含まれないファイルも確認できます。

記録されたダイジェストを使ってインストールを検証するには、Linux では ./verify_server_files.sh、Windows では .\VerifyServerFiles.bat を実行してください。ファイル形式、差分の確認方法、検証結果については、ServerFileHashes.md を参照してください。

必読ドキュメント

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

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

  • QuickStart.md - 追加の例とクイックリファレンス
  • CodeSearch.md - クラス、メソッド、フィールドなどを検索するための完全ガイド
  • HierarchySearch.md - クラス/インターフェイスの継承関係や実装の検索
  • Advanced.md - 複雑な検索に使う上級者向けのテクニック
  • Troubleshooting.md - 検索結果が NO-MATCHES になった場合や、多すぎる場合の対処方法
  • ServerFileHashes.md - オリジナルのサーバーファイルの SHA256 ダイジェスト:形式、ゲームバージョン間の差分確認、インストールの検証
  • Implementation.md - スキルのコントリビューター向けの技術的な詳細(任意)

クイック検索の例

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

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

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

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

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

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

正確な API、メソッド本体、IL、つまり呼び出しまたはパッチを行うコードを確認する必要がある場合は、サーバーコードを確認してください。システム全体の仕組みを知りたい場合は、インストールされていれば、まず se-dev-server-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 回だけ記載されます。

専用サーバーの実行

サーバーの実行ファイルは、DedicatedServer64 フォルダー内の SpaceEngineersDedicated.exe です。

ヘッドレスモード(UI なし)
SpaceEngineersDedicated.exe -console

Telerik WinForms の設定 UI をバイパスし、サーバーを直接実行します。

設定

サーバーは XML ファイルで設定します。主な設定ファイルは、サーバーの AppData ディレクトリ(通常は %APPDATA%\SpaceEngineersDedicated\)にある SpaceEngineers-Dedicated.cfg です。

主な設定項目:

  • サーバー設定(名前、ワールド、MOD、最大プレイヤー数)
  • ワールド設定(ゲームモード、インベントリサイズ、溶接速度)
  • ネットワーク設定(ポート、公開/非公開)

XML ファイルを直接編集して設定してください。このスキルには、設定、ワールド、MOD の管理ユーティリティは含まれていません。そのような作業をスクリプト化する必要がある場合は、ScriptingGuide.md を参照してください。

サーバー専用アセンブリ
アセンブリ説明
SpaceEngineersDedicatedサーバーのエントリーポイント(SpaceEngineers.exe を置き換えます)
VRage.Dedicated専用サーバーのフレームワーク、ライフサイクル、設定
VRage.RemoteClient.Coreリモートクライアントのサポート(RCON のような機能)

一般的なルール

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

アクションの参照先

詳しい手順については、以下を参照してください。

備考

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

コメント