# 【無料】セーブシステム SaveSystem ## 概要 VRChat ワールドにテキストコピペ(復活の呪文)式のセーブ・ロードシステムを実装できるギミックです。 ワールド内の複数の * GameObject の active * GameObject.transform.position * GameObject.transform.rotation * InputField.text * UdonBehaviour の float 変数 * UdonBehaviour の int 変数 * UdonBehaviour の string 変数 * UdonBehaviour の bool 変数 をセーブ・ロードできます。 Persistenceが実装されたら用済みになるはず。 デバッグ用に https://called-d.github.io/vrc-world-save-system/decoder/v1.1.0.html にデコーダーを置いてあります。 ## 導入方法 VRChat Creator Companion `UdonSharp` テンプレートで作ったプロジェクトに SaveSystem.unitypackage をインポートしてください。 Assets/called_D/SaveSystem/Example of SaveSystem.prefab にサンプルがありますので、シーンに配置して確認してください。 SaveSytem オブジェクトの最初のUdonBehaviourが本体です。 ワールドで実運用する場合、本体の Secret Token にランダムなパスワードを設定してください。他のところで使っているパスワード等は入れないようにしてください。 https://google.com/search?q=random+string などで 200文字設定で出せばいいと思います。 ## カテゴリ化機能について セーブデータの形式は変わりませんが、バージョン 1.5.0 で対象指定のカテゴリ化、階層化機能を実装しました。 ## ChangeLog v1.5.0 カテゴリ管理への変換器を追加 v1.4.0 カテゴリ化を追加 v1.3.0 ワールド側で未定義のデータを保持するオプションを追加、ログ出力オンオフのオプションを追加、 v1.2.0 負の数の扱いのバグを対処、rotationを追加 v1.1.1 UdonSharp 1.x 対応 v1.1.0 2022-05-08: RC4-drop パラメーター追加 v1.0.0 2022-05-03: 公開 ## 技術的概要 おおむね以下の擬似コードのようになります ``` data = toJSON({ version, items: { key1: value1, key2: value2, ... } }); encrypted = rc4(data, password) output = sha256(data) + base64(encrypted) ``` 暗号学的にはあまり推奨されない古い形式で安全性は保証できませんが、一応普通の人がどうこうできない程度の暗号化と改竄耐性をもちます Data Dictionaries来たのでゴリ押しparseやめたい
## ライセンス ライブラリ部分を除きCC0です。 ### ライブラリ * (MIT License) UdonHashLib Copyright (c) 2021 Devon (Gorialis) R * (MIT License) RC4 Copyright (c) 2019 Christopher Whitley