https://gs2.io
Game Server Services ではじめるサーバ開発運⽤しないゲーム開発
View Slide
⾃⼰紹介代表取締役社⻑CEO 丹⽻ ⼀智新卒で株式会社セガに⼊社、携帯電話向けのゲームおよびサーバ開発業務に従事。約3年勤める任天堂株式会社に⼊社、ニンテンドー3DSのOS開発や、ゲームサーバの開発・運⽤。Nintendo Switchのサーバシステム設計などに従事。約7年間勤める2016年9⽉ Game Server Services 株式会社を設⽴
会社概要事業内容ゲームサーバを、初期費⽤・運⽤費⽤など⼀切かからず、サーバアクセス1回あたり 0.02円 で使⽤出来るクラウドサービス。パズドラ / モンスト のようなゲームをサーバ開発 / 運⽤ することなくリリース出来る。代表的なゲーム関連企業の株主DeNAKLab Venture Partnersワンダープラネット
なぜ GS2 が必要か
コードを書くことには責任が伴うコードを書くことで責任が発⽣するバグがないか?脆弱性がないか?スケールするか?
ゲーム開発者の負うべき責任ゲームを⾯⽩く ゲームを遊べる状態を維持
構築から利⽤へゲームのコアバリューに関係のないものは責任を負って構築するのではなく、責任を他者に転嫁して利⽤するようにしましょう。ゲームサーバの多くの要素は“当たり前に存在するもの”であり、新たな価値を⽣み出しません。
今のゲームサーバに⾜りないもの汎⽤ゲームエンジンはゲーム開発シーンで過去10年で最もイノベーティブな存在でした。開発効率を向上させ、ゲーム開発の敷居を⼤幅に引き下げました。ゲームサーバの分野には開発環境の改善が不⾜しています。
GS2 が提供する価値
サーバダウンの恐怖から解放GS2は AWS と GCP のハイブリッドクラウドで提供します。秒間10万アクセスを超える負荷テストを実施しそれ以上のアクセスを受け⼊れられることを確認しました。これはローンチ時に未曾有のアクセスが発⽣し、1,000台以上のサーバーを⽤意したというSINoALICEのピーク時のアクセスの2倍以上※です。※ CEDEC 2018 公演より
先⾏投資なしGS2 は初期費⽤無しで採⽤できます。従来はゲームサーバの初期開発には開発リソースが必要で、外部委託する場合は数百〜数千万円の初期投資が必要でした。これらのコストはゲームを⾯⽩くするための開発に活⽤できます。
運⽤費なし通常、サーバの保守運⽤費として継続的に費⽤が発⽣します。GS2は利⽤料⾦に運⽤費が含まれるため、追加の費⽤は発⽣しません。GS2はフルサーバレスアーキテクチャを採⽤。AWS スタートアップ アーキテクチャオブ・ザ・イヤー受賞GS2の責任で動作しているサーバは1台もないアプリケーションコードより下のサーバに関する全ての責任はAWS/GCPが負っている世界で最も優れた監視運⽤体制でGS2のインフラは提供される
ゼロスケールGS2 はサーバのAPI呼び出し回数など利⽤状況に応じて料⾦が計算されます。GS2は⼤量のアクセスを捌くためのスケーリングは当然ながら、ゲームサーバーを使⽤していないときには⼀切費⽤が発⽣ないゼロスケールまでをサービスとして提供します。
ゲームのニーズに合わせてカスタマイズGS2では、アカウント新規登録時、レベルアップ時、クエストクリア時など様々なイベントをトリガーとしてサーバサイドでスクリプトを実⾏できます。この仕組みを使うことでゲームの特徴にあわせてゲームサーバーの動作を⾃由に拡張できます。
チート対策に頭を悩ませないGS2は不正⾏為に対して強固な設計になっています。所持品や課⾦通貨の不正な⼊⼿など、あってはならない不具合を⽣み出せないよう設計されています。→ 後ほど解説
様々な⾔語向けSDKを提供ゲームエンジン向けSDKを提供。Unity, Unreal Engine4, cocos-2dxゲーム内から利⽤するだけでなく独⾃の管理ツールを作りたい場合は。各⾔語向けSDKも。Java, PHP, Python, Ruby, Node.js(JavaScript), C#, C++
GS2 の概念
わかりやすいAPIUnity のゲームにアカウント機能を導⼊する場合は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を指定して引き継ぎ情報⼀覧取得
必要な機能を組み合わせて実装アカウント管理経験値・ランク管理プレゼントボックス所持品管理回数制限管理抽選処理マッチメイキング課⾦通貨管理クエスト管理リアルタイム対戦ミッション管理イベントスケジュール管理ゲーム内ストア管理スタミナ管理パーティ編成管理テキストチャットフレンド管理バージョン管理
⽤例AGS2 が提供する機能をそのまま利⽤する。
⽤例Aアカウント管理
⽤例ASDKが提供するAPIを呼び出すだけで実装できて、すぐにゲームに導⼊可能。
⽤例BGS2 が提供する様々な機能を連携させて利⽤する。
⽤例Bゲーム内ストアイベント期間1回だけ買える商品イベントスケジュール管理商品販売期間回数制限管理商品購⼊回数所持品管理買った商品課⾦通貨管理所持してる通貨量
⽤例B複雑な仕様を実現しようと思うと必要となるパターン。GS2 ではこのパターンでの利⽤を前提に設計しており、多くの場合は設定項⽬で連携するサービスのID※を指定するだけで連携できる様になっている。※ イベントスケジュールのイベントIDストアに陳列した商品を購⼊するために必要なアイテムID購⼊したら⼿に⼊るアイテムのID
⽤例C全く新しい仕組みを作り出す。
⽤例Cクエスト管理1⽇1回だけ進⾏できるクエスト回数制限管理今⽇のクエスト進⾏回数所持品管理プレイヤーの所持品イベントスケジュール管理公開中のログボサーバスクリプトクエストの終端に来たら進⾏状況をリセットログインボーナスシステム
⽤例CGS2 が提供するコンポーネントを組み合わせることで、全く新しいゲームサーバシステムが⽣まれます。
GS2 の提供するサービスの紹介
アカウント管理データの引き継ぎに対応ID/パスワードソーシャルアカウント⾃社でアカウント管理の仕組みがある場合は使わなくても他のGS2の機能を利⽤可能
課⾦通貨管理資⾦決済法の前払式⽀払⼿段(⾃家型)に対応通貨の単価ごとに数量を管理未使⽤残⾼が⾃動計算⼆次通貨の管理にも対応
経験値・ランク管理ランクアップテーブルを登録するとランクを⾃動計算単純なレベルだけでなく経験を積み上げてランクをあげる仕組み全般で使⽤可能信頼度クエストを3回クリアするとスキップチケットが使えるようになるクリア回数を経験値とするランク2になるとスキップチケットが使える
プレゼントボックス事前登録ボーナスを届けるお詫びの品を届ける所持品管理サービスやスタミナ管理サービスと連携すれば溢れたリソースを⾃動的にプレゼントボックスに届けることが可能
所持品管理消費型アイテムガチャチケット、スタミナドリンク資産キャラクター、ゲーム内通過素材強化素材、進化素材:様々なものを所持品として管理所持品枠の拡張機能あり
回数制限管理⾏動回数のカウンター商品の購⼊回数クエストの挑戦回数ガチャの抽選回数リセット間隔を設定可能毎⽇X時毎週X曜⽇ X時毎⽉X⽇ X時リセットしない
抽選処理排出確率テーブルを設定するだけで利⽤可能重みベースの確率設定アイテムA(重み1), アイテムB(重み3)に設定するとアイテムA(25%), アイテムB(75%)と処理される排出コンテンツに排出確率テーブルを指定可能1段⽬ SSR/SR/R のようなレアリティ抽選2段⽬ 各レアリティのコンテンツを抽選
クエスト管理進⾏管理・前提クエストのクリア判定などに対応パーティメンバーに特定キャラが編成されているか?スクリプトによる判定処理の拡張で対応可能クエストの報酬を抽選可能レアモンスターの出現判定クエスト開始時に乱数シードと⼊⼿可能なコンテンツの最⼤量クエスト終了時に実際に⼊⼿したコンテンツの数量を報告
ミッション管理実績(トロフィー)に相当する機能クエストのクリア報酬などでミッションのカウンターを操作カウンターが閾値を超えたときにミッション達成カウンターには「デイリー」「ウィークリー」といったスコープを設定可能ミッション達成時にサーバからプッシュ通知ミッションの報酬受取、カウンターの操作に期間を設定可能
イベントスケジュール管理ゲーム内イベントの管理絶対期間・相対期間のイベントに対応相対期間の場合は開始トリガーを引く必要ありログイン時のパラメータで時間のオフセットを指定できるQA担当は1⽇進んだ状態でプレイできる
ゲーム内ストア管理現⾦で課⾦通貨 / 現⾦で相対期間イベントのトリガー課⾦通貨でガチャ / 課⾦通貨で所持品枠の拡張ゲーム内通貨で進化素材 / ゲーム内通貨でスタミナ様々なリソースを IN/OUT に指定可能販売期間の設定が可能複数商品をグルーピング。購⼊条件を満たす最初の商品が陳列ステップガチャ、購⼊するたび売価が⾼くなる商品
スタミナ管理時間経過で回復するスタミナ値の管理⼆段階の上限値を設定可能50/100 の状態で 100回復アイテムを使うと 150/100 になるその場合でも 999/100 を上限とする999 を超えるとプレゼントボックス送り回復間隔・回復量・最⼤値 は経験値ランク管理と連携可能建築系ゲームの資源回収にも応⽤可能
マッチメイキング属性値の範囲で条件を設定ゲームモード、レーティング、地域などロールで条件を設定盾役1、回復役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回増やす済 済
チート対策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 ベースのマスターデータ管理も可能。
GS2 を利⽤した開発・運営の流れ
GS2-DeployGS2 を利⽤した開発・運営をサポートするのが GS2-Deploy です。GS2-Deploy はGS2内で作成したいリソースを宣⾔的に記述することで、⾃動的に作成・更新・削除してくれる機能です。この宣⾔ファイルのことをテンプレートと呼びます。
⾃動的に環境を作成テンプレートを GS2-Deploy にアップロードすると、⾃動的に必要となるリソース(サーバの設定)が作成されます。この機能は開発環境と製品環境で内容を揃えるときに活⽤できます。開発期間も、テンプレートさえ共有していれば、開発者ごとに別の環境を利⽤することができます。テンプレートは YAML形式のテキストファイルなので Git で管理できます。
環境の削除アップロードしたテンプレートを削除するだけで、その定義によって作成されたリソースがまとめて削除されます。
GS2-Deploy を使ったイベント運営テンプレートはアカウントに対して1つではなく、複数定義することができます。ゲームを構成する基本的なテンプレートとは別にイベント開催⽤のテンプレートを作成し、イベントが終わったらテンプレートを削除することでイベント関連のリソースをまとめて削除できます。復刻イベントを開催するときも過去のテンプレートを使えばすぐに復刻できます。
カスタマーサポートサポート業務に即した管理画⾯を⽤意したい場合があります。GS2-SDK を使うと独⾃の管理画⾯を作成できます。GS2の提供する管理画⾯もSDKを使⽤して開発されています。
ロードマップ
第⼆世代GS2 を来週⽕曜⽇公開現在サービス中の第⼀世代GS2から更に発展した第⼆世代GS2が今⽉β公開されます。(本公演の内容は第⼆世代の内容)β期間は提供されているすべての機能を無料で試していただくことができます。フィードバックも受け付け、フィードバックいただいた内容は正式サービス開始までに優先度をつけて対応していきます。
年内正式サービス開始年内に正式サービスを開始します。正式サービス開始で変わること- 99.99% のSLA- ⽇本リージョン以外に北⽶・欧州リージョンの提供開始- 利⽤料が発⽣- 毎⽉2万円まで無料 (APIリクエスト100万回相当)
新発表Cloud Weave
Cloud WeaveCloud Weave はGS2-Deployのテンプレートリポジトリです。Unity Editor をはじめとした ゲームエンジンのIDE上のボタン⼀つで GS2-Deploy にアップロードし反映できます。GS2-DeployCloud Weaveテンプレート テンプレート検索/選択 アップロード
機能特化の管理画⾯テンプレートが提供する機能の視点でわかりやすい管理画⾯も含むことで、より開発体験を良くしていきます。ログインボーナスをインストールログインボーナス管理1⽇⽬の報酬2⽇⽬の報酬:1⽇⽬の報酬は何にしようかな
最後に
会場にブースを出しています詳しい説明を聞いてみたい!という場合はお⽴ち寄りください。- ⼤阪会場 18- 東京会場 26Webサイトのお問い合わせページからも随時承っています。https://gs2.io/
Good-bye, dedicated servers.https://gs2.io/