Game Server Services ではじめる
サーバ開発運⽤しないゲーム開発
⾃⼰紹介
代表取締役社⻑CEO 丹⽻ ⼀智
新卒で株式会社セガに⼊社、携帯電話向けのゲームおよびサーバ開発業
務に従事。約3年勤める
任天堂株式会社に⼊社、ニンテンドー3DSのOS開発や、ゲームサーバの
開発・運⽤。Nintendo Switchのサーバシステム設計などに従事。約7年
間勤める
2016年9⽉ Game Server Services 株式会社を設⽴
会社概要
事業内容
ゲームサーバを、初期費⽤・運⽤費⽤など⼀切かからず、サーバアクセ
ス1回あたり 0.02円 で使⽤出来るクラウドサービス。
パズドラ / モンスト のようなゲームをサーバ開発 / 運⽤ することなく
リリース出来る。
代表的なゲーム関連企業の株主
DeNA
KLab Venture Partners
ワンダープラネット
なぜ GS2 が必要か
コードを書くことには責任が伴う
コードを書くことで責任が発⽣する
バグがないか?
脆弱性がないか?
スケールするか?
ゲーム開発者の負うべき責任
ゲームを⾯⽩く ゲームを遊べる状態を維持
構築から利⽤へ
ゲームのコアバリューに関係のないものは責任を負って構築する
のではなく、責任を他者に転嫁して利⽤するようにしましょう。
ゲームサーバの多くの要素は“当たり前に存在するもの”であり、
⽌まって怒られることはあれど、新たな価値を⽣み出しません。
今のゲームサーバに⾜りないもの
汎⽤ゲームエンジンはゲーム開発
シーンで過去10年で最もイノベー
ティブな存在でした。
開発効率を向上させ、ゲーム開発
の敷居を⼤幅に引き下げました。
ゲームサーバの分野には開発環境
の改善が不⾜しています。
GS2 が提供する価値
サーバダウンの恐怖から解放
GS2は AWS と GCP のハイブリッドクラウドで提供します。
秒間10万アクセスを超える負荷テストを実施しそれ以上のアク
セスを受け⼊れられることを確認しました。
これはローンチ時に未曾有のアクセスが発⽣し、1,000台以上の
サーバーを⽤意したというSINoALICEのピーク時のアクセスの2
倍以上※です。
※ CEDEC 2018 公演より
先⾏投資なし
GS2 は初期費⽤無しで採⽤できます。
従来はゲームサーバの初期開発には開発リソースが必要で、外部
委託する場合は数百〜数千万円の初期投資が必要でした。
これらのコストはゲームを⾯⽩くするための開発に活⽤できます。
運⽤費なし
通常、サーバの保守運⽤費として継続的に費⽤が発⽣します。
GS2は利⽤料⾦に運⽤費が含まれるため、追加の費⽤は発⽣しま
せん。
GS2はフルサーバレスアーキテクチャを採⽤。
AWS スタートアップ アーキテクチャオブ・ザ・イヤー受賞
GS2の責任で動作しているサーバは1台もない
アプリケーションコードより下のサーバに関する全ての責任は
AWS/GCPが負っている
世界で最も優れた監視運⽤体制でGS2のインフラは提供される
サーバ障害からの解放
フルサーバレスアーキテクチャを構成するAWSがGCPが提供し
ているフルマネージドサービスの障害発⽣時のフェイルオーバー
はAWSやGCPの責任で⾏われます。
先⽇AWS東京リージョンでアベイラビリティゾーンレベルの障
害が発⽣しましたが、AWSによってフェイルオーバーが⾏われ
ていたため、GS2のサービス提供には何の影響もありませんでし
た。
ゼロスケール
GS2 はサーバのAPI呼び出し回数など利⽤状況に応じて料⾦が計
算されます。
GS2は⼤量のアクセスを捌くためのスケーリングは当然ながら、
ゲームサーバーを使⽤していないときには⼀切費⽤が発⽣ないゼ
ロスケールまでをサービスとして提供します。
ゲームのニーズに合わせてカスタマイズ
GS2では、アカウント新規登録時、レベルアップ時、クエストク
リア時など様々なイベントをトリガーとしてサーバサイドでスク
リプトを実⾏できます。
この仕組みを使うことでゲームの特徴にあわせてゲームサーバー
の動作を⾃由に拡張できます。
クロスプラットフォーム対応
⾃宅ではコンソール機。外出先ではスマートデバイス。会社の昼
休みにはブラウザ。
ライフサイクルに適したデバイスで同じゲームを楽しめるように
することで、プレイヤーにとってゲームはより⾝近な存在に。
GS2 は様々なプラットフォームから利⽤できるだけでなく、プ
ラットフォームを跨いだ通信も可能。
様々な⾔語向けSDKを提供
ゲームエンジン向けSDKを提供。
Unity, Unreal Engine4, cocos-2dx
ゲーム内から利⽤するだけでなく独⾃の管理ツールを作りたい場
合は。各⾔語向けSDKも。
Java, PHP, Python, Ruby, Node.js(JavaScript), C#, C++
GS2 の概念
わかりやすいAPI
Unity のゲームにアカウント機能を導⼊する場合は7種類のAPI
を意識するだけでOK!
Gs2Account.Create() アカウントの新規作成 ‒ ユーザID/パスワードを発⾏
Gs2Account.Authentication() ユーザID/パスワードでアカウントを認証
Gs2Account.AddTakeOverSetting() データ引き継ぎ⽤ ID/パスワード を登録
Gs2Account.ListTakeOverSettings() データ引き継ぎ⽤ ID/パスワード の⼀覧を取得
Gs2Account.UpdateTakeOverSetting() データ引き継ぎ⽤ ID/パスワード を更新
Gs2Account.DeleteTakeOverSetting() データ引き継ぎ⽤ ID/パスワード を削除
Gs2Account.DoTakeOver() データ引き継ぎ⽤を実⾏
わかりやすいAPI
管理⽤のAPI も提供。ゲーム向けAPIキーでは使⽤できないよう
に設定可能。
管理⽤APIの例(⼀部)
Gs2Account.DescribeAccounts() 存在するアカウントの⼀覧取得
Gs2Account.DeleteAccount() アカウントの削除
Gs2Account.DescribeTakeOversByUserId() ユーザIDを指定して引き継ぎ情報⼀覧取得
⽤例A
アカウント管理
⽤例B
ゲーム内ストア
イベント期間1回だけ
買える商品
イベント
スケジュール管理
商品販売期間
回数制限管理
商品購⼊回数
所持品管理
買った商品
課⾦通貨管理
所持してる通貨量
⽤例C
クエスト管理
1⽇1回だけ
進⾏できるクエスト
回数制限管理
今⽇の
クエスト進⾏回数
所持品管理
プレイヤーの所持品
イベント
スケジュール管理
公開中のログボ
サーバスクリプト
クエストの終端に
来たら進⾏状況を
リセット
ログインボーナスシステム
必要な機能を組み合わせて実装
アカウント管理
引き継ぎ
経験値・ランク管理
レベルキャップ・ユニットごとのキャップ引き上げ
プレゼントボックス
リソース⼊⼿時にあふれたリソースの保管
所持品管理
所持品枠の拡張・スタック上限・複数スタック作成可能か
回数制限管理
リセット間隔を「毎⽇」「毎週」「毎⽉」「なし」で設定
必要な機能を組み合わせて実装
抽選処理
重みベースの確⽴設定(1:3=25%:75%)。複数段抽選
マッチメイキング
時間経過で条件を緩和。役割ベース
課⾦通貨管理
資⾦決済法対応。⼆次通貨にも対応。
クエスト管理
進⾏管理・クリア報酬の抽選
必要な機能を組み合わせて実装
リアルタイム対戦
100⼈対戦・カスタムサーバロジックに対応
ミッション管理
同⼀カウンターを複数スコープで参照可能
イベントスケジュール管理
絶対期間・相対期間に対応。⼀部アカウントで時間をずらせる
ゲーム内ストア管理
あらゆるリソースを対価・報酬に設定可能
スタミナ管理
2段階の上限値。回復量・回復間隔・最⼤値をレベルと連携
必要な機能を組み合わせて実装
編成管理
パーティや装備枠
テキストチャット
テキストベースのコミュニケーション
フレンド管理
フレンド・フォロー。各1万⼈
バージョン管理
リジェクト・バージョンアップを促す2段階の閾値
GS2 のサービス連携と不正対策の仕組み
スタンプシート
GS2 内のサービス間を連携させる仕組みとして、スタンプシー
トシステムを提供。
スタンプシートシステムは、稟議のようなもの。
対価と報酬
スタンプシートには対価と報酬が設定されています。
たとえば、1回だけ100円で買える1,000個の課⾦通貨を購⼊する
としましょう。
その場合のスタンプシートは以下のようになります。
報酬:課⾦通貨 1,000 個を⼊⼿する件
対価:
100円⽀払う
対価:
購⼊回数を
1回増やす
対価を払うとスタンプがもらえる
GS2-Money に スタンプシートと、AppStore や PlayStore で購
⼊したときに発⾏されるレシートを持っていきます。
すると、GS2-Money はレシートを検証して、スタンプシートに
スタンプを押してくれます。
報酬:課⾦通貨 1,000 個を⼊⼿する件
対価:
100円⽀払う
対価:
購⼊回数を
1回増やす済
対価を払うとスタンプがもらえる
続けて、回数制限サービスにスタンプシートを持っていって、購
⼊回数のカウンターを増やしてもらい、スタンプをもらいます。
報酬:課⾦通貨 1,000 個を⼊⼿する件
対価:
100円⽀払う
対価:
購⼊回数を
1回増やす済 済
すべてのスタンプが揃ったら
すべてのスタンプが揃ったら報酬を受け取りに⾏きます。
報酬を受け取るとスタンプシートは⼆度と使えないよう破棄され
ます。
報酬:課⾦通貨 1,000 個を⼊⼿する件
対価:
100円⽀払う
対価:
購⼊回数を
1回増やす済 済
チート対策
GS2 内のリソースの増加は基本的にこのスタンプシートを通し
て⾏います。
対価を払わなければ報酬がもらえない仕組みによって不正⾏為を
⾏えなくします。
報酬:課⾦通貨 1,000 個を⼊⼿する件
対価:
100円⽀払う
対価:
購⼊回数を
1回増やす
まだスタンプ揃ってないけど、
持っていくぜ
これでは報酬は払えませんな
チート対策
スタンプシートには改ざん検出機能があり、不正にスタンプシー
トを改ざんしても報酬は払い出されません。
対価:
100円⽀払う
対価:
購⼊回数を
1回増やす済 済
内容を書き換えたろ
報酬:課⾦通貨 1,,000 個を⼊⼿する件
改ざんされてますな
これでは報酬は払えませんな
報酬:課⾦通貨 1,000,000,000,000,000 個を⼊⼿する件
チート対策
対価を改ざんした場合も同様に、スタンプを押してもらえません。
対価:
1円⽀払う
対価:
購⼊回数を
1回増やす
えーい。なら対価を変えてやる
報酬:課⾦通貨 1,000 個を⼊⼿する件
改ざんされてます
これではスタンプは押せません
GS2 のマスターデータ管理
マスターデータ管理
サービスごとにJSON形式でマスターデータ管理
ゲーム内ストアは 購⼊に必要なリソースのIDと数量 そして、⼊
⼿できるリソースのIDと数量 を設定。
リソースが何者かはしらない。
リソースのマスターデータは所持品管理のサービスなどに設定。
GS2の管理画⾯で登録してエクスポートもできるが、独⾃のツー
ルで定められた形式のJSONファイルを出⼒してもOK。
もちろん Excel でも
Excel のマクロを使⽤して JSON 形式で出⼒すれば、Excel ベー
スのマスターデータ管理も可能。
GitHub と連携すればさらにハッピー
GS2 ではスクリプトやマスターデータをアップロードする際に
GitHub のリポジトリ・ファイルパス・コミットハッシュ(タグ)
を指定してアップロードする機能があります。
この機能を活⽤すればロールバックなどもより安全に実⾏できま
す。
GS2 を利⽤した開発・運営の流れ
GS2-Deploy
GS2 を利⽤した開発・運営をサポートするのが GS2-Deploy で
す。
GS2-Deploy はGS2内で作成したいリソースを宣⾔的に記述する
ことで、⾃動的に作成・更新・削除してくれる機能です。
この宣⾔ファイルのことをテンプレートと呼びます。
環境の複製が容易に
開発環境と製品環境で内容を揃えるときに活⽤。
開発期間も、テンプレートさえ共有していれば、開発者ごとに別
の環境を利⽤することができます。
テンプレートは YAML形式のテキストファイルなので Git で管
理できます。
GS2-Deploy を使ったイベント運営
テンプレートはアカウントに対して1つではなく、複数定義する
ことができます。
ゲームを構成する基本的なテンプレートとは別にイベント開催⽤
のテンプレートを作成し、イベントが終わったらテンプレートを
削除することでイベント関連のリソースをまとめて削除できます。
復刻イベントを開催するときも過去のテンプレートを使えばすぐ
に復刻できます。
データ分析
GS2 のログは⾃由にアクセス可能。
1. GS2 にすべてを任せる
• DAUや課⾦額のチャートなど標準的なアナリティクス
• チャットログの検索など⼀般的な検索処理
2. ⾃分たちの BigQuery でログを受け取る
• ⾃由なアナリティクス
GDPR
GDPR にも対応。
• ユーザIDに紐づくすべての情報を取得する
• ユーザIDに紐づくすべての情報を削除する
BigQuery に配送したログなど、外部に持ち出したデータは利⽤
者の責任で削除する必要あり
サンプルリポジトリ
github.com/gs2io/gs2-sample
アカウント登録・ログイン
GS2 のアカウント機能を利⽤し、登
録・ログインを実現するサンプル
アカウントのロード
ローカルストレージに登録されてい
るアカウントをロードします。
ロードに成功したかどうかで分岐し
ます。
成功
失敗
アカウントの作成
アカウントの作成通信処理を実⾏し、
成功したかどうかで分岐
サンプルでは『アカウントを作成し
ます』という確認画⾯を表⽰してい
るが、不要であればこのステートを
削除してもらえばいい
成功
失敗
アカウントの作成
成功
失敗
アカウントのセーブ
作成されたアカウント情報をローカ
ルストレージに保存
保存に成功したかで分岐
成功
失敗
ログインメニュー
ログインするか、ローカルストレー
ジに作成されたアカウントを削除す
るかを選択するメニュー画⾯
メニュー画⾯が不要であれば、この
ステートを削除すればいい
削除
ログイン
ログイン
ログイン通信処理を実⾏し、成功し
たかどうかで分岐
失敗
成功
改変・商⽤利⽤フリー
サンプルコードは⾃由に改変してゲームに組み込んでいただけ
ます。開発の効率化にご活⽤ください。
https://github.com/gs2io/gs2-sample
Cloud Weave
Cloud Weave
Cloud Weave はGS2-Deployのテンプレートリポジトリです。
Unity Editor をはじめとした ゲームエンジンのIDE上のボタン
⼀つで GS2-Deploy にアップロードし反映できます。
GS2-DeployCloud Weave
テンプレート テンプレート
検索/選択 アップロード
機能特化の管理画⾯
テンプレートが提供する機能の視点でわかりやすい管理画⾯も含
むことで、より開発体験を良くしていきます。
ログインボーナスをインストール
ログインボーナス管理
1⽇⽬の報酬
2⽇⽬の報酬
:
1⽇⽬の報酬は何にしようかな
ロードマップ
ベータ提供中
現在GS2はベータ提供中です。
すべての機能を無料で試していただくことができます。
フィードバックも受け付け、フィードバックいただいた内容は正
式サービス開始までに優先度をつけて対応していきます。
年内正式サービス開始
年内に正式サービスを開始します。
正式サービス開始で変わること
- 99.99% のSLA
- 北⽶・欧州・東南アジア リージョンの提供開始
- 利⽤料が発⽣
- 毎⽉APIコール1万回までの無料プラン
- 毎⽉APIコール10万回までの⽉額1,000円プラン
- 制限なし従量課⾦プラン
- 毎⽉2万円まで無料 (APIリクエスト100万回相当)
GS2 プロフェッショナルサービス
GS2 プロフェッショナルサービス
GS2のスタッフがプロジェクトの企画書や仕様書をもとにサーバ
サイドの設計をします。
費⽤はゲームの規模や資料の詳細さによって変動。
GS2プロフェッショナルサービスでかかった費⽤分、毎⽉のGS2
のサービス利⽤料を50%引きをして還元。
実質無料で開発を⽀援します
お気軽にご相談ください
会場にブースも展⽰しています。詳しい説明を聞いてみたい!と
いう場合はお⽴ち寄りください。
Good-bye, dedicated servers.
https://gs2.io/

【Unite Tokyo 2019】Game Server Services ではじめる サーバー開発運用しないゲーム開