Steam へのリリース
RenMori が保護するのは、ビルド済みの Ren'Py 配布用ビルドです。Steam への公開は順序の決まった 3 つの手順で行い、この順序が重要です。
先に保護を行ってから、プロジェクトに対して Ren'Py ランチャーの Build Distributions を再実行すると、ランチャーはソースから再ビルドして新たに保護されていない配布用ビルドを生成し、保護は失われます。保護はランチャーの出力に対して行い、保護済みのフォルダを決してランチャーに戻さないでください。
このガイドでは、Ren'Py SDK に付属するサンプルプロジェクト the_question とその market ビルドを例に使用します。このビルドには 3 つのプラットフォームがすべて含まれているためです。
アップロードするビルドの選択
Ren'Py ランチャーは次のビルドを生成できます。
- pc:Windows と Linux
- mac:macOS
- market:Windows(
.exe)、macOS(.app)、Linux(.sh)のランチャーが単一のgame/を共有する 1 つのユニバーサルパッケージ
Steam ではどちらの方式も利用できます。
RenMori の保護はプラットフォームに依存しません。renmori.rpe ローダーは、各 OS 上で Ren'Py に同梱された Python の中で動作します。そのため、market ビルドに対して protect を 1 回実行するだけで、Windows、macOS、Linux をまとめてカバーできます。
手順 1:保護
ランチャーが生成した market アーカイブをフォルダに展開し(RenMori が受け付けるのはディレクトリであり、.zip ではありません)、次のコマンドを実行します。
変更されるのは game/ のみで、各プラットフォームのランチャーには手を加えません。
game/ 以下にあった平文の .rpa アーカイブと .rpyc ファイルはなくなり、unrpa や unrpyc が処理できる対象は残りません。
手順 2:SteamPipe でのアップロード
Steam は単一のファイルを受け付けません。ビルドとはフォルダの中身全体であり、SteamPipe でデポにアップロードします。したがって、次の点に注意してください。
.zipをアップロードしないrenmori.rmcだけをアップロードしない- デポの
contentrootを保護済みのフォルダに向け、その中身(game/、lib/、renpy/、各ランチャー)をすべて SteamPipe にアップロードさせる
app_build_<APPID>.vdf:
Steamworks の SteamPipe GUI でも同じ操作を行えます。その場合も保護済みのフォルダを指定してください。
プラットフォーム別のデポを使用する場合は、各プラットフォームのビルドを個別に保護し、それぞれに専用のデポと専用の contentroot を割り当てます。
手順 3:起動オプション
Steamworks の Web 管理画面(Installation → General Installation → Launch Options)で、OS ごとに 1 つずつ起動オプションを設定し、それぞれビルド内の対応するランチャーを指定します。
ランチャーが Ren'Py を起動すると、renmori.rpe がアセットの読み込みを引き継ぎ、メモリ上でアセットを復号します。この処理はプレイヤーからは意識されません。
Steam との互換性に関する注意点
- Steam DRM を重ねて適用しない(DRMToolkit による実行ファイルのラッパー):ランチャーのバイナリを書き換えるため実行時の自己検査と衝突するおそれがあり、それ自体の保護も弱い一方で、RenMori はすでにデータ層を保護している
- Steam オーバーレイは通常どおり動作する:RenMori は Ren'Py のファイル読み込みのみをフックし、プロセスへの注入や DLL インジェクションを一切行わないため、オーバーレイには影響しない
- 実績と Steam クラウドのセーブデータは Ren'Py の Python API を経由するため影響を受けない。
renmori.rmcは静的なファイルであるため、Steam のファイル検証と差分アップデートも通常どおり機能する steam_appid.txtは Steam SDK がrenpy.loaderを経由せずに直接読み込むため、RenMori はデフォルトでこのファイルを平文のまま残す(DEFAULT_KEEP_ON_DISK)。配布用ビルドに残しても問題はなく、外部から読み込まれるその他のファイルはrenmori.tomlのkeep_on_diskで追加できる(設定ファイルを参照)
チェックリスト
- Ren'Py ランチャーでソースからビルドした(Build Distributions)
- 展開したビルドフォルダに対して
renmori protectを実行した -
renmori verifyが成功した - SteamPipe の
contentrootが.zipではなく保護済みのフォルダを指している - OS ごとに起動オプションを設定した(
the_question.exe/.sh/.app) - Steam DRM のラッパーを適用していない
- 保護済みのフォルダに対してランチャーを再実行していない