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 ClientDebug コマンドの追加
クライアント
Diarkis ランタイム
全般
UDP サーバから切断する際に、タイミングによって Fin パケットを送信せずに切断することがあったため、切断時に必ず Fin パケットを送信するように修正
Add NAT type determination function.
When
DiarkisUdpBase::SendCheckNATType
is executed, the result can be obtained byDiarkisUdpBase::OnCheckNATType
.
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 版サンプルを追加
最終更新