GS2 Blog

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

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

Cocos-2dx SDKの公開と新規サンプル追加

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

CEDEC+Sapporo と Unreal Fest East 2019 にご参加くださった皆様。お疲れさまでした。

今週のアップデート

Cocos-2dx 向けの SDK を公開

お待たせしました。GS2 SDK for Cocos-2dx を公開しました。
https://app.gs2.io/docs/game-engine.html#gs2-sdk-for-cocos2d-x

【はじめかた】の解説にも Cocos-2dx 向けの手順を追加しています。
https://app.gs2.io/docs/index.html?cpp--cocos2dx#get-start

こちらの実装例のように、UE4 用の SDK 同様 lambda を使い Unity で開発するのとほぼ変わらないインターフェースで提供しています。ぜひご活用ください。

GS2-Sample にアカウント引継ぎのサンプルを追加

github.com

ご要望を頂戴することの多かった、GS2-Account を使ってアカウント機能を実装し、機種変更時などの対応のため メールアドレス+パスワード または GameCenter / Google Play Game Service で引継ぎをできるように設定するサンプルを追加しました。

GS2-Sample に課金通貨販売のサンプルを追加

GS2-Money で課金通貨を管理し、GS2-Showcase で課金通貨を販売するサンプルを追加しました。
サンプル内の商品の一つには GS2-Limit を使って1回しか購入できないお得な商品の実装サンプルも用意しています。

github.com

お気軽にご相談ください

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

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

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

gs2.io

UnrealEngine SDKの公開と10月のアップデート予定のお知らせ

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

Unite Tokyo 2019 お疲れさまでした。
そして、今週末には次のイベント CEDEC+Sapporo と Unreal Fest East 2019 が開催されます。

特に CEDEC+Sapporo では最上位のスポンサーである プラチナスポンサー をさせていただきます。ブース・セッションともに予定していますので、ぜひご来場の際はよろしくお願いします。

今週のアップデート

Unreal Engine 4 向けの SDK を公開

お待たせしました。GS2 SDK for Unreal Engine 4 を公開しました。
GS2-Documents GS2-SDK for Game Engine

【はじめかた】の解説にも UE4 向けの手順を追加しています。
GS2-Documents

C++のネームスペースが使えなかったり、クラス名やメソッド名の文字数制限が厳しい関係で、ブループリントには対応できていませんが、今後なんらかの方法で対応を検討していきたいと思います。

f:id:kazutomo:20191001001913j:plain

こちらの実装例のように、lambda を使い Unity で開発するのとほぼ変わらないインターフェースで提供しています。ぜひご活用ください。

GS2-Schedule の強化

GS2-Schedule ではこれまで開催期間として絶対時間・相対時間の2種類のイベント期間をサポートしていましたが、イベント期間内で繰り返しイベントを実施する機能が追加されました。
具体的には 1/1-1/31 の1か月間を開催期間とした場合に、さらに細かな条件として毎週火曜日10時~毎週木曜日21時まで。のような設定ができるようになりました。

GS2-Sampleの強化

CEDEC/TGS/Unite Tokyo と発表の場を設けた関係で非常に多くの方がGS2に新しく触れていただく機会が増えました。
そのなかで、GitHub リポジトリで公開しているサンプルがわかりづらい。という要望もいただくことが何度かありました。

その原因は GitHub で公開しているコードが完全な Unity プロジェクトではなく、実装の際に参考にしていただけるコードスニペットとして公開していることがうまく伝わっておらず、期待しているサンプルと違うことのよる問題だと考えました。

そこで、GitHub で公開しているコードを完全な Unity プロジェクトとして実行可能な状態で公開することにしました。
リポジトリからチェックアウトいただき、GameObject に GS2-Deploy でサーバ側の設定を行った内容を反映していただくだけで動作を確認いただけるようになりましたので、より手軽に動作を確認いただけるようになったと思います。

今後も改善を続けてまいりますので、お気軽にフィードバックを頂戴できればと思います。

github.com

CEDEC+Sapporo / Unreal Fest 出展

f:id:kazutomo:20191001002050j:plain

冒頭でお知らせしたとおり、今週末に札幌で開催される CEDEC+Sapporo と、CEDEC Tokyo が開催されたのと同じくパシフィコ横浜Unreal Fest が開催されます。ご都合がつきましたら是非ご来場ください。

sapporo.cedec.jp
unrealengine.jp

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

新サービス

  • GS2-Chat / テキストチャット
  • GS2-Formation / 編成
  • GS2-Ranking / ランキング

既存サービス強化

  • GS2-Inventory にアイテムを所持していることを証明する署名付き応答を実装
  • GS2-Formation 編成されたリソース全体に報酬を付与する仕組みを実装
  • GS2-Schedule イベントの期間に繰り返しを設定できるように
  • GS2-Stamina 回復量・回復間隔を GS2-Experience と連携できるように

SDK 関連

  • Unreal Engine 4 向けの SDK を公開
  • Unity 向けのサンプルを単体で動作するプロジェクトとして公開(UPMに対応)

10月のアップデート予定

新サービス

  • GS2-Logs / ログ収集
  • GS2-Watch / 関数ごとの呼び出し回数などメトリクス収集
  • GS2-Version / アプリ・アセットなどのバージョン管理

既存サービス強化

SDK 関連

  • Cocos-2dx 向けの SDK を公開
  • GS2 SDK for Unity で古いSDKを使っている場合に通知を表示するように
  • GS2-Sample のサンプルを追加(アカウント引継ぎ・課金通貨購入)

お気軽にご相談ください

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

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

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

gs2.io

新サービス GS2-Ranking/Unite Tokyoの出展案内

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

東京ゲームショウ2019 お疲れさまでした。
そして、来週は次のイベント Unite Tokyo が開催されます。
GS2 は Unite Tokyo をゴールドスポンサーとして協賛しています。

今週のアップデート

新サービス GS2-Ranking

GS2 Classic ではローンチ時点であったランキング機能ですが、遅ればせながら追加となりました。
GS2 Classic のときは参加者全体のスコアランキング(グローバルランキング)しか実現できていませんでしたが、今回はフレンド内やギルド内ランキング(スコープドランキング)も実現可能な状態でリリースされています。

2つのモードでそれぞれ料金体系が異なります。
通常のAPIアクセスあたり およそ 0.02円 という料金とは別にスコア集計時やスコア登録時に追加の費用が発生します。

グローバルランキングは GS2 Classic 同様、15分~24時間の間で指定した間隔でランキングの集計処理が行え、月間の集計回数×ランキング参加者人数/10000人×2円 が月間の使用料金となります。
スコープドランキングは他プレイヤーを購読することで購読しているプレイヤー内でのスコアランキングを実現します。例えばフレンドランキングを作りたければ、フレンド全員のスコア更新を購読することで実現できます。
その際の費用は スコア登録回数×スコアを登録したユーザを購読しているユーザの人数×0.01円 で決定されます。グローバルランキングとは異なり集計間隔を指定する必要はなく、いつでもリアルタイム性の高いランキングにアクセスできます。

GS2-Formation の強化

先週のニュースレターで予告していた通り、フォームのスロットに設定されたプロパティに対して報酬を付与できるようになりました。
たとえば、クエスト報酬でパーティに編成されたキャラクター全員に経験値を付与したい場合などに利用できます。

スタンプシートの Config に署名付きパラメータを指定できるように

GS2のサービスの中にはデータを取得する際に署名をつけて取得することができます。
たとえば、GS2-Experience でキャラクターのレベルを取得するときに署名付きで取得し、スタンプシートの Config に指定することで、キャラクターのレベルを改ざんしていないことを保証できます。
スタンプシート側では新たなプレフィックス 『&』 が追加されました。
『&player.rank』と指定しておき、Config で player というキーで GS2-Experience で取得したステータスを設定しておくと、ステータスの署名を検証し、署名が正しければ rank フィールドの値を使用するようにできます。

Unite Tokyo 2019 出展

冒頭でお知らせしたとおり、今週お台場で開催される Unite Tokyo 2019 を GS2 はゴールドスポンサーとして協賛しています。
セッションも予定されておりますので、ぜひともお越しください。
(内容は GTMF/CEDEC の内容とほぼ変わりませんので、すでにご参加くださった方はほかのセッションを優先いただければと思います)

events.unity3d.jp

お気軽にご相談ください

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

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

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

(C) Game Server Services, Inc.