みなさんこんにちは。GS2の丹羽です。
先日こちらのエントリで告知していた新サービスの提供を開始しました。
また、今回のリリースにあわせてドメインの変更も行われています。
さて、サービスの内容に関しては告知時におおむねお伝えしていますので、ここでは Unity SDK からの使い方と料金についてご説明しようと思います。
GS2-Lock
GS2-Lock の使い方は非常に簡単です。
yield return Gs2.Lock.Lock( r => { if (r.Error != null) { // 例外が発生 } }, Session, // ゲームセッション LockPoolName, // ロックプール名 "resource-0001", // ロックを取得するリソース名 "transaction-0001", // トランザクションID 5 // ロックの有効期限(秒) ); // この間に resource-0001 に関する処理を行う。 // たとえば、残高を確認し、残高が必要量以上あれば消費するというような具合 // ロックを取った中で処理を実行することで、残高を確認してから消費するまでの間に割り込まれる心配が無くなる yield return Gs2.Lock.Unlock( r => { if (r.Error != null) { // 例外が発生 } }, Session, // ゲームセッション LockPoolName, // ロックプール名 "resource-0001", // ロックを取得するリソース名 "transaction-0001", // トランザクションID );
GS2-Lock の利用料金はサービスクラス+APIリクエスト回数に対する課金となっていますが、
最少クラスである lock1.nano(1秒間に1回 ロックまたはアンロック可能) は無料でご利用いただけます。
その次のクラスである lock1.micro(1秒間に5回 ロックまたはアンロック可能) は1時間あたり10円でご利用いただけます。
そのほかの利用料金として、APIリクエスト1,000回あたり3円の利用料金が必要です。
APIリクエストには毎月10,000回までの無料枠があります。
GS2-JobQueue
GS2-JobQueue はジョブの登録は Unity SDK からは行えません。
ここでは GS2-Script からジョブを登録する例を示します。
job_queue_client = client('job_queue') –- GS2-JobQueue のクライアントを初期化 result = job_queue_client.push({ queueName="queue-0001", -- ジョブキュー名 userId="user-0001", -- ジョブを登録するユーザID jobs={ { scriptName="script-0001", -- ジョブで実行するGS2-Script名 args="{\"param1\": \"test\", \"param2\": 2}", -- GS2-Script に渡す引数 maxRetry=5 -- 最大リトライ回数 }, { scriptName="script-0002", -- ジョブで実行するGS2-Script名 args="{\"param\": \"aaa\"}", -- GS2-Script に渡す引数 maxRetry=3 -- 最大リトライ回数 } } }) result = {permit=not result.isError} -- ジョブの登録に失敗した場合失敗とする
ジョブの実行は Unity SDK で行えて
yield return Gs2.JobQueue.Run( r => { if (r.Error != null) { // 例外が発生 } Debug.Log("statusCode: " + r.Result.StatusCode); // ステータスコード(200が成功 - httpステータスコードに準拠) Debug.Log("result: " + r.Result.Result); // ジョブが実行したスクリプトの戻り値 Debug.Log("endOfJob: " + r.Result.EndOfJob); // キューの終端までジョブを実行したか }, Session, // ゲームセッション QueueName // ジョブキュー名 );
このようになります。ジョブの実行リクエストを定期的に実行することでジョブキューを通した非同期処理を実現出来ます。
ジョブキューにジョブが追加されたときにサーバからプッシュ通知でクライアントに知らせたい場合は
GS2-InGamePushNotification と連携することで、ポーリングしなくてもジョブキューを処理することが出来ます。
Gs2.JobQueue.SetInGamePushNotificationSession(session);
GS2-JobQueue のクライアントに GS2-InGamePushNotification のセッション情報を渡して
Gs2.JobQueue.OnEntryJob += (notification) =>
{
Debug.Log("queueName: " + notification.QueueName);
};
イベントハンドラを登録するだけです。イベントハンドラにはジョブが登録されたジョブキュー名が渡ってきますので、
それを使ってジョブキューの終端までジョブを実行すれば実装は完了です。
GS2-JobQueue の利用料金は完全リクエスト課金で
ジョブの登録 | 3円/1,000件 |
---|---|
ジョブの実行 | 5円/1,000回 |
ジョブ/デッドジョブ/ジョブ実行結果取得 | 5円/~10件/1,000回 |
ジョブ/デッドジョブ取得 | 1円/1,000回 |
となっており、毎月
ジョブの登録 | 10,000件 |
---|---|
ジョブの実行 | 10,000回 |
ジョブ/デッドジョブ/ジョブ実行結果取得 | 10,000ユニット(取得件数10件あたり 1ユニット) |
ジョブ/デッドジョブ取得 | 10,000回 |
の無料枠が付属します。
そのほかの利用料金として、APIリクエスト1,000回あたり3円の利用料金が必要です。
APIリクエストには毎月10,000回までの無料枠があります。
それでは、また。