Slide 1

Slide 1 text

Game Server Services ではじめる サーバ開発運⽤しないゲーム開発

Slide 2

Slide 2 text

⾃⼰紹介 代表取締役社⻑CEO 丹⽻ ⼀智 新卒で株式会社セガに⼊社、携帯電話向けのゲームおよびサーバ開発業 務に従事。約3年勤める 任天堂株式会社に⼊社、ニンテンドー3DSのOS開発や、ゲームサーバの 開発・運⽤。Nintendo Switchのサーバシステム設計などに従事。約7年 間勤める 2016年9⽉ Game Server Services 株式会社を設⽴

Slide 3

Slide 3 text

会社概要 事業内容 ゲームサーバを、初期費⽤・運⽤費⽤など⼀切かからず、サーバアクセ ス1回あたり 0.02円 で使⽤出来るクラウドサービス。 パズドラ / モンスト のようなゲームをサーバ開発 / 運⽤ することなく リリース出来る。 代表的なゲーム関連企業の株主 DeNA KLab Venture Partners ワンダープラネット

Slide 4

Slide 4 text

なぜ GS2 が必要か

Slide 5

Slide 5 text

コードを書くことには責任が伴う コードを書くことで責任が発⽣する バグがないか? 脆弱性がないか? スケールするか?

Slide 6

Slide 6 text

ゲーム開発者の負うべき責任 ゲームを⾯⽩く ゲームを遊べる状態を維持

Slide 7

Slide 7 text

構築から利⽤へ ゲームのコアバリューに関係のないものは責任を負って構築する のではなく、責任を他者に転嫁して利⽤するようにしましょう。 ゲームサーバの多くの要素は“当たり前に存在するもの”であり、 新たな価値を⽣み出しません。

Slide 8

Slide 8 text

今のゲームサーバに⾜りないもの 汎⽤ゲームエンジンはゲーム開発 シーンで過去10年で最もイノベー ティブな存在でした。 開発効率を向上させ、ゲーム開発 の敷居を⼤幅に引き下げました。 ゲームサーバの分野には開発環境 の改善が不⾜しています。

Slide 9

Slide 9 text

GS2 が提供する価値

Slide 10

Slide 10 text

サーバダウンの恐怖から解放 GS2は AWS と GCP のハイブリッドクラウドで提供します。 秒間10万アクセスを超える負荷テストを実施しそれ以上のアク セスを受け⼊れられることを確認しました。 これはローンチ時に未曾有のアクセスが発⽣し、1,000台以上の サーバーを⽤意したというSINoALICEのピーク時のアクセスの2 倍以上※です。 ※ CEDEC 2018 公演より

Slide 11

Slide 11 text

先⾏投資なし GS2 は初期費⽤無しで採⽤できます。 従来はゲームサーバの初期開発には開発リソースが必要で、外部 委託する場合は数百〜数千万円の初期投資が必要でした。 これらのコストはゲームを⾯⽩くするための開発に活⽤できます。

Slide 12

Slide 12 text

運⽤費なし 通常、サーバの保守運⽤費として継続的に費⽤が発⽣します。 GS2は利⽤料⾦に運⽤費が含まれるため、追加の費⽤は発⽣しま せん。 GS2はフルサーバレスアーキテクチャを採⽤。 AWS スタートアップ アーキテクチャオブ・ザ・イヤー受賞 GS2の責任で動作しているサーバは1台もない アプリケーションコードより下のサーバに関する全ての責任は AWS/GCPが負っている 世界で最も優れた監視運⽤体制でGS2のインフラは提供される

Slide 13

Slide 13 text

ゼロスケール GS2 はサーバのAPI呼び出し回数など利⽤状況に応じて料⾦が計 算されます。 GS2は⼤量のアクセスを捌くためのスケーリングは当然ながら、 ゲームサーバーを使⽤していないときには⼀切費⽤が発⽣ないゼ ロスケールまでをサービスとして提供します。

Slide 14

Slide 14 text

ゲームのニーズに合わせてカスタマイズ GS2では、アカウント新規登録時、レベルアップ時、クエストク リア時など様々なイベントをトリガーとしてサーバサイドでスク リプトを実⾏できます。 この仕組みを使うことでゲームの特徴にあわせてゲームサーバー の動作を⾃由に拡張できます。

Slide 15

Slide 15 text

チート対策に頭を悩ませない GS2は不正⾏為に対して強固な設計になっています。 所持品や課⾦通貨の不正な⼊⼿など、あってはならない不具合を ⽣み出せないよう設計されています。 → 後ほど解説

Slide 16

Slide 16 text

様々な⾔語向けSDKを提供 ゲームエンジン向けSDKを提供。 Unity, Unreal Engine4, cocos-2dx ゲーム内から利⽤するだけでなく独⾃の管理ツールを作りたい場 合は。各⾔語向けSDKも。 Java, PHP, Python, Ruby, Node.js(JavaScript), C#, C++

Slide 17

Slide 17 text

GS2 の概念

Slide 18

Slide 18 text

わかりやすい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() データ引き継ぎ⽤を実⾏

Slide 19

Slide 19 text

わかりやすいAPI 管理⽤のAPI も提供。ゲーム向けAPIキーでは使⽤できないよう に設定可能。 管理⽤APIの例(⼀部) Gs2Account.DescribeAccounts() 存在するアカウントの⼀覧取得 Gs2Account.DeleteAccount() アカウントの削除 Gs2Account.DescribeTakeOversByUserId() ユーザIDを指定して引き継ぎ情報⼀覧取得

Slide 20

Slide 20 text

必要な機能を組み合わせて実装 アカウント管理 経験値・ランク管理 プレゼントボックス 所持品管理 回数制限管理 抽選処理 マッチメイキング 課⾦通貨管理 クエスト管理 リアルタイム対戦 ミッション管理 イベントスケジュール管理 ゲーム内ストア管理 スタミナ管理 パーティ編成管理 テキストチャット フレンド管理 バージョン管理

Slide 21

Slide 21 text

⽤例A GS2 が提供する機能をそのまま利⽤する。

Slide 22

Slide 22 text

⽤例A アカウント管理

Slide 23

Slide 23 text

⽤例A SDKが提供するAPIを呼び出すだけで実装できて、すぐにゲーム に導⼊可能。

Slide 24

Slide 24 text

⽤例B GS2 が提供する様々な機能を連携させて利⽤する。

Slide 25

Slide 25 text

⽤例B ゲーム内ストア イベント期間1回だけ 買える商品 イベント スケジュール管理 商品販売期間 回数制限管理 商品購⼊回数 所持品管理 買った商品 課⾦通貨管理 所持してる通貨量

Slide 26

Slide 26 text

⽤例B 複雑な仕様を実現しようと思うと必要となるパターン。 GS2 ではこのパターンでの利⽤を前提に設計しており、多くの 場合は設定項⽬で連携するサービスのID※を指定するだけで連携 できる様になっている。 ※ イベントスケジュールのイベントID ストアに陳列した商品を購⼊するために必要なアイテムID 購⼊したら⼿に⼊るアイテムのID

Slide 27

Slide 27 text

⽤例C 全く新しい仕組みを作り出す。

Slide 28

Slide 28 text

⽤例C クエスト管理 1⽇1回だけ 進⾏できるクエスト 回数制限管理 今⽇の クエスト進⾏回数 所持品管理 プレイヤーの所持品 イベント スケジュール管理 公開中のログボ サーバスクリプト クエストの終端に 来たら進⾏状況を リセット ログインボーナスシステム

Slide 29

Slide 29 text

⽤例C GS2 が提供するコンポーネントを組み合わせることで、全く新 しいゲームサーバシステムが⽣まれます。

Slide 30

Slide 30 text

GS2 の提供するサービスの紹介

Slide 31

Slide 31 text

アカウント管理 データの引き継ぎに対応 ID/パスワード ソーシャルアカウント ⾃社でアカウント管理の仕組みがある場合は使わなくても他の GS2の機能を利⽤可能

Slide 32

Slide 32 text

課⾦通貨管理 資⾦決済法の前払式⽀払⼿段(⾃家型)に対応 通貨の単価ごとに数量を管理 未使⽤残⾼が⾃動計算 ⼆次通貨の管理にも対応

Slide 33

Slide 33 text

経験値・ランク管理 ランクアップテーブルを登録するとランクを⾃動計算 単純なレベルだけでなく経験を積み上げてランクをあげる仕組 み全般で使⽤可能 信頼度 クエストを3回クリアするとスキップチケットが使えるようになる クリア回数を経験値とする ランク2になるとスキップチケットが使える

Slide 34

Slide 34 text

プレゼントボックス 事前登録ボーナスを届ける お詫びの品を届ける 所持品管理サービスやスタミナ管理サービスと連携すれば溢れ たリソースを⾃動的にプレゼントボックスに届けることが可能

Slide 35

Slide 35 text

所持品管理 消費型アイテム ガチャチケット、スタミナドリンク 資産 キャラクター、ゲーム内通過 素材 強化素材、進化素材 : 様々なものを所持品として管理 所持品枠の拡張機能あり

Slide 36

Slide 36 text

回数制限管理 ⾏動回数のカウンター 商品の購⼊回数 クエストの挑戦回数 ガチャの抽選回数 リセット間隔を設定可能 毎⽇X時 毎週X曜⽇ X時 毎⽉X⽇ X時 リセットしない

Slide 37

Slide 37 text

抽選処理 排出確率テーブルを設定するだけで利⽤可能 重みベースの確率設定 アイテムA(重み1), アイテムB(重み3)に設定すると アイテムA(25%), アイテムB(75%)と処理される 排出コンテンツに排出確率テーブルを指定可能 1段⽬ SSR/SR/R のようなレアリティ抽選 2段⽬ 各レアリティのコンテンツを抽選

Slide 38

Slide 38 text

クエスト管理 進⾏管理・前提クエストのクリア判定などに対応 パーティメンバーに特定キャラが編成されているか? スクリプトによる判定処理の拡張で対応可能 クエストの報酬を抽選可能 レアモンスターの出現判定 クエスト開始時に乱数シードと⼊⼿可能なコンテンツの最⼤量 クエスト終了時に実際に⼊⼿したコンテンツの数量を報告

Slide 39

Slide 39 text

ミッション管理 実績(トロフィー)に相当する機能 クエストのクリア報酬などでミッションのカウンターを操作 カウンターが閾値を超えたときにミッション達成 カウンターには「デイリー」「ウィークリー」といったスコー プを設定可能 ミッション達成時にサーバからプッシュ通知 ミッションの報酬受取、カウンターの操作に期間を設定可能

Slide 40

Slide 40 text

イベントスケジュール管理 ゲーム内イベントの管理 絶対期間・相対期間のイベントに対応 相対期間の場合は開始トリガーを引く必要あり ログイン時のパラメータで時間のオフセットを指定できる QA担当は1⽇進んだ状態でプレイできる

Slide 41

Slide 41 text

ゲーム内ストア管理 現⾦で課⾦通貨 / 現⾦で相対期間イベントのトリガー 課⾦通貨でガチャ / 課⾦通貨で所持品枠の拡張 ゲーム内通貨で進化素材 / ゲーム内通貨でスタミナ 様々なリソースを IN/OUT に指定可能 販売期間の設定が可能 複数商品をグルーピング。購⼊条件を満たす最初の商品が陳列 ステップガチャ、購⼊するたび売価が⾼くなる商品

Slide 42

Slide 42 text

スタミナ管理 時間経過で回復するスタミナ値の管理 ⼆段階の上限値を設定可能 50/100 の状態で 100回復アイテムを使うと 150/100 になる その場合でも 999/100 を上限とする 999 を超えるとプレゼントボックス送り 回復間隔・回復量・最⼤値 は経験値ランク管理と連携可能 建築系ゲームの資源回収にも応⽤可能

Slide 43

Slide 43 text

マッチメイキング 属性値の範囲で条件を設定 ゲームモード、レーティング、地域など ロールで条件を設定 盾役1、回復役1、攻撃役2 でマッチメイキング ホワイトリスト フレンドのみ参加できるルーム ブラックリスト このプレイヤーとは⼀緒に遊びたくない

Slide 44

Slide 44 text

リアルタイム対戦 初期はパケットリレーサーバとして提供 サーバで動かすロジックを変更できるように サーバでロジックを動かせるとレイドバトルなどを実装できる ボスの体⼒をサーバで管理 サーバでダメージ計算 ボスが死んだら参加者に報告

Slide 45

Slide 45 text

GS2 のサービス連携と不正対策の仕組み

Slide 46

Slide 46 text

スタンプシート GS2 内のサービス間を連携させる仕組みとして、スタンプシー トシステムを提供。 スタンプシートシステムは、稟議のようなもの。

Slide 47

Slide 47 text

対価と報酬 スタンプシートには対価と報酬が設定されています。 たとえば、1回だけ100円で買える1,000個の課⾦通貨を購⼊する としましょう。 その場合のスタンプシートは以下のようになります。 報酬:課⾦通貨 1,000 個を⼊⼿する件 対価: 100円⽀払う 対価: 購⼊回数を 1回増やす

Slide 48

Slide 48 text

対価を払うとスタンプがもらえる GS2-Money に スタンプシートと、AppStore や PlayStore で購 ⼊したときに発⾏されるレシートを持っていきます。 すると、GS2-Money はレシートを検証して、スタンプシートに スタンプを押してくれます。 報酬:課⾦通貨 1,000 個を⼊⼿する件 対価: 100円⽀払う 対価: 購⼊回数を 1回増やす 済

Slide 49

Slide 49 text

すべてのスタンプが揃ったら すべてのスタンプが揃ったら報酬を受け取りに⾏きます。 報酬を受け取るとスタンプシートは⼆度と使えないよう破棄され ます。 報酬:課⾦通貨 1,000 個を⼊⼿する件 対価: 100円⽀払う 対価: 購⼊回数を 1回増やす 済 済

Slide 50

Slide 50 text

チート対策 GS2 内のリソースの増加は基本的にこのスタンプシートを通し て⾏います。 対価を払わなければ報酬がもらえない仕組みによって不正⾏為を ⾏えなくします。 報酬:課⾦通貨 1,000 個を⼊⼿する件 対価: 100円⽀払う 対価: 購⼊回数を 1回増やす まだスタンプ揃ってないけど、 持っていくぜ これでは報酬は払えませんな

Slide 51

Slide 51 text

チート対策 スタンプシートには改ざん検出機能があり、不正にスタンプシー トを改ざんしても報酬は払い出されません。 対価: 100円⽀払う 対価: 購⼊回数を 1回増やす 済 済 内容を書き換えたろ 報酬:課⾦通貨 1,,000 個を⼊⼿する件 改ざんされてますな これでは報酬は払えませんな 報酬:課⾦通貨 1,000,000,000,000,000 個を⼊⼿する件

Slide 52

Slide 52 text

チート対策 対価を改ざんした場合も同様に、スタンプを押してもらえません。 対価: 1円⽀払う 対価: 購⼊回数を 1回増やす えーい。なら対価を変えてやる 報酬:課⾦通貨 1,000 個を⼊⼿する件 改ざんされてます これではスタンプは押せません

Slide 53

Slide 53 text

GS2 のマスターデータ管理

Slide 54

Slide 54 text

マスターデータ管理 サービスごとにJSON形式でマスターデータ管理 ゲーム内ストアは 購⼊に必要なリソースのIDと数量 そして、⼊ ⼿できるリソースのIDと数量 を設定。 リソースが何者かはしらない。 リソースのマスターデータは所持品管理のサービスなどに設定。 GS2の管理画⾯で登録してエクスポートもできるが、独⾃のツー ルで定められた形式のJSONファイルを出⼒してもOK。

Slide 55

Slide 55 text

もちろん Excel でも Excel のマクロを使⽤して JSON 形式で出⼒すれば、Excel ベー スのマスターデータ管理も可能。

Slide 56

Slide 56 text

GS2 を利⽤した開発・運営の流れ

Slide 57

Slide 57 text

GS2-Deploy GS2 を利⽤した開発・運営をサポートするのが GS2-Deploy で す。 GS2-Deploy はGS2内で作成したいリソースを宣⾔的に記述する ことで、⾃動的に作成・更新・削除してくれる機能です。 この宣⾔ファイルのことをテンプレートと呼びます。

Slide 58

Slide 58 text

⾃動的に環境を作成 テンプレートを GS2-Deploy にアップロードすると、⾃動的に 必要となるリソース(サーバの設定)が作成されます。 この機能は開発環境と製品環境で内容を揃えるときに活⽤できま す。 開発期間も、テンプレートさえ共有していれば、開発者ごとに別 の環境を利⽤することができます。 テンプレートは YAML形式のテキストファイルなので Git で管 理できます。

Slide 59

Slide 59 text

環境の削除 アップロードしたテンプレートを削除するだけで、その定義に よって作成されたリソースがまとめて削除されます。

Slide 60

Slide 60 text

GS2-Deploy を使ったイベント運営 テンプレートはアカウントに対して1つではなく、複数定義する ことができます。 ゲームを構成する基本的なテンプレートとは別にイベント開催⽤ のテンプレートを作成し、イベントが終わったらテンプレートを 削除することでイベント関連のリソースをまとめて削除できます。 復刻イベントを開催するときも過去のテンプレートを使えばすぐ に復刻できます。

Slide 61

Slide 61 text

カスタマーサポート サポート業務に即した管理画⾯を⽤意したい場合があります。 GS2-SDK を使うと独⾃の管理画⾯を作成できます。 GS2の提供する管理画⾯もSDKを使⽤して開発されています。

Slide 62

Slide 62 text

ロードマップ

Slide 63

Slide 63 text

第⼆世代GS2 を来週⽕曜⽇公開 現在サービス中の第⼀世代GS2から更に発展した第⼆世代GS2が 今⽉β公開されます。(本公演の内容は第⼆世代の内容) β期間は提供されているすべての機能を無料で試していただくこ とができます。 フィードバックも受け付け、フィードバックいただいた内容は正 式サービス開始までに優先度をつけて対応していきます。

Slide 64

Slide 64 text

年内正式サービス開始 年内に正式サービスを開始します。 正式サービス開始で変わること - 99.99% のSLA - ⽇本リージョン以外に北⽶・欧州リージョンの提供開始 - 利⽤料が発⽣ - 毎⽉2万円まで無料 (APIリクエスト100万回相当)

Slide 65

Slide 65 text

新発表 Cloud Weave

Slide 66

Slide 66 text

Cloud Weave Cloud Weave はGS2-Deployのテンプレートリポジトリです。 Unity Editor をはじめとした ゲームエンジンのIDE上のボタン ⼀つで GS2-Deploy にアップロードし反映できます。 GS2-Deploy Cloud Weave テンプレート テンプレート 検索/選択 アップロード

Slide 67

Slide 67 text

機能特化の管理画⾯ テンプレートが提供する機能の視点でわかりやすい管理画⾯も含 むことで、より開発体験を良くしていきます。 ログインボーナスをインストール ログインボーナス管理 1⽇⽬の報酬 2⽇⽬の報酬 : 1⽇⽬の報酬は何にしようかな

Slide 68

Slide 68 text

最後に

Slide 69

Slide 69 text

会場にブースを出しています 詳しい説明を聞いてみたい!という場合はお⽴ち寄りください。 - ⼤阪会場 18 - 東京会場 26 Webサイトのお問い合わせページからも随時承っています。 https://gs2.io/

Slide 70

Slide 70 text

Good-bye, dedicated servers. https://gs2.io/