GS2 Blog

Game Server Services(https://gs2.io/) の最新情報をお届けします

サーバーから取得した時刻を基準とした現在時刻取得機能が追加されました

はじめに

イベントの開始時刻や終了時刻など運営型ゲームでは時間の取り扱いは重要です。

機能追加の背景

一方で、ゲームが動作するデバイスの時刻設定は必ずしも正確とは言えず、正しくUIを表現するのは難しいです。
サーバーから取得した時刻を使用して、現在時間を補正することが一般的に行われており、それによってより正確なUIを表現することができるようになります。

GS2 では元々 GS2-Realtime::Now というAPIで現在時刻を取得できました。
しかし、それはその瞬間の時刻の取得であり、刻々と変化する時刻やスリープ復帰後にも問題なく動作するような仕組みはゲーム開発者が構築する必要がありました。

追加された機能の詳細

    Gs2DateTime datetime = await application.Realtime.Gs2DateTimeAsync(
        GameSession
    );
    DateTimeOffset now = datetime.Current;

Gs2DateTimeAsync を呼び出した時に GS2-Realtime::Now を呼び出して現在時刻を取得し Gs2DateTime オブジェクトを返します。
Gs2DateTime の Current にアクセスすることで、補正が適用された現在時刻を取得できます。

QA目的で GS2-Account や GS2-Auth を使用して現在時刻のオフセットを設定している場合、Gs2DateTime オブジェクトが返す時刻にもオフセットが適用されます。

(C) Game Server Services, Inc.