mcpField
C
create-all-cg-save

create-all-cg-save

ローカル
github.com/xixi048ゲーム・エンタメ02 日前に更新

create-all-cg-save について

所有するオフラインのシングルプレイヤーゲームのセーブを編集する、エージェントスキルとPythonツールキットです。既知形式の解析やファイル差分による解放フラグの推定に対応し、バックアップ、検証、ロールバックを備えています。

主な機能

  1. 01ゲームセーブの検索と識別
  2. 02既知エンジンの解放フラグ解析
  3. 03セーブ差分からフラグ配置を推定
  4. 04読みやすい解放プランの作成
  5. 05編集のバックアップ、検証、ロールバック

活用シーン

  1. 01オフラインゲームのギャラリー解放
  2. 02RPG Makerセーブのスイッチ確認
  3. 03未知形式のセーブでフラグ位置を推定

MCP 対応

stdio経由でセーブ検索、エンジン検査、プラン作成、差分解析、適用などのツールを公開します。適用操作にはドライラン、検証、ロールバックがあります。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbcreate-all-cg-save-1.3.0.mcpb1.3.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

create-all-cg-save

License: MIT Python

すべてのCGを解放したセーブデータを作成します — ご自身のオフラインのシングルプレイ用セーブデータに含まれるすべてのCG、ギャラリー、回想ルームを解放します。

「すべてのCGを解放したい」という希望を、見知らぬ人のセーブデータをダウンロードする代わりに、正確で元に戻せるバイトパッチに変換するエージェントスキル(および依存関係ゼロの小規模なPythonツールキット)です。

中国語の説明はREADME.zh-CN.mdをご覧ください。

できること

  • このマシン上で一般的なセーブデータの保存場所をスキャンし、ゲームのセーブデータ候補を見つけます
  • ゲームエンジン(RPG Maker、Ren'Py、Kirikiri、Unity、Siglus、BGIなど)を特定します
  • 解析可能な形式(RPG MakerのRuby Marshalなど)では、すべての解放フラグの正確なバイトオフセットを計算します
  • 構造が不明なプライベートバイナリでは、「変更前」と「変更後」のセーブデータを差分比較して解放フラグを再構築し、start + stride 配列に当てはめてギャラリー全体に外挿します
  • ドライラン、検証、自動バックアップ、1つのコマンドでのロールバックに対応した、人が読みやすい解放プランを出力します

ゲームはダウンロードせず、CG画像やゲームアセットにも触れず、セーブデータを他人のものに置き換えることもありません。すでに所有しているセーブデータに対して、最小限かつ精密な編集のみを行います。

2つの方法

方法使用する場面仕組み
エンジンの高速経路セーブ形式が既知で解析可能な場合意味解析 — switch[N] / variable[N] に直接移動
汎用差分経路構造不明のプライベートバイナリの場合バイト差分 → start + stride 配列に当てはめ → 外挿

判定ツリーは skills/create-all-cg-save/SKILL.md にあります。

クイックスタート

# 1. Find the save file
python skills/create-all-cg-save/scripts/save_scout.py --game <game name>

# 2. RPG Maker VX / VX Ace / XP: inspect structure and current switch state
python skills/create-all-cg-save/scripts/engines/rgss_save.py inspect "Save01.rvdata2"

# 3. Build an unlock plan (flip the given switches ON)
python skills/create-all-cg-save/scripts/engines/rgss_save.py plan-switches \
    "Save01.rvdata2" --ids 1,3,5-40 --out plan.json

# 4. Dry-run → apply → verify (apply backs up automatically)
python skills/create-all-cg-save/scripts/apply_plan.py plan.json --dry-run
python skills/create-all-cg-save/scripts/apply_plan.py plan.json
python skills/create-all-cg-save/scripts/apply_plan.py plan.json verify

# Roll back if anything looks wrong
python skills/create-all-cg-save/scripts/apply_plan.py plan.json rollback

エンジンが不明な場合は、差分経路を使用します。

python skills/create-all-cg-save/scripts/save_diff.py A.save B.save --json ab.diff.json
python skills/create-all-cg-save/scripts/infer_plan.py ab.diff.json \
    --target A.save --stride 4 --count 128 --out unlock-plan.json

--stride / --start は重要です。フラグ位置の観測数が1つか2つしかないと、当てはめたストライドが曖昧になります(スロット0と5が解放されたstride-4配列では、GCDが20を返します)。スクリプトは明確に警告します。可能であれば、レイアウトを明示的に指定してください。

検証済みの対象

RPG Maker VX Ace(RGSS3) — 例:Save0X.rvdata2:

  • セーブデータは、連結された2つのRuby Marshalストリームで構成されています(ストリーム1はロードメニュー用のmake_save_header、ストリーム2は11キーのmake_save_contentsハッシュです)
  • :switches → @data はブール値の配列です。'T' / 'F' / '0'(nil)はそれぞれ1バイトなので、パッチは同じ長さへの置換となり、ファイルサイズは1バイトも変わりません
  • 結果:59個のスイッチスロットをONに変更し、サイズは617,987 → 617,987バイト。実際にtrueであることを再解析で確認し、rollbackでファイルをバイト単位で元に戻しました

リポジトリの構成

create-all-cg-save/                  # repository
├── .claude-plugin/
│   └── marketplace.json            plugin-marketplace manifest (`/plugin marketplace add`)
└── skills/
    └── create-all-cg-save/         the skill itself (auto-indexed by skills.sh & friends)
        ├── SKILL.md                skill entry point (the workflow an agent reads)
        ├── scripts/
        │   ├── save_scout.py       locate candidate saves + engine fingerprinting
        │   ├── save_diff.py        byte-level diff of two saves
        │   ├── infer_plan.py       infer the flag array → unlock plan
        │   ├── apply_plan.py       apply / verify / roll back
        │   ├── common.py           backup, atomic write, hashing
        │   └── engines/
        │       ├── ruby_marshal.py dependency-free Ruby Marshal parser + encoders
        │       └── rgss_save.py    RPG Maker RGSS save adapter
        └── references/
            ├── engines.md          per-engine save locations and formats
            ├── diff-method.md      the full diff-method manual
            ├── unlock-plan-schema.md  diff / plan JSON schemas
            └── safety.md           backup, integrity, and compliance red lines

スキルとしてインストールする

公開リポジトリから直接インストールできます(クローンは不要です)。

npx skills add xixi048/create-all-cg-save           # skills.sh / `npx skills` CLI
/plugin marketplace add xixi048/create-all-cg-save  # Claude Code plugin marketplace

または、フォルダーをエージェントのスキルディレクトリにコピーします。

skills/create-all-cg-save/ ディレクトリ全体をエージェントのスキルディレクトリに配置します。

  • ユーザーレベル:~/.workbuddy/skills/create-all-cg-save/
  • プロジェクトレベル:<repo>/.workbuddy/skills/create-all-cg-save/

ディレクトリ名は、SKILL.md のフロントマターにあるnameフィールド(create-all-cg-save)と一致している必要があります。 フロントマターは、標準的なエージェントスキルの形式に従っています。name、description(内容と使用場面、中国語と英語のトリガーキーワードを含む)、license、metadataが含まれます。

skills/階層が追加されているのはなぜですか? GitHubをクロールするディレクトリサイト(skills.sh、SkillsMP、npx skills、Claude Codeのプラグインマーケットプレイス)は、skills/<name>/SKILL.mdのみを検索します。リポジトリのルートにスキルフォルダーを置いても、どれだけ優れたものであっても検出されません。

注:SKILL.md内の相対パスはすべて、作業ディレクトリではなくスキルディレクトリを基準とします。先にそのディレクトリへcdするか、コマンドにスキルの絶対パスを指定してください。

MCP サーバーとして使用する

ツールキット全体は MCP 経由(stdio、依存関係なし)でも公開されているため、MCP 対応エージェントであれば、リポジトリの構成を把握していなくても操作できます。

{
  "mcpServers": {
    "create-all-cg-save": {
      "command": "python",
      "args": ["C:/path/to/create-all-cg-save/mcp/server.py"]
    }
  }
}

ツール:save_scout · engine_inspect · plan_unlock_switches · diff_saves · infer_unlock_plan · apply_plan (apply_plan は action: dry_run | apply | verify | rollback を受け取ります。apply は常に最初にバックアップを作成します。)

機械で検出可能なインデックス:

https://xixi048.github.io/create-all-cg-save/.well-known/agent-skills/index.json

要件

Python 3.8 以降、サードパーティ製の依存関係なし(標準ライブラリのみ)。

レガシーなコードページを使用する Windows コンソールでは、中国語の進捗状況を正しく表示するために chcp 65001(または PYTHONIOENCODING=utf-8)が必要になる場合があります。

安全性モデル

  • 書き込みの前に毎回 <save>.allcg-bak-<timestamp> としてバックアップを作成します。上書きは行いません
  • パッチ適用前に sha256_before を検証します。異なるセーブデータ用に作成されたプランは拒否されます
  • ファイル長が変わるパッチは、--allow-resize が渡されない限り拒否されます
  • 適用前には必ずドライランを行い、適用後には必ずゲームをロードして確認してください

一覧については、references/safety.md を参照してください。

既知の制限

  • RPG Maker XP / VX / VX Ace は完全に自動化されています。MV / MZ はセーブデータがプレーンな JSON であれば簡単です
  • Ren'Py、Kirikiri、Unity、Siglus、BGI などでは通常、差分比較方式が必要です。また、一部のセーブデータは全体が圧縮または暗号化されており、プレーンな差分比較では対応できません
  • クラウド専用のセーブデータは、まずローカルに同期する必要があります
  • すべてのスイッチを解除すると、ストーリーの分岐やゲームオーバー条件が発生することもあります。ゲーム内で確認した ID から始めてください

免責事項

このツールは、合法的に所有しているオフラインのシングルプレイヤーゲームの個人的な調査および改変を目的としています。 オンラインゲーム、マルチプレイヤーゲーム、ランキング、その他ほかの人に影響する可能性のあるものには使用しないでください。セーブデータに起きたことについては、すべてご自身の責任となります。なお、書き込みの前には毎回バックアップが作成されます。

ライセンス

MIT — LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。