GS2 Blog

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

CircleCI から Semaphore CI に移行した話

みなさんこんにちは。Game Server Services の丹羽です。

Circle CI はとてもいいサービスです。しかし、私たちのニーズに合わなくなってきました。
そこで、様々な SaaS を検討した結果 Semaphore CI にたどり着きましたので、今日はその話をしたいと思います。

なぜ Circle CI をやめようと思ったのか

"なぜ?" を共有するには
そもそも、私たちが何を開発しているのかを簡単に説明する必要があります。

私たちは、ゲームサーバをSaaSとして提供しています。
フルパッケージでモノリスなゲームサーバではなく、マイクロサービスとして、機能単位でつまみ食いして利用できるよう設計されています。
AWS がすさまじい量のサービスを提供していますが、そのすべてを使用する必要がないのと似ています。

現在提供しているマイクロサービスの種類は「課金通貨の残高管理」「メッセージボックス」「経験値・レベル管理」「イベントスケジュール管理」など 36 にのぼります。
これらのサービスは様々なプログラミング言語から利用できるようSDKも提供しており、Python / PHP / TypeScript / C# といったものから
ゲームエンジンから利用しやすいよう、Unity / Unreal Engine 4 といった個別のプロダクトに特化したSDKも提供しています。

その結果、管理するリポジトリの数が爆発して困っていました。
なにか修正作業を行うとき、特定のリポジトリに収まらず ほかのリポジトリにも手を入れることになったとき、ブランチを切り替えわすれていてため息をつくのは日常的でした。

そして、たどり着いた結果はマイクロリポジトリをやめて、モノリシックなリポジトリに変えることです。
誤解をされないよう注意書きをしておくと、マイクロサービスをやめるわけではありません。リポジトリをまとめるだけです。

そのとき一番の障害として挙がってきたのが CI でした。

Circle CI をはじめとした CI ツールの大半はリポジトリと密結合しています。
これは、リポジトリに push したときや、 PR が作られたときに CI を動かすためにそうなっているのだと思いますが、モノレポとは非常に相性が悪いです。
なぜなら、モノレポに大量のマイクロサービスを入れると、変更のたびに走るテストが膨大になってしまう為です。

そのため、差分を検知して変更されていない部分のみテストをするなどの工夫が必要となりますが、そこは私たちにとって事業の本質ではありません。
最初は Circle CI の中で実現しようと、差分検知などの仕組みを作ってもみましたが、ビルド履歴に様々なマイクロサービスのビルド結果が入り混じってしまい、視認性が非常に悪く「正直 使い物にならない」という状態になってしまいました。

こうして、私たちは Circle CI から離れる決断をしました。

Semaphore CI は何がいいの?

モノレポ対応

まず、私たちの要件にマッチしている段階でお察しの通り、リポジトリの部分変更検知は標準機能で乗っています。
デフォルトでは、master(main) ブランチとの差を見て、変化があった部分のみCIするロジックが用意されています。

また、ビルド結果の一覧からどこが実行されたのかも一目瞭然です。

f:id:kazutomo:20210514004444p:plain

並列実行の手軽さ

最も他の CI と異なるのはそのUIでしょう。

f:id:kazutomo:20210514001658p:plain

ノードベースでビルドパイプラインを組み立てていきます。
直感的ではないというか、他のCIと大きく違うのは各ビルドタスクごとにビルドマシンが変わることです。
Circle CI をはじめとしたさまざまな CI は「セットアップステップ」 -> 「ビルドステップ」 -> 「テストステップ」 というように記述していきますが
このルールをそのまま Semaphore CI に持ってきても、「ビルドステップ」はまったく新しいマシンで実行されるため、セットアップ結果は反映されていません。

上のスクリーンショットで、箱の中に複数行ある部分はビルドマシンを共有するのか?と思いますが、そうではありません。
ここで記述されたタスクは並列実行されます。すべてのタスクが終わると次の箱に進む。というわけです。

ビルドプロセスを組み立てる上で、ここは実は並列でやってもいいんだけど、いい感じの yaml を書くのがめんどくさいなあ。と直列で書きがちですが、並列実行を手軽に直感的に使えるのもいい部分です。
なお、テスト実行を複数のマシンで並列処理して高速化したいようなニーズに対する対応は Circle CI と似たようなものです。

プロモート機能

平たく言うと、ビルド定義の yaml ファイルを分割する機能です。
他の yaml ファイルを呼び出す処理のことを Semaphore CI ではプロモートと呼んでいます。
(本当は 特定の yaml が完了したら実行してほしい。と登録する逆向きの参照の CI を求めていたのですが…)

これによって、Circle CI では超大作になりがちな yaml ファイルを分割することができます。
プロモートを自動的に実行する条件を設定できます「特定のブランチなら」「特定のディレクトリ以下に変更があれば」「タスクが成功していたら」という具合です。

/.semaphore/.semaphore.yaml
 github の push で実行される
 /account に変更があれば /account/.semaphore/.semaphore.yaml をプロモートする
 /inventory に変更があれば /inventory/.semaphore/.semaphore.yaml をプロモートする

/account/.semaphore/.semaphore.yaml
 account マイクロサービスのテストを実行
 テストを通ってかつ develop ブランチであれば、開発環境にデプロイ
 テストを通ってかつ master ブランチであれば、本番環境にデプロイ

/inventory/.semaphore/.semaphore.yaml
 inventory マイクロサービスのテストを実行
 テストを通ってかつ develop ブランチであれば、開発環境にデプロイ
 テストを通ってかつ master ブランチであれば、本番環境にデプロイ

みたいに組み立てることができます。

プロモートは自動的に実行しないようにすることもできます。
これを使えば、本番環境にデプロイ する部分だけ別の yaml に切り出して、そのプロモートは手動で行うようにする。というようなことも出来るでしょう。

virtual env が標準でついている

最近の定番は Docker コンテナを DockerHub から指定していい感じにビルドするというものです。
当然、Semaphore CI でもこの方法を取れますが、Linux マシンでビルドするときには標準で virtual env が使用できます。

sem python 3.8

とコマンドを実行するだけで、python と実行すると 3.8系のランタイムで実行できます。
Docker Hub にアクセスして、コンテナを探す必要はありません。

ビルド対象は golang 1.15系 なんだけど、ビルドツールが python 3.8系 なんだよなあ。というときも
合わせ技のコンテナを探したりする不毛な作業が必要なくなり、QOL が上がりました。

お値段

実行時間に対する料金は Circle CI とさほど変わりません。
しかし、シート料金がかからないため、その点では融通しやすいかもしれません。
(Circle CI で私たちの場合は、管理部門が領収書を回収するためだけに1シート使ったりしていたので、少し嬉しいですかね)

Semaphore CI は何がだめなの?

CI をする分には申し分ない機能をもっていますので致命的な問題はありません。
しかし、私は良い製品だと思いますが何故かマイナーなので、Web上で資料がすさまじく少ないです。

プロモートするときに引数や環境変数を付けて起動できると、いろいろまとめられそうな気がするのですが、そのような機能もありません。
(ま、そもそも yaml を分割できない CI SaaS のほうが多いので、贅沢な話なんですが…)

定番の求人情報

私たちは一緒にサービスを盛り上げてくれるメンバーを募集しています。
今絶賛募集中なのは、いわゆるソリューションアーキテクトと、新機能をバンバン作っていくというよりは、お客様目線でサービスを改善していくエンジニア(サーバエンジニアというよりはクライアントエンジニア寄りのほうが向いてるかもしれません)です。
gs2.io

それでは。また。

新料金プランおよび、無料のキャンペーンのお知らせ

こんにちは。GS2の丹羽です。

今日は新しい料金プランを発表いたします。
GS2のサービス開始から4ヶ月。既に500を超える開発者の皆様にご利用頂いております。

ご利用中の皆様より最も多くお問い合わせを頂いたのが料金についてです。
そこで、より簡単に予算を組んでいただけるように料金プランを一部見直すことにしました。

新料金プラン

Individual プラン(無料)

過去12か月間の売上高が1000万円未満の個人または法人の皆様にはGS2を無料でご利用いただけます。
これは個人開発者の皆様が料金を気にせず、のびのびと開発いただくことを目的とした変更です。

Professional プラン(従量)

過去12か月間の売上高が1000万円以上の個人または法人に適用するプランです。
従来通り、APIリクエストあたり 0.02円を基本とした従量課金モデルでサービスを提供します。

Enterprise プラン(MAU単価)

MAU(Monthly Active User)ベースでの料金体系でサービスを提供します。
大企業のお客様を中心とし「一体いくらかかるのかわからない」「開発しながらAPI呼び出し回数を気にするのが大変」というお声を多数頂戴してきました。
そこでビジネスプランに乗せやすく、開発もスピーディに進行可能なMAU単価でサービスを提供します。

利用料金はMAU1人あたり30円~100円となり、詳細は案件のサーバ依存度合によって決定しますので、まずはご相談ください。
なお、この利用料金でGS2の全てのサービスがご利用いただけます。

また、MAU単価自体は少々高めの価格設定となっておりますが、従量課金と比較して ”安いほう” で実際の請求が行われます。そのため、リリース後にAPIコール数の最適化をおこなうアップデートを行うことで、費用の最適化を行っていただくことも可能です。

Prototyping プラン

この料金プランは開発初期にのみ使用できるプランです。
月額10万円で全ての機能が利用できるほか、GS2のスタッフによるプロトタイプ版の開発を最速で行えるよう支援を受けることができます。
本制作では、Prototyping プランをご利用いただくことはできません。引き続きサポートが必要な場合は 『GS2 プロフェッショナルサービス』 をご利用ください。

無料キャンペーン

今回の新しい料金プランの追加にあわせて、Prototyping プランの3か月無料キャンペーンを行います。
もし試作段階の案件がありましたらお気軽にご相談ください。

本キャンペーンの適用条件

  • 2020年12月末までに案件ベースの相談いただくこと

テレビ会議にてご相談を受け付けております。相談のためのNDA締結も可能ですので、まずはお気軽にお声がけください。

gs2.io

Unity Editor との統合を強化し、ボタン一つで色々なアカウント管理やガチャをインストールできるように

みなさんこんにちは。GS2の丹羽です。

今日は、Unity を使って GS2 を利用する際に、より簡単に導入いただける仕組みを公開しましたのでそのお知らせをさせていただきます。

これまで、GS2-SDK のインストールには .unitypackage での配布を行っていました。
それが、UPM および、UPM を設定するインストーラーで提供されるようになります。

インストーラーは以下で提供しています。


GS2-Documents GS2-SDK for Game Engine

インストーラーは unitypackage で配布されますので、アセットをインポートしてください。

f:id:kazutomo:20200326105940p:plain



その後、メニューに Game Server Services が追加されますので『インストール』を選択してください。

f:id:kazutomo:20200326110345p:plain



インストールウィザードが表示されます。
現在、Unity の Package Manager が使用するパッケージレジストリは一般からのパッケージ登録を受け付けていませんので、
GS2 が独自に提供するパッケージレジストリをプロジェクトに追加し、SDKのダウンロードを行います。

f:id:kazutomo:20200326110431p:plain



インストールボタンをクリックすると、アセットのインストールが開始されます。

f:id:kazutomo:20200326110606p:plain



インストールが完了すると、GS2のアカウント入力・プロジェクトの選択を求められますので、適宜入力・選択してください。

f:id:kazutomo:20200326110644p:plain
f:id:kazutomo:20200326110729p:plain



初めてログインした際にはチュートリアルが表示されます。
読み飛ばしたくなる気持ちはわかりますが、とても大切な話をしていますので、ぜひ一度お読みください。

f:id:kazutomo:20200326110812p:plain



今回追加された機能の目玉は『CloudWeave』です。
GS2 を使ったアプリケーションをボタン一つでインストールできるようになる機能です。

f:id:kazutomo:20200326110855p:plain


ゲーム内通貨を扱うパッケージをインストールすると、以下のようなサーバサイドでゲーム内通貨を扱うプログラムをすぐに動かせます。

f:id:kazutomo:20200326112146p:plain



ローンチ時点では以下の機能を提供しています。

  • クレデンシャル(APIキー)の発行
  • アカウントの作成・ログイン
  • 課金通貨の入手・消費・ウォレットの表示
  • 課金通貨の販売(プラットフォーム課金を使用して残高を加算)
  • ゲーム内通貨の入手・消費・ウォレットの表示
  • スタミナの消費・スタミナ値の表示
  • スタミナの販売(課金通貨を使用してスタミナを回復)
  • 所持品の入手・消費・一覧の表示
  • ユニットの入手・削除・一覧の表示
  • ユニットに経験値を付与・レベルアップ
  • エストの選択・開始・報酬の入手(ゲーム内通貨)・クリアフラグに基づくクエストの開放
  • ガチャの販売(単発・10連)・所持品への報酬反映

まだまだ機能としてはメインストリームでのゲーム開発をするには物足りないと思いますが、今後も順次拡充していきます。
また、Cloud Weave の提供するパッケージは皆様からの提供も受け付けます。

github.com

こちらのリポジトリに Pull Request を頂ければ、順次対応します。
このあたりの仕組みについても今後よりスムーズにパッケージ公開いただけるよう整備していきますので、よろしくお願いいたします。

それでは、また。

AWS EventBridge へ対応しました

みなさん、こんにちは。GS2の丹羽です。

pages.awscloud.com

本日 AWS Blackbelt オンラインセミナー にて Amazon EventBridge の紹介がありました。
その中で日本国内のサービスでは3つのサービスが Amazon EventBridge に対応することが発表されました。
はてなさんの Mackerel。PLAIDさんの KARATEとともに、GS2 も Amazon EventBridge への対応を発表させていただきましたので、その詳報をお伝えしたいと思います。

まず、Amazon EventBridge とはなにか。ということですが、SaaS で発生したイベントをトリガーとして AWS Lambda をはじめとした AWS の各サービスを起動できる仕組みです。
Mackerel でも今回の対応に関する資料が公開されています。

mackerel.io

Mackerel はサーバの監視などをおこなえる SaaS で、サーバ障害などのアラート発生時に Amazon EventBridge と連携できる。という機能が追加されています。

GS2 ではこれまで GS2-Script で GS2 内のイベントでプログラムを実行する仕組みを提供してきましたが、新しく Amazon EventBridge への対応を発表させていただきました。
これによって『レベルが上がったとき』『アイテムを手に入れたとき』『クエストに失敗したとき』など様々なタイミングで AWSLambda で処理を実行したり、さまざまな処理を実行できるようになります。

GS2 から利用する方法も簡単です。

f:id:kazutomo:20200122213249p:plain

ログイン後のトップバーに『プロジェクトの設定を更新』というメニューを選択します。

f:id:kazutomo:20200122213338p:plain

つづけて、『AWS EventBridge の設定を表示』をクリックして、イベントを受け取りたい AWS アカウントの情報を設定します。

f:id:kazutomo:20200122213446p:plain

最後に、受け取りたいイベントが発生するGS2の機能のネームスペースの設定で、AWS EventBridge でイベントを受け取るように設定するだけです。

それでは、また。

新サービスGS2-Datastore/GS2-News の公開

みなさんこんにちは。GS2の丹羽です。

今週末は秋葉原で同人ゲーム即売会のデジゲー博が開催され、GS2もスポンサーをします。よろしければ、皆さんご来場ください。

今週のアップデート

GS2-Datastore の公開

多数要望を頂戴していた任意のデータをアップロードできるデータストレージサービスの提供を開始しました。
GS2-Datastore は自動的にアップロードされたデータを世代管理し、過去30日以内であれば更新・削除したデータも復元することができるようになっています。

また、この手のサービスで悩みの種となるデータのリスト取得をして、実際にデータを取得しに行くまでの間にデータの更新が行われたときにリストで取得したときの状態と、実際に取得したデータに齟齬が発生する問題に対しても、データが世代管理が行われることでリスト取得したあと更新が挟まったとしても、リスト取得した時点でのデータを取得することができます。
これは潜在的な不具合を回避するのに大いに役立つと思います。

データストアはアップロードされたデータにアクセスコントロール(ACL)を設定できます。
『自分にしかアクセスできないデータ』『アクセス可能なユーザIDを列挙し、フレンドにしかアクセスできないデータ』『誰でもアクセスできるパブリックデータ』といったニーズに適したACLでのデータ運用ができます。

アップロードされたデータに対して GS2-Script を使ってバリデーションを行うことができます。これによってリプレイデータをアップロードしてほしい。とおもっているのに、実際アップロードされたデータはそうではないデータだった。というようなケースにも対応できます。

ローカルゲームのセーブデータのクラウドバックアップのような用途にも使用できます。しかし、この場合は改ざんに対する効力は限定的です。たとえば、ゲーム内の通貨の所持数量をセーブデータとして保存し、GS2-Datastore を使ってクラウドセーブする場合、通貨の数量を不正に増やしたセーブデータをアップロードされるようなケースには脆弱です。

GS2-Datastore は非常に便利なサービスではありますが、このようなゲームバランス・ビジネスを崩壊させる危険性のあるデータは GS2-Inventory など不正に数量を操作することができないようデザインされたサービスと組み合わせて利用することをお勧めします。

GS2-News の公開

GS2-News はログイン後にゲームに関するお知らせ・イベント情報・メンテナンス情報などをお届けするのに利用できるサービスです。

これらの情報をアプリ内のレンダリングシステムを使って実装するのはコストが高く、また配信の柔軟性が損なわれることから WebView を用いて提供するのが一般的です。GS2-News はそのような現状のニーズに沿う形で設計されています。

お知らせの記事データは Hugo というオープンソースのツールを使って作成することを前提としています。

https://gohugo.io/

Hugo は Go言語 で記述された非常に高速な静的Webページの生成ツールです。
デザインやレイアウト情報をもつ HTML テンプレートと、記事データ情報をもつ Markdown ドキュメントを組み合わせて記事を管理することができます。
GS2-News で配信するお知らせページのひな型となるプロジェクトを GitHub で公開しています。

https://github.com/gs2io/gs2-news-sample

記事の作成や更新の手順についても上記ページで解説していますので、詳しく知りたい場合はご参照ください。

GS2-News は記事データに GS2-Schedule のイベント情報を関連付けることができるようになっています。
これによって、イベントの開催期間になったら自動的に記事が公開されるような実装や、チュートリアル突破後24時間のゲームプレイヤーに対して特別な記事を掲載するようなこともできます。

さらに、ニュース記事データの取得方法も2種類提供します。
1つ目はzip形式で記事全体のアーカイブデータを取得し、アプリ内のブラウザからはローカルのHTMLファイルを参照する方法と、GS2がホスティングする記事データにアプリ内のブラウザから直接アクセスする方法です。
どちらもメリット・デメリットがありますので、ニーズに合う方法をご利用いただければと思います。

どのようなメリット・デメリットがあるのかについても上記サンプルページで解説していますが、ざっくりとご説明すると zip形式を利用する場合、ローカルにキャッシュがある場合は通信をしなくてよくなるため、高速化やGS2の利用費用の圧縮ができます。一方で、キャッシュを使うべきかどうかを判断する必要が出てきます。
そのために、GS2は記事の内容に変化があったか?テンプレートの内容に変化があったか?を判断できるよう コンテンツハッシュ・テンプレートハッシュ という情報を取得するAPIを提供しています。こちらを使って判断することになりますが、当然このような目に見えづらい実装のデバッグは少々骨が折れます。

逆にGS2がホスティングするパターンではキャッシュの有効期限などは気にせず、APIから応答されたURLにアクセスするだけでよくなります。
ただ、非公開記事にアクセスされるようなことがあってはなりませんので、GS2-News はページにアクセスするための認証の仕組みが搭載されています。
これは API から URL を受け取る際に同時にブラウザの Cookie に設定するべき情報が返ってくるようになっており、Cookie に認証情報が設定されているか・されている内容は適切か?という判断を行い、ページへのアクセスを許可したり拒否したりします。
そのため、アプリ内で利用しているブラウザが Cookie の設定に対応していない場合はこの方法を利用することはできません。

お気軽にご相談ください

サイト内の右下に設置されたチャットで話しかければ、GS2のスタッフがすぐに対応いたします。
GS2 についての質問や、GS2 をどのように活用するべきかのご相談などでご活用ください。

また、GS2プロフェッショナルサービス ではゲームの企画書や仕様書を共有いただき どの部分で GS2 を活用いただけるか GS2 のスタッフが設計のご提案をします。
GS2プロフェッショナルサービス は稼働時間ベースの料金体系となっており、このサポート費用は、製品リリース後のGS2利用料金から50%割引する形で還元されます。

みなさんがゲームのコアバリューを磨くことに注力できる環境づくりを進めていますので、ぜひご活用ください。

gs2.io

新サービスGS2-Logの追加とメトリクス収集の追加

みなさんこんにちは。GS2の丹羽です。

今週は AWS Game Tech Night が Amazon 大阪オフィスに期間限定で併設されたコワーキングスペースである AWS Loft Osaka で開催され、私も登壇してきました。
講演で使用したスライドは公開していますので、ご興味があればご覧ください。

https://speakerdeck.com/kazutomo/mousokomadepo-tuteiru-cloud2-dot-0-shi-dai-falsekai-fa

今週のアップデート

GS2-Log の公開

GS2の各サービスのネームスペースの項目にログ記録に関するフィールドが追加されました。
ここで、GS2-Log を指定することで、ログの収集を行えるようになります。

アクセスログには呼び出されたAPIの種類や呼び出したユーザのID。リクエスト内容やレスポンス内容が含まれます。
その他にも、スタンプシートの発行履歴や、実行履歴も記録されますので、トラブルシューティングでも活用いただけます。

ログの記録には3種類の方式が用意されています。
GS2による管理
お客様自身の Google Cloud BigQuery へデータをお届け
お客様自身の Kinesis Firehose へデータをお届け
GS2による管理を指定した場合、マネージメントコンソール内での検索や、ユニークユーザの集計のような集計機能を利用できます。

f:id:kazutomo:20191114232609j:plain

メトリクス収集を追加

GS2 内のアクティビティをグラフで視覚化する機能が追加されました。
この機能は標準機能として提供され、とくに設定を行うことなくご利用いただけます。

収集されるデータは主に3種類存在します。
これまで発行されたアカウントの総数 のような累積値
キャラクターのレベルのような値の分布
API 呼び出し回数
ゲーム内のアクティビティ収集を何も設定することなくご利用いただけます。ぜひご活用ください。

f:id:kazutomo:20191114232633j:plain

GS2-Deploy がスタックのアップデートに対応

宣言的に GS2 内の設定を記述したテンプレートファイルをアップロードすることで環境を設定できる GS2-Deploy がテンプレートの更新に対応しました。

前回アップロードされたテンプレートと新しくアップロードされたテンプレートの差分を検出し、増えている要素は作成・変化している要素は更新・減っている要素は削除。という操作を自動的に行ってくれます。

今までは初期設定にしか利用できない状態でしたが、テンプレートを更新しながら開発を進めていただくことで、環境の複製が容易となりチーム開発や、開発環境から製品環境への反映がスムーズに行えるようになると思いますので、ぜひご活用ください。

10月のアップデート振り返り

GS2 は10月も様々なアップデートが行われました。
年内には主要機能を一式取り揃えられるよう今後も開発を進めていきます。

新サービス

GS2-Log ログ集約・集計
GS2-Version バージョン管理

新機能

メトリクス収集・グラフ表示
GS2-Deploy にスタックのアップデート機能を追加

SDK

GS2 SDK for Unreal Engine4 を追加
GS2 SDK for Cocos-2dx を追加

サンプル

アカウントの引継ぎ を追加
課金通貨購入 を追加
スタミナ を追加
エスト を追加

11月のアップデート予定

新サービス

GS2-Guild ギルド機能
GS2-DataStore UGCコンテンツなどを保存するデータストレージ
GS2-News ログイン直後に表示するような HTMLベースのおしらせ機能

新機能

GS2-Friend にブラックリストを追加
GS2-Friend にフレンドコード機能を追加
GS2-Inventory にロック機能を追加

サンプル

キャラクター・所持品管理 を追加
パーティ編成 を追加

こちらはあくまでアップデート予定ですので、β利用者からのフィードバックで変更になる可能性があります。
予定の中で優先的に対応してほしい機能があればお気軽にお声がけください。

お気軽にご相談ください

サイト内の右下に設置されたチャットで話しかければ、GS2のスタッフがすぐに対応いたします。
GS2 についての質問や、GS2 をどのように活用するべきかのご相談などでご活用ください。

また、GS2プロフェッショナルサービス ではゲームの企画書や仕様書を共有いただき どの部分で GS2 を活用いただけるか GS2 のスタッフが設計のご提案をします。
GS2プロフェッショナルサービス は稼働時間ベースの料金体系となっており、このサポート費用は、製品リリース後のGS2利用料金から50%割引する形で還元されます。

みなさんがゲームのコアバリューを磨くことに注力できる環境づくりを進めていますので、ぜひご活用ください。

gs2.io

新サービスGS2-Versionの追加とサンプルの追加

みなさんこんにちは。GS2の丹羽です。

今週は Serverless Days が開催されました。
開発者の運用業務からの解放に少しでも貢献できないかと、GS2 もスポンサーをさせていただきました。

今週のアップデート

GS2-Version の公開

バージョンチェックの仕組みを実現するための GS2-Version を公開しました。
GS2-Version を使うことでアプリやアセットのバージョンが古い場合にサーバへのアクセスを止めたり、警告を表示することができます。

具体的な仕組みとしては、ゲームに組み込むクレデンシャルの権限ではバージョンチェックができるだけの権限にとどめておき、バージョンチェックをすべて通過するとアプリを動かすのに十分な権限を持つ一時的なクレデンシャルを発行することで、バージョンが古い場合のアクセスを止めることができます。

バージョンを偽装できないよう署名付きのバージョン番号をアプリ内に組み込むこともできるようになっていたり、利用規約のような同意したバージョンをサーバ側で覚えておいて、どうしたバージョンが古くなった時にエラーとするような実装にも対応しています。

GS2-Sample にスタミナのサンプルを追加

github.com

スタミナの管理機能を実現するサンプルを追加しました。
このサンプルから ウィジェット という仕組みを導入しました。

このサンプルでは 現在のスタミナを表示するウィジェットと、スタミナを課金通貨で購入するウィジェットが用意されており
ウィジェット単位でステート管理をしたり、表示非表示を制御できます。

GS2-Sample の課金通貨販売のサンプルをウィジェット

github.com

既に提供中に課金通貨のサンプルにもウィジェットの仕組みを反映し、課金通貨を表示するウィジェットと、課金通貨を購入するストアウィジェットに分割しました。
これによってサンプルの再利用性が向上しました。

GS2-Sample にクエストのサンプルを追加

github.com


挑戦可能なクエスト一覧を表示し、クエストを選択して開始し、クエストを完了する。という流れのサンプルを追加しました。

お気軽にご相談ください

サイト内の右下に設置されたチャットで話しかければ、GS2のスタッフがすぐに対応いたします。
GS2 についての質問や、GS2 をどのように活用するべきかのご相談などでご活用ください。

また、GS2プロフェッショナルサービス ではゲームの企画書や仕様書を共有いただき どの部分で GS2 を活用いただけるか GS2 のスタッフが設計のご提案をします。
GS2プロフェッショナルサービス は稼働時間ベースの料金体系となっており、このサポート費用は、製品リリース後のGS2利用料金から50%割引する形で還元されます。

みなさんがゲームのコアバリューを磨くことに注力できる環境づくりを進めていますので、ぜひご活用ください。

gs2.io

(C) Game Server Services, Inc.