GS2 Blog

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

新サービス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

(C) Game Server Services, Inc.