Game Server Services ではじめる サーバ開発運用しないゲーム開発
by
Kazutomo Niwa
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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/