ウェブアップデーター link

Ren'Py にはウェブ上の Ren'Py ホストから自動でダウンロードして更新をするアップデーターが含まれています。これは大規模なゲームを最新に保つのに便利です。

Ren'Py アップデーターは自動的に次のステップを実行します。

  1. 差分ファイルのインデックスをダウンロードします。

  2. ユーザーに更新するか尋ねます。

  3. ディスク上のファイルからアーカイブを生成します。

  4. zsync をサーバーからダウンロードします。

  5. zsync を使用してアーカイブをサーバー上のバージョンにアップデートします。 zsync は自動的に2つのファイルの差分を計算し、変更部分のみをダウンロードしようとします。

  6. アーカイブを解凍し、ディスク上のファイルを置き換えます。

  7. 新旧間で除去されたファイルを削除します。

  8. ゲームを再起動します。

Ren'Py アップデーターはこの間、更新画面を表示してユーザーに続行を促したり、適切にキャンセルできるようにします。

サーバー要件 link

アップデーターにはあなた自身によるホストの提供を必要とします。適切な URL から直接アップデートファイルをダウンロード出来るようにして、サーバーが HTTP の範囲の問い合わせをサポートする必要があります。

HTTPSはパッチ用途にはサポートされません。

( 「共有」サイトは必要な機能をサポートしない傾向にあるので、ウェブホスティングのために代金を払う必要があります )

patch 引数が False に設定されるか https url が指定されるととアップデーターはゲームにパッチを当てようとしません。代わりに完全なアーカイブをダウンロードし、アップデートを解凍します。これはダウンロードサイズを大きくしますが、より多くのウェブサーバーで動作するようになります。

アップデートのビルド link

アップデートは配布物がビルドされると自動的にビルドされます。アップデートのビルドには build.include_update を True に設定して、ランチャーの「 Build Distributions 」 にある「 Build Updates 」オプションをアンロックしてください。このオプションをチェックすると Ren'Py はアップデートファイルを作成します。

アップデートファイルは以下で構成されます :

updates.json

利用可能なアップデートとそのバージョンのインデックス

package.sums

そのパッケージの各ブロックのチェックサム

package.update.gz

特定のパッケージのアップデートデータを含んでいます。

package.update.json

DLC をダウンロードするとき、アップデーターが使用する各パッケージのファイルのリストが含まれます。

package.zsync

これは zsync によってダウンロードを管理するために使用される制御ファイルです。

これらすべてのファイルをウェブサーバーのひとつのディレクトリーにアップロードしなければなりません。

関数 link

アップデートを実行するために、updater.update か updater.Update アクションを実行してください。

updater.Update(*args, **kwargs) link

updater.update() を呼び出すアクションです。すべての引数は記憶されてその関数に渡されます。

updater.UpdateVersion(url, check_interval=21600, simulate=None, **kwargs) link

この関数は url のサーバーにアクセスし、その url でソフトウェアの最新版が利用可能かを判定します。存在すればこれは新しいバージョンを返し、そうでなければ None を返します。

サーバーへのアクセスには時間が掛るため、この関数はバックグラウンドでスレッドを起動すると共に最後にサーバーにアクセスしたときのバージョンか、サーバーにアクセスしていなければ None を返します。バックグラウンドスレッドは一旦サーバーにアクセス出来たら現在のインタラクションを再開し、この関数を呼び出すスクリーンを更新します。

せいぜい Ren'Py のセッション毎に 1 回、多くとも check_interval 秒毎に 1 回各 url に接続します。サーバーの応答がない場合はキャッシュされたデータが返されます。

追加のキーワード引数 (simulate を含む) はそれらが updater.update() に渡されたようにアップデート機構に渡されます。

updater.can_update(base=None) link

アップデートが可能なら、 True を返します。アップデートが総合的に不可能 ( 例えばアップデーターのディレクトリーが削除された ) なら、 False を返します。

これはアップデーターが実際に使用可能かを確定しないことに注意してください。そのためには updater.UpdateVersion() を使用してください。

updater.get_installed_packages(base=None) link

インストールされた DLC パッケージの名前のリストを返します。

base

アップデートのためのベースディレクトリーです。デフォルトでは現在のプロジェクトのベースディレクトリーです。

updater.update(url, base=None, force=False, public_key=None, simulate=None, add=[], restart=True, confirm=True, patch=True) link

この Ren'Py ゲームを最新のバージョンにアップデートします。

url

updates.json ファイルへの URL です。

base

アップデートされるベースディレクトリーです。デフォルトでは現在のゲームのベースディレクトリーです ( これは無視される可能性があります)。

force

バージョン番号が同じでも強制アップデートします( テストのために使われます)。

public_key

アップデートの署名をチェックするために使用される、公開鍵を含んだ PEM ファイルへのパスです( これは通常無視できます)。

simulate

これは実際にアップデートを実行せずにアップデート GUI をテストするために使われます。これは以下を取られます:

  • アップデートを実行する None

  • アップデートが実行可能な場合をテストする "available"

  • アップデートが実行できない場合をテストする "not_available"

  • アップデートエラーをテストする "error"

add

このアップデートの間に加えられるパッケージのリスト。これは DLC のためにのみ必要です。

restart

アップデート後にゲームを再起動します。

confirm

Ren'Py はユーザーにアップデートの確認を求めますか? False なら、確認なしでアップデートが実行されます。

patch

True なら Ren'Py はゲームにパッチを当てようと試み、変更データのみをダウンロードします。 False なら Ren'Py はゲームの完全なコピーをダウンロードし、そこからアップデートします。これは url が "http:" で始まらなければ自動的に False に設定されます。

スクリーン link

アップデーターの見た目を変更するためには、 updater スクリーンを上書きしてください。デフォルトのスクリーンは common/00updater.rpy に定義されています。