Ceras はバイナリ シリアライザーです。あらゆるオブジェクトをbyte[]
に変換し、またその逆に変換します。機能、速度、快適さの点で、これまで以上に優れています。参照ループ、大規模/複雑な継承チェーン、オブジェクトのパーツへの分割などをサポートします。
クラス パーソン { パブリック文字列 名前; public int 年齢; }var p = 新しい人物 { 名前 = "riki"、年齢 = 5 };var ceras = new CerasSerializer();var bytes = ceras.Serialize(p);
>> コードチュートリアルにはさらに多くの例があります
>> 特定のシナリオの詳細なガイドはブログにあります
>>「最適化と使用上の落とし穴」を読む
>> 変更ログ v3.0 (rikidev.com/new-features-in-ceras-3-0-2)
>> v4.0 の新機能 (https://github.com/rikimaru0345/Ceras/releases/tag/4.0)
非常に高速で小規模なバイナリ出力 ( 「パフォーマンス」を参照)
ほぼすべての型をサポートします。
すべての一般的な .NET タイプに対応する手書きのフォーマッタ
すべての一般的な Unity タイプのフォーマッタが付属しています
実行時に新しい/ユーザータイプに対して新しいフォーマッタを生成します。
拡張とカスタマイズが非常に簡単
参照の永続化を完全にサポート (循環参照を含む!)
ポリモーフィズム/継承/インターフェースの完全なサポート
オブジェクトを「ExtenalObjects」としてパーツにシリアル化できます (多くのシナリオで役立ちます)
自動バージョントレランス。クラスに属性を配置する必要はありません。
全機能リスト (および計画されている機能)
Ceras は一般に、NetSerializer や MessagePack-CSharp とともにパフォーマンス スペクトルの最上位にランクされます。 Ceras のパフォーマンスを理解するために、ここで予備的なベンチマーク結果を示します。結果のバイナリ サイズは、MessagePack-CSharp とほぼ同じになります。
表示されている結果はこのコードから得られたものです。自分で試すだけでなく、良い結果と悪い結果が得られたシナリオについてフィードバックを提供することをお勧めします。
特定の状況に合わせてSerializerConfig
の設定を調整することを忘れないでください。 Ceras を使用してネットワーク パケットの読み取り/書き込みを行うには、たとえば、設定オブジェクトをファイルに保存したり、ゲーム内でアイテム/呪文/モンスターを永続化したりする場合とは異なる設定が必要になる場合があります。
このプロジェクトはまだ進行中です。つまり、時間の経過とともにさらに最適化が実装されることになります (ここでのフィードバックは重要です!)。
主な目標は、あらゆる状況で使用できるユニバーサル シリアライザーを作成することです。個人的に私の主な目的は、簡単なオブジェクトの永続化とネットワーク通信でした。私は時間をかけて多くの機能を追加してきましたが、誰かが同様にサポートすべき良いシナリオを思いついたときはいつでも、それを実現します。
例:
設定:設定、ゲームの保存など、何の問題もなくオブジェクトをディスクにすばやく保存します。ほとんど設定なしで。使用ガイドのステップ 1 と 2 を参照してください。
分割:ということは、あなたのPerson
他のPerson
オブジェクトへの参照を持っていますが、それぞれは個別にシリアル化される必要があります。 (基本的にプログラム全体を参照を素早くドラッグする必要はありません)。おそらく、各Person
独自のファイルに入れたり、必要に応じてネットワーク経由で 1 人ずつ送信したりできるようにしたいと考えていますか?問題ない! IExternalRootObject
使用しても問題ありません。 「外部オブジェクト ガイド (ゲーム DB の例)」を参照してください。
ネットワーク: Ceras は、そのシンプルな API と膨大な機能セットにより、完全な「ネットワーク プロトコル」を実装するのに独自に適しています。私は、基本的な TCP 実装がどのように見えるかを示す短いガイドを書きましたSend(myObject);
それからvar obj = await Receive();
反対側では、それだけです!文字通り、これ以上簡単なことはありません。現時点では、このガイドには 2 部しかありませんが、ある程度まとまったら (そしてリクエストがあれば) シリーズを続けて、最終的にはそのサンプルを本格的で堅牢な、実戦テスト済みのネットワーキングに構築したいと考えています。システム。
詳細:上記は単なる例であり、Ceras はほぼすべての状況で使用できるように作られています...
何らかの理由で人間が読める出力が必要な場合。たとえば、テキストエディタで編集できるようにしたいファイルなどです。このような用途には、JSON または XML の方が適していると考えられます。
コード生成をサポートしていないプラットフォームでこれを使用する予定です。ユーザー タイプのシリアライザーは、コード生成を通じて実行時に作成されます。そして、それが許可されていない場合 (iOS など)、Ceras は任意のオブジェクト フォーマッタを生成できません。ただし、組み込み型は引き続き機能します。ただし、これを修正する方法はあります... (フォーマッタの事前生成) Ceras には、設定内に専用のAotMode
と、IL2CPP/Unity/AoT 用のコード ジェネレータ (クイック ガイドはこちら) が含まれています。
問題を開く
私の Discord に参加してください (おそらく 1 対 1 で直接サポートするのが最適です)
よくある質問と最適化と落とし穴を必ず読んでください。