Ren'Pyセーブ編集:完全技術ガイド
はじめに

Ren’Pyはビジュアルノベルを作成するための最も人気のあるエンジンで、インディーのロマンス物語から複雑な物語アドベンチャーまで、何千ものゲームを動かしています。Doki Doki Literature Club、かたわ少女、その他多くのゲームがRen’Pyで作られています。
退屈なリプレイをスキップしたり、すべてのルートをアンロックしたり、異なる選択肢で何が起こるか見たいと思ったことがあるなら、Ren’Pyのセーブファイルを編集しようとしたかもしれません。しかし、テキストファイルを変更するほど簡単ではないことに気づいたでしょう。
このガイドでは、Ren’Pyのセーブが編集が難しい理由を説明し、ゲームの進行状況を変更するための実用的な代替手段を提供します。
なぜRen’Pyのセーブは編集が難しいのか?
JSONやXML、または単純なバイナリ構造でデータを保存する他のエンジンとは異なり、Ren’PyはシリアライゼーションにPythonの組み込みpickleモジュールを使用します。
Pickleとは?
pickleは、ほぼすべてのPythonオブジェクトをシリアライズ(保存)およびデシリアライズ(読み込み)できるPythonモジュールです:
- クラス
- 関数
- 複雑なネストされたデータ構造
- 他のオブジェクトへの参照
Ren’Pyでゲームをセーブすると、「Affection = 100」のようなデータだけを保存するのではありません。ゲーム状態全体—すべてのPythonオブジェクト、すべてのクラスインスタンス、すべての変数—をバイナリブロブにダンプします。
Pickleファイルの問題点
-
セキュリティリスク: 信頼できないソースからのデータをアンピクル(読み込み)すると、任意のコードが実行される可能性があります。これが、安全なWebベースのRen’Pyセーブエディタを構築することが非常に難しい理由です。
-
クラス依存性: Pickleファイルを適切にデシリアライズするには、元のクラス定義へのアクセスが必要です。ゲームの正確なPythonコードがなければ、変更されたデータを再ピクルすると、多くの場合エラーや破損が発生します。
-
内部参照: Pythonオブジェクトは互いに参照できます。1つの値を変更すると、他の場所で参照が壊れる可能性があります。
Ren’Pyセーブファイルの中身
課題はありますが、Ren’Pyセーブの内容を読み取ることは可能です。通常、以下が見つかります:
- ゲーム変数:
has_met_character、route_completed、affection_pointsなどのフラグ。 - 永続データ:
persistent.*変数に保存されるセーブ間データ。 - ロールバック履歴: ロールバック機能用の最近のインタラクションの記録。
- 現在の位置: セーブが作成されたラベルとダイアログ行。
- プレイ時間: ゲームのプレイにかかった合計時間。
私たちのRen’Pyセーブビューアはこの情報を解析して表示でき、以下に役立ちます:
- ゲーム進行のデバッグ
- 特定のルートがトリガーされたかどうかの確認
- 変数値の検証
Ren’Pyゲームを変更する代替方法
直接的なセーブ編集はリスクがあるため、より安全な代替方法があります:
方法1: 開発者コンソール(推奨)
ほとんどのRen’Pyゲームには組み込みの開発者コンソールがあります:
- ゲームを起動します。
Shift + Oを押してコンソールを開きます。- Pythonコマンドを直接入力します。例:
affection = 100 has_ending_1 = True - 変更は即座に反映されます。
注意: 一部のゲームではコンソールが無効になっている場合があります。config.console設定を確認してください。
方法2: persistent.pyを編集
Ren’Pyはセーブ間データをpersistentというファイルに保存します。このファイルもピクルされていますが、完全なセーブよりもシンプルです:
- persistentファイルを見つけます(通常は
game/saves/または%AppData%/RenPy/[gamename]/)。 - Pythonスクリプトを使用して読み込み、変更し、再保存します:
import pickle with open('persistent', 'rb') as f: data = pickle.load(f) data['gallery_unlocked'] = True with open('persistent', 'wb') as f: pickle.dump(data, f)
警告: これにはコンピュータにPythonがインストールされている必要があり、pickle操作と同じリスクがあります。
方法3: チートMod
多くの人気のあるRen’Pyゲームには、コミュニティが作成したチートModがあり、以下を行います:
- すべてのルートをアンロック
- 好感度を最大化
- チートメニューを有効化
F95zoneやNexus Modsなどのサイトで「[ゲーム名] cheat mod」を検索してください。
方法4: Unren(デコンパイル)
上級ユーザー向けに、unrenやunrpycなどのツールを使用してRen’Pyゲームをデコンパイルできます:
.rpyスクリプトをデコンパイルします。- 変数チェックを見つけて変更します。
- ゲームを再パックします。
これは最も強力な方法ですが、最も複雑でもあり、ゲームの利用規約に違反する可能性があります。
セーブファイルの場所
Ren’Pyゲームはプラットフォーム固有の場所にセーブを保存します:
| プラットフォーム | 場所 |
|---|---|
| Windows | %AppData%\RenPy\[gamename]\またはgame\saves\ |
| macOS | ~/Library/RenPy/[gamename]/ |
| Linux | ~/.renpy/[gamename]/ |
| Android | /sdcard/Android/data/[package]/files/saves/ |
ファイルは1-1-LT1.save(スロット1)、2-1-LT1.save(スロット2)などと名付けられています。
よくある質問
Q: オンラインエディタでRen’Pyセーブを変更できますか? A: 現在、当エディタはRen’Pyセーブの読み取り専用閲覧を提供しています。Pickleデシリアライゼーションのセキュリティリスクのため、完全な編集サポートは利用できません。
Q: なぜとにかくサポートしないのですか? A: Webブラウザで任意のPickleデータを実行すると、悪意のあるコード実行が可能になる可能性があります。機能の完全性よりもユーザーの安全を優先しています。
Q: 完全な編集をサポートする予定はありますか? A: 限定的な編集をサポートする安全な方法(例:再ピクルせずに単純な変数を変更する)を探っています。更新をお楽しみに。
Q: 開発者コンソールを使用するのはチートですか? A: シングルプレイヤーゲームでは、あなたの体験です。ゲームを楽しくするために何でもしてください。
まとめ
Ren’PyのPython Pickleの使用は、直接的なセーブ編集を技術的に困難で潜在的に危険にします。ただし、開発者コンソール、persistentファイルの編集、コミュニティModなどの代替手段を使用して、ゲーム体験を安全に変更できます。
私たちのセーブビューアは、直接編集が完全にはサポートされていなくても、セーブ状態を理解するのに役立ちます。今のところ、開発者コンソールがRen’Py変更のための最も安全で強力なツールです。
関連記事: 一般的なセーブファイル拡張子の解説