暗号化の除外とその活用

Last-modified: 2024-10-14 (月) 23:12:34


素材の暗号化と除外指定

作品を出力すると、フォルダ「Data」内のデータは暗号化されて出力されます。
これは出力データにおけるプレイヤーからの直接の閲覧・編集を防ぐことが目的で、エンジンは動作時に内部で解読しながら素材を読み込みます。
Light.vnでは、「encrypt_exclusions.txt」に記述することで、予め特定の素材を暗号化せずに出力するよう指定できます。
この除外設定は、以下のような目的が想定されています。

  • 有志の翻訳を反映する
  • 素材を直接プレイヤーに提供する(特典等)
  • 解読にかかる処理を削減する

暗号化除外指定の方法

Ver16.2.0より、フォルダ「Data」直下にファイル「encrypt_exclusions.txt」が存在すれば、出力時にその内容から暗号化の除外設定が行われます。
フォルダ「Data」直下のファイルパスを記述すれば除外指定となります。

Images/extra/extra0.png
Scripts/scenario/

上記の1つめは、ファイルを個別指定しています。
上記の2つめは、フォルダを指定しています。当該フォルダ以下に格納されているファイルが除外対象となります。

活用例1:有志翻訳の実装

シナリオの実装方法には「シナリオスクリプトに直接テキストを記述する」「CSVファイルを使用して行単位で呼び出す」があります。
このうち、CSVファイルを使用する方法では同一のシナリオスクリプトでの多言語対応が容易に実装できます。
このCSVファイルを、予め列を用意したうえで暗号化対象から除外しておくと、有志の翻訳に変更する機能を提供できます。

  1. 「有志翻訳用の列を用意する」
    CSVファイルは名前付きの列(名前は1行めに列記)で読み込む文字列を識別します。
    ここに有志翻訳用の列を設定しておきます。
  2. 「言語設定に有志翻訳を追加する」
    コンフィグ画面などで言語設定を提供していれば、そこに言語選択肢のひとつとして先述の列を追加します。
  3. 「CSVファイルを除外指定する」
    CSVファイルを1つのフォルダにまとめておくようにすれば、フォルダ単位の指定ができて便利です。
  4. 「格納場所を告知する」
    わかりやすいファイル・フォルダ名を心がけましょう。

活用例2:素材を直接提供する

イベントCG等を除外対象に指定し、特典としてプレイヤーに提供することができます。
ただし、除外対象にスクリプト等は含めないようにすることを強く推奨します。

活用例3:解読の軽量化

Light.vnは高速動作が特長のエンジンではありますが、暗号化ファイルの解読には処理が必要となることには変わりありません。
ほんのわずかなその処理も削減したい場合には、素材の暗号化を外すことも可能です。
ただし、除外対象にスクリプト等は含めないようにすることを強く推奨します。

注意点

暗号化の除外はユーザーによる可変性をとても大きくする操作であり、それゆえに作品の保全性の観点から注意すべき点も存在します。

シナリオ改変

有志翻訳を提供する際に、CSVファイルをまるごと除外するのが最も簡単な方法となります。
この場合、既存の正規シナリオも改変可能となり、シナリオで登場人物に作者の意図しない言動をさせることも可能となります。
これを回避するには、実装がより複雑になってしまいますが、有志翻訳用のCSVファイルを正規のシナリオ用CSVファイルから独立させましょう。

フラグ操作等の意図しない改変

スクリプトを除外対象にしないことを強く推奨する理由は、スクリプトに対して処理の改変を混入させることができるからです。
たとえ設定値として参照するための変数しか書き並べていなかったとしても、それをスクリプトとして読み込むのであれば、そこにいくらでも別の処理を追加できます。
暗号化の目的には、そのような危険な改変を防止するというものもあります。