サーバー同期時刻

オンラインゲームでは、ゲームに参加しているクライアント間で同期した時計が必要になることがあります。特定の(現実世界の)時刻に起きるゲーム内イベントがその一例で、一部のプレイヤーではイベントが開始しているのに他のプレイヤーはまだということが起きると、ゲーム体験が台無しになりかねません。

インターネットに接続している最近のデバイスには大抵ネットワークに同期する時計の仕組みが備わっていますが、普通は利用者がネットワーク同期からオプトアウトして手動で時刻を調整できるようになっており、デバイスが提供するシステム時刻だからといって信用できるとは限りません。(時計の同期が狂っていることを利用した不正行為によって利益を得られるような状況では特にそうでしょう。)

Strix Unreal SDKでは、どのチャネルにもサーバーのクロックと自動的に同期するクロックがあり、同じルームサーバーに接続しているクライアント間で同期時刻を共有することができます。このクロックは、クライアントとサーバー間の往復時間(「RTT」や「ピング値」とも呼ばれています)の計測も行っています。往復時間は、ネットワーク遅延の目安になります。

サーバー同期時刻に関連する関数が4つあります。

GetSynchronizedTime

サーバー同期時刻を取得します。

GetSyncRTT

クライアントとサーバーの間の往復時間を取得します。

GetSyncTimePeriod

同期処理を行う時間間隔を取得します。

SetSyncTimePeriod

同期処理を行う時間間隔を設定します。

注釈

サーバーとの間の同期は10秒ごとに行われます。この時間間隔は、必要であればSetSyncTimePeriod関数を使用して変更できます。必要な時間間隔はミリ秒単位で指定します。(デフォルトである10秒は、10,000と表現されます。)

なお、この値を短くしすぎるとネットワークトラフィックが増加してサーバーの負荷が高くなることがあり、逆に長くしすぎると同期時刻の精度が低下することがありますので、注意してください。