mcpField
S
se-dev-plugin

se-dev-plugin

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

se-dev-plugin について

se-dev-pluginは、Space Engineers version 1のクライアント、サーバー、または両方のプラグイン開発を支援するスキルです。構成やパッチの資料に加え、PluginHubとMagnetarHubのソース例を検索できます。

主な機能

  1. 01クライアントとサーバープラグインの開発ガイド
  2. 02Harmonyパッチのドキュメント
  3. 03プラグイン登録先のソース検索
  4. 04プラグイン例のダウンロードと索引化
  5. 05ローカルプラグインソースの準備
  6. 06シェルコマンドと検索の実行

活用シーン

  1. 01クライアントまたはサーバープラグインの構成検討
  2. 02Harmonyパッチ方式の選択
  3. 03登録済みプラグインの例の検索
  4. 04実装前のソースパターン確認

インストール

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

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

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

同梱ファイル

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

.python-version
AccessTools.md
Clean.bat
clean.sh
ClientPlugin.md
CommandExecution.md
CommandExecutionDetails.md
common-posix.sh
download_magnetarhub.py
download_plugin_source.py
download_pluginhub.py
Guide.md
hierarchy_tree.py
index_plugins.py
list_plugins.py
OtherPluginsAsExamples.md
actions/
bash.md
prepare.md
search.md
Examples/Client/
DecodePixelDataPrepatch.cs
ExamplePrefixPostfixPatch.cs
ExampleTranspilerPatch.cs
MyPhysics.LoadData.original.il
MyPhysics.LoadData.patched.il
Preloader.cs
Examples/Server/
ExamplePatch.cs
ExampleServerPatch.cs
ExampleTranspilerPatch.cs
MyPhysics.LoadData.original.il
MyPhysics.LoadData.patched.il

詳細

SE Dev Plugin Skill

Space Engineers バージョン 1 向けのプラグイン開発。

⚠️ 重要:コマンドは 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:busybox 経由で UNIX シェルコマンドを実行します
  • search:search_plugins.py を使ってプラグインのコードを検索します

ルーティングの判断

以下のパターンを順番に確認し、最初に一致したものを使用します。

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

はじめに

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

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

重要なドキュメント

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

プラグイン開発ドキュメント

詳細については、該当するドキュメントをお読みください。

  • Plugin.md プラグイン開発(クライアントとサーバーの両方に共通するスキル)
  • ClientPlugin.md クライアントプラグインの開発(クライアント側に関連)
  • ServerPlugin.md サーバープラグインの開発(サーバー側に関連)
  • se-dev-plugin-guide スキル:テンプレート、ローカルテスト、マニフェスト XML、ハブへの提出など、プラグイン開発プロセス全般に関する質問に答える際に使用します。
  • Publicizer.md Krafs publicizer を使用して、元のゲームコード内の内部、保護、またはプライベートなメンバーにアクセスする方法(任意)。
  • OtherPluginsAsExamples.md 他のプラグインのソースコードを例として参照する方法。

Harmony パッチ適用のドキュメント

Harmony パッチ適用に関する段階的なドキュメントです(まず基本から始め、必要に応じて高度なトピックをお読みください)。

  1. Patching.md - まずはこちら:パッチの種類、プレフィックス/ポストフィックスの基本、よくあるパターン
  2. PatchInjections.md - 特殊なパラメーター:__instance、__result、___fields、__state
  3. AccessTools.md - メソッド、フィールド、型を見つけるためのリフレクションユーティリティ
  4. TranspilerPatching.md - 複雑な変更に向けた IL レベルのパッチ適用
  5. PatchingSpecialCases.md - ファイナライザー、リバースパッチ、補助メソッド、優先度
  6. PreloaderPatching.md - JIT 前のパッチ適用(Mono.Cecil、クライアントのみ)

対象:クライアントとサーバー

プラグインの対象は、次のいずれか一方または両方です。

  • クライアント — ゲームクライアント内で実行され、Pulsarによって読み込まれ、PluginHubで公開されます。
  • サーバー — 専用サーバー内で実行され、Magnetarによって読み込まれ、MagnetarHubで公開されます。サーバープラグインは、Magnetar の PluginSdk を通じて設定を宣言します。その場合は se-dev-plugin-sdk スキルを使用してください。管理者は、Magnetar のコントロールプレーンであるQuasarを介して、サーバープラグインをリモートで設定します。

クライアント専用のプラグインには、クライアントプラグインテンプレートを使用します。サーバー側のコンパニオンも必要なプラグイン(またはサーバー専用プラグイン)には、ClientPlugin ターゲット、ServerPlugin ターゲット、および Shared プロジェクトを含むサーバープラグインテンプレートを使用します。ServerPlugin.mdを参照してください。

プラグインの配布

クライアントプラグインは PluginHub でのみ公開されます。すべてのクライアントプラグインはオープンソースである必要があります。プレイヤーのマシン上で、PluginHub の登録によって識別される GitHub のソースリビジョンからコンパイルされるためです。提出されたプラグインは、安全性とセキュリティの観点から審査されますが、ベストエフォートで行われ、法的な保証はありません。プラグインはネイティブコードを実行するため、あらゆる処理を実行できます。

テンプレートから作成したプラグインでは、2か所でバージョンを設定します。リリースごとに両方を更新してください。Version.Build.props 内の <Version> と、Plugin.cs 内の AssemblyVersion および AssemblyFileVersion 属性です(サーバープラグインの場合は ClientPlugin/Plugin.cs と ServerPlugin/Plugin.cs)。ローカルビルドでは LOCAL_BUILD が定義され、バージョンには Version.Build.props の値が使われます。Pulsar と Magnetar は LOCAL_BUILD を定義せずにソースをコンパイルするため、ゲーム内およびサーバーに表示されるバージョンには、これらの属性の値が使われます。Version.Build.props だけを更新した場合、古いバージョンが引き続き表示されます。

呼び出すコードやパッチするコードを正確に読むには、se-dev-game-code を使用してください。se-dev-game-book ハンドブックがインストールされている場合は、まずそれを読んで、ゲームシステムの仕組みと関与する型を確認してください。インストールされていない場合は、その情報もゲームコード内で検索してください。サーバープラグインでは、同じ方法で se-dev-server-code と se-dev-server-book を使用してください。

Graphify グラフ

準備時に、ダウンロードしたプラグインソース用の独立した Graphify グラフが Data/Sources(または SE_DEV_PLUGIN_PROJECT_ROOT)の下に構築されます。高速な Rust クラスタリングバックエンド(uv 経由の Python 3.12。自動的にプロビジョニングされます)を使用できる場合、準備時に自動的に構築されます。このコーパスは小さいため、どちらの場合も短時間で完了します。高速バックエンドを利用できない場合は、SE_DEV_GRAPHIFY=1 を指定した場合にのみ有効になり、SE_DEV_GRAPHIFY=0 で無効になります。必要なときに参照してください。通常の検索作業では省略できます。GraphifyPrepare.mdで構築し、GraphifyUsage.mdでクエリを実行します。

参考資料

  • Pulsar Space Engineers のゲームクライアント用プラグインローダー
  • Pulsar Installer Windows 用 Pulsar インストーラー
  • PluginHub Pulsar 用の公開プラグインレジストリ
  • Magnetar Space Engineers の専用サーバー用プラグインローダー
  • MagnetarHub Magnetar 用の公開プラグインレジストリ

プラグインレジストリ

2 つのレジストリを同時に検索します。どちらも同じ GitHub プラグイン XML スキーマを使用しています。

  • PluginHub — クライアントプラグイン(Pulsar)。古いエントリでは <Id> に Owner/Repo が指定されています。新しいエントリでは GUID の <Id> を使用し、GitHub リポジトリを <RepoId> に指定しています。
  • MagnetarHub — サーバープラグイン(Magnetar)。<Id> は GUID で、GitHub リポジトリは <RepoId> に指定されています。

準備時に、両方のレジストリを Data/PluginHub と Data/MagnetarHub にクローンします。uv run download_pluginhub.py と uv run download_magnetarhub.py を実行して更新してください。クローン済みのレジストリの代わりに、またはそれらに加えてローカルのレジストリチェックアウトを使用するには、SE_PLUGIN_REGISTRY_DIR にレジストリのルート(Plugins/*.xml を含むフォルダー)を設定します。list_plugins.py、download_plugin_source.py、インデクサーは、設定されているすべてのレジストリを読み込みます。list_plugins.py は各エントリに [PluginHub] または [MagnetarHub] のタグを付けます。

プラグインコードの検索

どちらのレジストリにあるプラグインのソースコードも検索し、例やパターンを探せます。

# List available plugins (tagged by registry), or search them
uv run list_plugins.py
uv run list_plugins.py --search "camera"

# Download a plugin's source (use the EXACT name, GUID/Id, or Owner/Repo from the list); skip the ones listed as [LOCAL]
uv run download_plugin_source.py "Tool Switcher"
uv run download_plugin_source.py CometWorks/essentials

# Index downloaded plugins (automatic after download)
uv run index_plugins.py

# Search plugin code
uv run search_plugins.py class declaration Plugin
uv run search_plugins.py method signature Patch

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

# Limit number of results
uv run search_plugins.py class usage IPlugin --limit 20

レジストリには、利用可能なすべてのプラグインの説明が含まれています。タスクに役立つ可能性のあるプラグインのソースをダウンロードし、インデックスを作成して検索してください。

詳しい説明については、検索アクションを参照してください。

アクションのリファレンス

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

備考

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

コメント