v1.0

概要

Diarkis は初回リリースから3年の年月を経て、ついに v1.0 をリリースしました!

主な更新内容

  • Field が新しくなりました

    • 視界の範囲 (Field of Vission) であれば、Grid を跨いで同期されるように対応しました。

    • サーバー負荷が軽減されるように最適化しました。

    • 各種 バグを修正 しました。

    • IDiarkisField::SyncInit() を廃止し IDiarkisField::Join() を追加されました。

    • DiarkisField::Leave() コマンドを追加されました。

  • Session モジュールが新規に追加されました。

サーバー

v0.9 と比べて内部通信の効率化、内部コードのリファクタリングの実施、テストシナリオの強化による品質向上を実施し、更にパフォーマンスが向上しております。

  • コア

    • DiarkisExec パッケージを追加。サーバーのセットアップを簡潔にできるようになった

    • メッシュモジュールに MARS アドレスを一定時間キャッシュする仕組みを追加

    • roomSupport と groupSupport のパッケージ名をそれぞれ roomSupport, groupSupport とキャメルケースに変更

    • エコーハンドラーを追加

    • ロギング関数に与えられた構造体が String() インターフェースを実装している場合、 String() の戻り値を出力するようにした

    • Diarkis サーバーが自己のIPアドレスを取得した場合にデュアルスタックを無効化

    • 致命的な問題を防止するために、メッシュ送信コールバックをロック

    • 致命的な問題を防止するために、vault のマップの同時反復とマップの書き込みを修正

    • OnStop と OnTerminate のタイムアウトを通知するコンテキストを追加

  • Direct Message

    • DMユーザーの切断が正しいバージョンとコマンドで切断メッセージを送信するように修正

    Dive

    • IncrBy と IncrByEx を追加

    • OnReady を追加

    • Dive のデータ型を interface{} から []byte に変更。

    • Dive のバイト固定サイズが小さすぎたのを修正

    • Dive モジュールのシャットダウン防止問題を修正

    Field

    • Field のアルゴリズムが変更され、パフォーマンスや可用性が向上

    • Field カスタムフィルタがストレージサーバではなくフロントサーバで実行されるように修正

    • Field モジュールのパフォーマンス向上

    • Field の Leave コマンド ID がルームチャットと同じコマンド ID を使用していた問題を修正

    • Join コマンドを追加し、 Join に続いて Sync、Disappear、Leave が機能するようににしたした

    Group

    • Join に関する問題の修正

    MatchMaker

    • メンバーのチケットタイムアウトを処理するために onMatchedTicketTimeout を追加

    • チケットのプロパティを更新

    Mesh

    • キーが一杯の場合の sharedData 更新の問題を修正

    • 終了タスクの後にアナウンサーを停止するようにした

    Metrics

    • パケット数のメトリクスを修正しパケットサイズのメトリクスを追加

    Puffer

    • プロパティコメントのサポートを追加し、 JSON パースを改善するために大文字と小文字の違いのサポートを追加

    • プロトコル名が各パッケージ名で一意になるようにした

    • プロトコルコードに定数 Ver と Cmd が追加

    • 生成するファイルのパーミッションを 755 から 644 に変更

    Room

    • ユーザーが予期せず切断し、同じユーザーIDで再接続した場合、部屋が空にならないことがある問題を修正

    • room ID の重複防止

    • UpdateProperties と IncrProperty は部屋の TTL を更新しないように変更

    • mutex による lock 漏れの問題を修正

    • room message / announce のログレベルを変更

    • SetOnMigrated コールバックのパラメータ名の修正

    Session

    • Session の招待がユーザーごとの招待データを保持しないようにした

    • SessionType 指定時のメンバー ID およびメンバー数を取得するセッションコマンドの追加

    • setTypeByUser と removeTypeByUser が競合状態になることを抑止

    Go Client

    • Debug コマンドの追加

クライアント

  • Diarkis ランタイム

    • 全般

      • UDP サーバから切断する際に、タイミングによって Fin パケットを送信せずに切断することがあったため、切断時に必ず Fin パケットを送信するように修正

      • Add NAT type determination function.

    • P2P

      • P2P モジュールへ明示的な切断処理機能を追加

      • ホールパンチ処理の改善

      • ホールパンチ処理のための通信間隔が試行回数に応じて段階的に長くなるように変更

      • ホールパンチに失敗させるデバック機能を追加

  • Diarkis Module

    • Diarkis ランタイム内でのメモリ確保処理を置き換えるカスタム・アロケーターを設定する機能を追加

      • ICustomAllocator を継承してカスタム・アロケーターを実装して Diarkis::SetCustomAllocator() でアロケーターを入れ替えます

    • カスタム・アロケーターを使用した std ライブラリのための型を追加

      • Diarkis::StdString や Diarkis::StdVector 等があり、Diarkis 内部ではこの型を使用して std コンテナを使用しています

    • Base クラスに DiarkisInit/DiarkisDestroy 関数を追加し、DiarkisInit でロガーを初期化するように修正

    • Trace ログ・レベルを追加

    • ログに Diarkis クライアントのバージョンを表示するように対応

    • 様々な バグや最適化を実施

  • サンプル

    • session_simple サンプルを追加

    • directmessage_simple サンプルを追加

    • Android 版サンプルを追加

    • iOS 版サンプルを追加

最終更新